搖滾吧!命令行

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而不是覆蓋它。

現在讓我們看一下管道命令。

搖滾吧!命令行

Pipe the result of one command to the other


first_command | second_command:管道字符| 用於將一個命令的結果發送到另一命令。 管道左側命令的標準輸出傳遞到管道右側命令的標準輸入。

"一切都是管道" 是Unix中的口頭禪-因此,幾乎所有有效命令都可以通過管道傳輸。

用管道鏈接命令可創建管道。 多個管道可以像這樣鏈接在一起:

first_command | second_command | third_command

搖滾吧!命令行

Pipeline


注意,管道並行執行所有命令。 此行為有時會導致意外結果。、

說到閱讀,讓我們看看如何從命令行中進行閱讀。

my_file:讀取my_file的第一行。 其他標準輸入也可以閱讀。

tail my_file:讀取my_file的最後幾行。 其他標準輸入也可以閱讀。

搖滾吧!命令行

Head at the front, tail at the back.


如果您是使用熊貓的數據科學家,那麼後兩個命令應該聽起來很熟悉。 如果不是這樣,頭和尾巴就是很好地映射的隱喻,因此它們應該不會太難於記住。

讓我們看看另一種讀取文件的方法。

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的年輕,更快,外觀更好的兄弟姐妹。

搖滾吧!命令行

Get it?

如果您運行以下命令,但發現計算機上沒有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存檔。

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)

"


分享到:


相關文章: