我們今天發布的該材料的翻譯版是為那些想要掌握 Linux 命令行的人準備的。 有效使用此工具的能力可以節省大量時間。 我們將在這里特別討論 Bash shell 和 21 個有用的命令。 我們還將討論如何使用命令標誌和 Bash 別名來加速長指令的輸入。
條款
當您學習使用 Linux 命令行時,您將遇到許多有助於導航的概念。 其中一些術語,例如“Linux”和“Unix”,或者“shell”和“終端”,有時會被混淆。 讓我們來談談這些和其他重要術語。
現在我們已經介紹了重要術語,我想指出,我將在這裡互換使用術語“Bash”、“shell”和“命令行”,以及術語“目錄”和“文件夾”。
標準 stdin
)、標準輸出(標準輸出, stdout
)和標準錯誤輸出(標準錯誤, stderr
).
如果在下面給出的示例命令中,您會發現類似的內容 my_whatever
- 這意味著這個片段需要用你的東西替換。 例如,文件的名稱。
現在,在繼續分析本材料專用的命令之前,讓我們先看一下它們的列表和簡短描述。
21 Bash 命令
▍獲取信息
man
:顯示該命令的用戶指南(幫助)。pwd
:顯示有關工作目錄的信息。ls
:顯示目錄的內容。ps
:允許您查看有關正在運行的進程的信息。
▍文件系統操作
cd
:更改工作目錄。touch
:創建一個文件。mkdir
:創建一個目錄。cp
:複製文件。mv
:移動或刪除文件。ln
: 創建一個鏈接。
▍I/O 重定向和管道
<
: 重定向stdin
.>
: 重定向stdout
.|
:將一個命令的輸出通過管道傳輸到另一命令的輸入。
▍讀取文件
head
:讀取文件的開頭。tail
:讀取文件末尾。cat
:讀取文件並將其內容打印到屏幕上,或連接文件。
▍刪除文件、停止進程
rm
:刪除文件。kill
: 停止進程。
▍搜索
grep
: 搜索信息。ag
:高級搜索命令。
▍歸檔
tar
:創建檔案並使用它們。
讓我們更詳細地討論這些命令。
團隊詳情
首先,讓我們處理命令,其結果以以下形式發出 stdout
。 通常這些結果出現在終端窗口中。
▍獲取信息
man command_name
:顯示命令指南,即幫助信息。
pwd
:顯示當前工作目錄的路徑。 在使用命令行的過程中,用戶經常需要找出自己在系統中的確切位置。
ls
:顯示目錄的內容。 這個命令也經常使用。
ls -a
:顯示隱藏文件。 此處應用標誌 -a
命令 ls
。 使用標誌有助於自定義命令的行為。
ls -l
:顯示文件的詳細信息。
請注意,標誌可以組合。 例如 - 像這樣: ls -al
.
ps
:查看正在運行的進程。
ps -e
:顯示有關所有正在運行的進程的信息,而不僅僅是與當前用戶 shell 關聯的進程的信息。 該命令經常以這種形式使用。
▍文件系統操作
cd my_directory
: 將工作目錄更改為 my_directory
。 要在目錄樹中上移一級,請使用 my_directory
相對路徑 ../
.
光盤命令
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_directorymy_source_file
並將其放入文件夾中 target_directory
.
ln -s my_source_file my_target_file
: 創建符號鏈接 my_target_file
每個文件 my_source_file
。 如果更改鏈接,原始文件也會更改。
如果文件 my_source_file
將被刪除,然後 my_target_file
會保持。 旗幟 -s
命令 ln
允許您創建目錄鏈接。
現在我們來談談 I/O 重定向和管道。
▍I/O 重定向和管道
my_command < my_file
:替換標準輸入文件描述符(stdin
) 每個文件 my_file
。 如果命令正在等待來自鍵盤的某些輸入,並且該數據已保存在文件中,則這可能很有用。
my_command > my_file
:重定向命令的結果,即通常會進入的內容 stdout
並輸出到屏幕、文件 my_file
。 如果文件 my_file
不存在——它是被創建的。 如果該文件存在,則會被覆蓋。
例如執行命令後 ls > my_folder_contents.txt
將創建一個文本文件,其中包含當前工作目錄中的內容列表。
如果代替符號 >
使用構造 >>
,那麼,只要命令輸出重定向到的文件存在,該文件就不會被覆蓋。 數據將添加到該文件的末尾。
現在讓我們看一下數據管道處理。
一個命令的輸出被饋送到另一命令的輸入中。 這就像將一根管子連接到另一根管子
first_command | second_command
:輸送機符號, |
,用於將一個命令的輸出發送到另一命令。 所描述結構左側的命令發送到什麼 stdout
, 掉進 stdin
命令位於管道符號右側。
在 Linux 上,幾乎可以使用任何格式良好的命令來管道傳輸數據。 人們常說 Linux 中的一切都是管道。
您可以使用管道符號鏈接多個命令。 它看起來像這樣:
first_command | second_command | third_command
多個命令的管道可以比作一個管道
請注意,當符號左側的命令 |
,輸出一些東西到 stdout
,她輸出的內容可以立即作為 stdin
第二隊。 也就是說,事實證明,我們正在使用管道來處理命令的並行執行。 有時這可能會導致意想不到的結果。 有關此內容的詳細信息可以閱讀
現在我們來談談從文件中讀取數據並將其顯示在屏幕上。
▍讀取文件
head my_file
:從文件開頭讀取行並將其打印到屏幕上。 您不僅可以讀取文件的內容,還可以讀取命令輸出的內容 stdin
使用此命令作為管道的一部分。
tail my_file
:從文件末尾讀取行。 該命令也可以在管道中使用。
頭(head)在前,尾(tail)在後
如果您使用 pandas 庫處理數據,則命令 head
и tail
你應該很熟悉。 如果不是這樣,看看上圖,你就會很容易記住它們。
考慮其他讀取文件的方式,我們來說一下命令 cat
.
團隊 cat
將文件的內容打印到屏幕上,或連接多個文件。 這取決於調用時傳遞給此命令的文件數量。
貓命令
cat my_one_file.txt
:當單個文件傳遞給此命令時,它將輸出到 stdout
.
如果您給它兩個或更多文件,那麼它的行為會有所不同。
cat my_file1.txt my_file2.txt
:收到多個文件作為輸入後,此命令連接它們的內容並顯示發生的情況 stdout
.
如果需要將文件拼接的結果保存為新文件,可以使用運算符 >
:
cat my_file1.txt my_file2.txt > my_new_file.txt
現在我們來談談如何刪除文件和停止進程。
▍刪除文件、停止進程
rm my_file
: 刪除文件 my_file
.
rm -r my_folder
: 刪除文件夾 my_folder
及其包含的所有文件和文件夾。 旗幟 -r
表示該命令將以遞歸模式運行。
為了防止系統在每次刪除文件或文件夾時要求確認,請使用標誌 -f
.
kill 012345
:停止指定的正在運行的進程,給它時間正常關閉。
kill -9 012345
:強制終止指定正在運行的進程。 查看標誌 -s SIGKILL
與國旗含義相同 -9
.
▍搜索
您可以使用不同的命令來搜索數據。 尤其 - grep
, ag
и ack
。 讓我們開始熟悉這些命令 grep
。 這是一個經過時間考驗的可靠命令,但它比其他命令慢,而且使用起來也不方便。
grep 命令
grep my_regex my_file
: 搜索 my_regex
в my_file
。 如果找到匹配項,則針對每個匹配項返回整個字符串。 默認 my_regex
被視為正則表達式。
grep -i my_regex my_file
:搜索不區分大小寫。
grep -v my_regex my_file
:返回所有不包含的行 my_regex
。 旗幟 -v
表示反轉,類似於運算符 NOT
,在許多編程語言中都可以找到。
grep -c my_regex my_file
:返回有關在文件中找到的搜索模式匹配項數量的信息。
grep -R my_regex my_folder
:對位於指定文件夾及其嵌套文件夾中的所有文件執行遞歸搜索。
現在我們來談談團隊 ag
。 她後來來了 grep
,速度更快,使用起來更方便。
農業命令
ag my_regex my_file
:返回有關行號以及行本身的信息,其中找到了匹配項 my_regex
.
ag -i my_regex my_file
:搜索不區分大小寫。
團隊 ag
自動處理文件 .gitignore
並從輸出中排除在該文件中列出的文件夾或文件中找到的內容。 非常舒服。
ag my_regex my_file -- skip-vcs-ignores
:自動版本控製文件的內容(例如 .gitignore
)在搜索中不予考慮。
另外,為了告訴團隊 ag
您可以在要從搜索中排除的文件路徑上創建一個文件 .agignore
.
在本節的開頭,我們提到了命令 ack
。 團隊 ack
и ag
非常相似,我們可以說它們 99% 是可以互換的。 然而,球隊 ag
工作速度更快,這就是我描述它的原因。
現在我們來談談檔案工作。
▍歸檔
tar my_source_directory
:連接文件夾中的文件 my_source_directory
到單個 tarball 文件中。 此類文件對於將大量文件傳輸給某人非常有用。
焦油命令
此命令生成的 tarball 文件的擴展名為 .tar
(磁帶存檔)。 事實上,單詞“tape”(磁帶)隱藏在命令名稱及其創建的文件名稱的擴展名中,這表明該命令已經存在了多長時間。
tar -cf my_file.tar my_source_directory
:創建一個名為的 tarball 文件 my_file.tar
包含文件夾內容 my_source_directory
。 旗幟 -c
代表“create”(創造),而flag -f
作為“文件”(文件)。
從中提取文件 .tar
-文件,使用命令 tar
有旗幟 -x
(“提取”,提取)和 -f
(“文件”,文件)。
tar -xf my_file.tar
: 從中提取文件 my_file.tar
到當前工作目錄。
現在我們來說一下如何壓縮和解壓 .tar
- 文件。
tar -cfz my_file.tar.gz my_source_directory
:這裡使用標誌 -z
(“zip”,壓縮算法)表示應該使用該算法來壓縮文件 gzip
(GNUzip)。 文件壓縮可以在存儲此類文件時節省磁盤空間。 例如,如果計劃將文件傳輸給其他用戶,這有助於更快地下載此類文件。
解壓文件 .tar.gz
你可以添加一個標誌 -z
到提取內容命令 .tar
- 文件,我們上面討論過。 它看起來像這樣:
tar -xfz my_file.tar.gz
需要注意的是,團隊 tar
還有許多更有用的標誌。
Bash 別名
Bash 別名(也稱為別名或縮寫)旨在創建命令或其序列的縮寫名稱,使用它代替常規命令可以加快工作速度。 如果您有別名 bu
,隱藏命令 python setup.py sdist bdist_wheel
,那麼要調用這個命令,使用這個別名就足夠了。
要創建這樣的別名,只需將以下命令添加到文件中即可 ~/.bash_profile
:
alias bu="python setup.py sdist bdist_wheel"
如果您的系統沒有該文件 ~/.bash_profile
,然後你可以使用命令自己創建它 touch
。 創建別名後,重新啟動終端,即可使用該別名。 在這種情況下,兩個字符的輸入代替了命令的三打多個字符的輸入,這是為了
В ~/.bash_profile
您可以為任何常用命令添加別名。
▍結果
在這篇文章中,我們介紹了 21 個流行的 Bash 命令並討論了創建命令別名。 如果您對這個話題感興趣 -
親愛的讀者! 您會在本文討論的命令中添加哪些對初學者有用的命令?
來源: www.habr.com