[已添加書籤] Bash 初學者:21 個有用的命令

我們今天發布的該材料的翻譯版是為那些想要掌握 Linux 命令行的人準備的。 有效使用此工具的能力可以節省大量時間。 我們將在這里特別討論 Bash shell 和 21 個有用的命令。 我們還將討論如何使用命令標誌和 Bash 別名來加速長指令的輸入。

[已添加書籤] Bash 初學者:21 個有用的命令

另請閱讀我們的博客中有關 bash 腳本的一系列出版物

條款

當您學習使用 Linux 命令行時,您將遇到許多有助於導航的概念。 其中一些術語,例如“Linux”和“Unix”,或者“shell”和“終端”,有時會被混淆。 讓我們來談談這些和其他重要術語。

Unix的 是貝爾實驗室在 1970 世紀 XNUMX 年代開發的流行操作系統。 她的代碼已關閉。

Linux 是最流行的類 Unix 操作系統。 它現在被用於許多設備,包括計算機。

終端 (終端)或終端仿真器是一種可以訪問操作系統的程序。 您可以同時打開多個終端窗口。

(shell)是一個程序,允許您將用特殊語言編寫的命令發送到操作系統。

巴什 代表 Bourne Again Shell。 它是用於與操作系統交互的最常見的 shell 語言。 此外,Bash shell 是 macOS 上的默認 shell。

命令行界面 (命令行界面,CLI)是人與計算機之間交互的一種方法,用戶通過鍵盤輸入命令,計算機執行這些命令,以文本形式向用戶顯示消息。 CLI 的主要用途是獲取有關某些實體(例如文件)的最新信息以及使用文件。 命令行界面應與主要使用鼠標的圖形用戶界面 (GUI) 區分開來。 命令行界面通常簡稱為命令行。

腳本 (腳本)是一個包含一系列 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 相對路徑 ../.

[已添加書籤] Bash 初學者:21 個有用的命令
光盤命令

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
:創建文件的副本 my_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 將創建一個文本文件,其中包含當前工作目錄中的內容列表。

如果代替符號 > 使用構造 >>,那麼,只要命令輸出重定向到的文件存在,該文件就不會被覆蓋。 數據將添加到該文件的末尾。

現在讓我們看一下數據管道處理。

[已添加書籤] Bash 初學者:21 個有用的命令
一個命令的輸出被饋送到另一命令的輸入中。 這就像將一根管子連接到另一根管子

first_command | second_command:輸送機符號, |,用於將一個命令的輸出發送到另一命令。 所描述結構左側的命令發送到什麼 stdout, 掉進 stdin 命令位於管道符號右側。

在 Linux 上,幾乎可以使用任何格式良好的命令來管道傳輸數據。 人們常說 Linux 中的一切都是管道。

您可以使用管道符號鏈接多個命令。 它看起來像這樣:

first_command | second_command | third_command

[已添加書籤] Bash 初學者:21 個有用的命令
多個命令的管道可以比作一個管道

請注意,當符號左側的命令 |,輸出一些東西到 stdout,她輸出的內容可以立即作為 stdin 第二隊。 也就是說,事實證明,我們正在使用管道來處理命令的並行執行。 有時這可能會導致意想不到的結果。 有關此內容的詳細信息可以閱讀 這裡.

現在我們來談談從文件中讀取數據並將其顯示在屏幕上。

▍讀取文件

head my_file:從文件開頭讀取行並將其打印到屏幕上。 您不僅可以讀取文件的內容,還可以讀取命令輸出的內容 stdin使用此命令作為管道的一部分。

tail my_file:從文件末尾讀取行。 該命令也可以在管道中使用。

[已添加書籤] Bash 初學者:21 個有用的命令
頭(head)在前,尾(tail)在後

如果您使用 pandas 庫處理數據,則命令 head и tail 你應該很熟悉。 如果不是這樣,看看上圖,你就會很容易記住它們。

考慮其他讀取文件的方式,我們來說一下命令 cat.

團隊 cat 將文件的內容打印到屏幕上,或連接多個文件。 這取決於調用時傳遞給此命令的文件數量。

[已添加書籤] Bash 初學者:21 個有用的命令
貓命令

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。 這是一個經過時間考驗的可靠命令,但它比其他命令慢,而且使用起來也不方便。

[已添加書籤] Bash 初學者:21 個有用的命令
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,速度更快,使用起來更方便。

[已添加書籤] Bash 初學者:21 個有用的命令
農業命令

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 文件中。 此類文件對於將大量文件傳輸給某人非常有用。

[已添加書籤] Bash 初學者:21 個有用的命令
焦油命令

此命令生成的 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。 創建別名後,重新啟動終端,即可使用該別名。 在這種情況下,兩個字符的輸入代替了命令的三打多個字符的輸入,這是為了 組件 Python 包。

В ~/.bash_profile 您可以為任何常用命令添加別名。

▍結果

在這篇文章中,我們介紹了 21 個流行的 Bash 命令並討論了創建命令別名。 如果您對這個話題感興趣 - 這裡 一系列致力於 Bash 的出版物。 這裡 您可以找到這些出版物的 pdf 版本。 另外,如果您想學習 Bash,請記住,與任何其他編程系統一樣,練習是關鍵。

親愛的讀者! 您會在本文討論的命令中添加哪些對初學者有用的命令?

另請閱讀我們的博客中有關 bash 腳本的一系列出版物

[已添加書籤] Bash 初學者:21 個有用的命令

來源: www.habr.com

添加評論