21條Bash命令為您節省時間
本文是對Bash命令的簡要介紹。 知道如何在命令行中移動是節省時間的一項基本技能。 我們將點擊21個最常見的命令及其鍵標記。 我們還將介紹Bash快捷方式,以節省大量的擊鍵。 ⌨️
A shell
條款
Unix,Linux,Bash,shell,命令行,終端和Shell腳本這兩個詞是不同的東西,但是它們共享我們將討論的命令。 這是差異和相似之處的快速細分。
Unix是由Bell Labs在1970年代開發的流行計算機操作系統。 它不是開源的。
Linux是最流行的Unix衍生版本。 它運行著世界上大量的類似計算機的設備。
您的終端是仿真器程序,可讓您訪問操作系統。 您可以同時打開多個終端窗口。
Shell語言用於將命令發送到底層操作系統。
Bash代表Bourne Again SHell。 它是與操作系統通信的最常用的外殼語言。 它也是macOS的默認外殼。 要了解有關支持Linux和Bash的開源基礎的更多信息,請查看本文。
命令行界面(CLI)指的是您在其中輸入命令的基於鍵盤輸入的界面。 通常,它用於實時信息和文件操作。 將CLI與常用鼠標的圖形用戶界面(GUI)進行對比。 CLI通常稱為命令行。
腳本是指包含一系列shell命令的小程序。 腳本被寫入文件,並且可以重複使用。 您可以在腳本中創建變量,條件語句,循環,函數等。
瞭解? 我們下面討論的命令適用於上面所有內容。 我將交替使用Bash,shell和命令行。
另一個注意事項:我可以交替使用目錄和文件夾。 這兩個詞是同一件事。
標準輸入/輸出流是標準輸入(stdin),標準輸出(stdout)和標準錯誤(stderror)。 他們會彈出一堆。 當我使用術語打印時,我的意思是打印到標準輸出,而不是打印機。
最後,使用任何內容替換以下以my_whatever開頭的命令。
事不宜遲,這裡是我們將在本文中介紹的命令列表。
前21個Bash命令
獲取信息
man:打印命令的手冊(幫助)
pwd:打印工作目錄
ls:列出目錄內容
ps:查看正在運行的進程
操縱
cd:更改工作目錄
touch:創建文件
mkdir:創建目錄
cp:copy拷貝
mv:移動或重命名
ln:鏈接
重定向和管道
>:重定向標準輸出
|:將一個命令的內容傳遞給下一個命令
讀
head:讀取文件尾的開頭
tail:讀取文件尾的結尾
cat:讀取文件或連接文件
結束
rm:刪除
kill:結束進程
搜索
grep:search搜索
ag:搜索
壓縮
tar:將多個文件合併為一個文件
讓我們深入探討!
解釋的前21條命令
首先,讓我們看一下以stdout形式返回信息的命令,即標準輸出。 通常,stdout會寫入您的終端。
獲取信息
man command_name:打印命令手冊。 就像幫助一樣。
pwd:顯示當前工作目錄的文件路徑。 您通常需要知道您在文件系統中的位置。
ls:列出目錄內容。 另一個超級通用命令。
ls -a:還使用-a列出隱藏文件。
ls -l:使用-l查看有關文件的更多信息。
請注意,標誌可以像這樣組合:ls -al。
ps:查看正在運行的進程。
ps -e:使用-e打印所有正在運行的進程,而不僅僅是與當前用戶的shell相關聯的進程。 這通常是您想要的。
操縱
cd my_directory:將工作目錄更改為my_directory。 使用my.directory的相對路徑../在目錄樹中上移一級。
CD
touch my_file:在指定路徑位置創建my_file。
mkdir my_directory:在指定的路徑位置創建my_directory。
mv my_file target_directory:將my_file移到target_directory。
mv也可以用來重命名文件或文件夾,如下所示:
mv my_old_file_name.jpg my_new_file_name.jpg
cp my_source_file target_directory:複製source_file並將其放在target_directory中。
ln -s my_source_file my_target_file:使用符號鏈接將my_target_file鏈接到my_source_file。
更新my_source_file的內容後,my_target_file的內容會自動更新。 如果my_target_file的內容已更新,則my_source_file的內容也將更新。 涼。
如果刪除了my_source_file,則刪除了my_target_file的內容,但該文件繼續存在。 這只是一個空文件。
如果刪除了my_target_file,則my_source_file繼續存在,其內容保持不變。
-s標誌還允許您鏈接目錄。
於2019年4月12日更新,以更正和闡明ln -s和mv行為。 感謝Jason Wallwork。
現在,讓我們看看輸出重定向和管道的工作方式。
重定向和管道
my_command my_text> my_file:將標準輸出重定向到my_file。 創建my_file(如果不存在)。 如果my_file存在,則將其覆蓋。 例如,ls> my_folder_contents.txt創建一個列出您工作目錄內容的文本文件。 將其添加為double >>,以將stdout附加到my_file而不是覆蓋它。 現在讓我們看一下管道命令。 first_command | second_command:管道字符| 用於將一個命令的結果發送到另一命令。 管道左側命令的標準輸出傳遞到管道右側命令的標準輸入。 "一切都是管道" 是Unix中的口頭禪-因此,幾乎所有有效命令都可以通過管道傳輸。 用管道鏈接命令可創建管道。 多個管道可以像這樣鏈接在一起: first_command | second_command | third_command 注意,管道並行執行所有命令。 此行為有時會導致意外結果。、 說到閱讀,讓我們看看如何從命令行中進行閱讀。 tail my_file:讀取my_file的最後幾行。 其他標準輸入也可以閱讀。 如果您是使用熊貓的數據科學家,那麼後兩個命令應該聽起來很熟悉。 如果不是這樣,頭和尾巴就是很好地映射的隱喻,因此它們應該不會太難於記住。 讓我們看看另一種讀取文件的方法。 cat可以打印文件,也可以串聯多個文件,具體取決於傳遞的文件數。 cat cat my_one_file.txt:cat使用一個文件將內容打印到stdout。 當您給它兩個或多個文件時,cat命令的行為有所不同。 cat my_file1.txt my_file2.txt:包含兩個或更多文件,cat將文件內容串聯在一起,並將輸出打印到stdout。 如果要將串聯的文件另存為新文件,請使用>寫運算符,如下所示: cat my_file1.txt my_file2.txt> my_new_file.txt 現在,我們來看看刪除和結束內容。 rm my_file:從文件系統中刪除my_file。 rm -r my_folder:刪除my_folder以及my_folder中的所有文件和子文件夾。 -r用於遞歸。 如果您不想每次刪除都提示確認,請添加-f。 kill 012345:通過給其時間關閉來正常結束指定的運行進程。 kill -9 012345:立即結束指定的運行進程。 -s SIGKILL表示與-9相同。 接下來的幾個命令-grep,ag和ack用於搜索。 Grep是古老的,可信賴的同級產品-可靠,但速度較慢,並且用戶友好性稍差。 Get a grep! grep my_regex my_file:在my_file中搜索my_term。 返回每次匹配文件的整行。 my_term默認為正則表達式。 grep -i my_regex my_file:-i使搜索不區分大小寫。 grep -v my_regex my_file:返回所有不包含my_term的行。 -v返回反函數,就像許多語言一樣。 grep -c my_regex my_file:返回與-c匹配的次數的計數。 grep -R my_regex my_folder:用-R遞歸搜索文件夾中的所有文件和所有子文件夾。 現在我們來談談Ag,grep的年輕,更快,外觀更好的兄弟姐妹。 如果您運行以下命令,但發現計算機上沒有ag,請參見此處的安裝說明。 在使用自制軟件的Mac上,只需運行brew install the_silver_searcher。 (2019年8月更新)。 ag my_regex my_file:返回行號和任何匹配的行。 ag -i my_regex my_file:-i用於不區分大小寫。 ag自動讀取您的.gitignore文件,並從任何匹配的文件或文件夾中排除結果。 太酷了! ag my_regex my_file –skip-vcs-ignores:使用–skip-vcs-ignores覆蓋自動版本控制系統文件讀取。 您還可以製作一個.agignore文件,以從Ag中排除文件路徑。 第三個兄弟是Ack。 Ag和Ack幾乎是同卵雙胞胎-它們99%可互換。 Ag更快,所以我會堅持下去。 現在,讓我們看看製作tarball存檔。 讀 my_file:讀取my_file的第一行。 其他標準輸入也可以閱讀。
刪除
搜索
壓縮
tar my_source_directory:將源目錄中的多個文件合併為一個tarball文件。 此命令對於分發其他人將下載的文件很有用。
tar
壓縮文件的擴展名為.tar,代表Tape ARchive。 Tape告訴您有關此命令的年齡!
tar -cf my_file.tar my_source_directory:使用my_source_directory的內容創建一個名為my_file.tar的tarball文件。 -c用於創建,-f用於文件。
使用-xf提取tar文件。 -x用於提取,-f用於文件。
tar -xf my_file.tar將my_file.tar中的文件擴展到當前工作目錄。
現在,讓我們看一下.tar文件的壓縮和解壓縮。
tar -cfz my_file.tar.gz my_source_directory使用gzip壓縮文件。 -c代表創建,-f代表文件,-z代表zip。 Gzip為文件的使用者節省了空間和下載時間。
通過將-z標誌添加到我們之前看到的提取命令中,解壓縮.tar.gz文件。
tar -xfz my_file.tar.gz。 -x代表解壓縮,-f代表文件,-z代表zip。
tar還有許多其他標誌可以使用。
Bash 別名 Alias
設置Bash別名可將您的按鍵保存在終端中。 然後,您可以執行類似bu而不是python setup.py sdist bdist_wheel的操作。
只需將以下行添加到您的〜/ .bash_profile中:
alias bu =" python setup.py sdist bdist_wheel"
如果您沒有〜/ .bash_profile文件,則可以使用touch命令在命令行中創建一個文件。
然後重新啟動終端,並使用兩次擊鍵來構建Python包。 就像輸入2個字母而不是44個字母一樣。
添加您喜歡的任何其他別名,並觀察您的生產率提高。
在本文中,您已經看到了21種最常見的Shell命令。
(本文翻譯自Jeff Hale的文章《Rock the Command Line》,參考:https://towardsdatascience.com/rock-the-command-line-52c4b2ea34b7)
"閱讀更多 聞數起舞 的文章