每個使用者都必須知道的基本 Bash 技巧和竅門

每個使用者都必須知道的基本 Bash 技巧和竅門

作為 Linux 新手,啟動終端的體驗可能既令人興奮又令人不知所措。終端提供了豐富的命令和功能,但閃爍的遊標可能會讓初學者望而生畏。為了幫助使用者輕鬆過渡,我們整理了一系列 Bash 實用技巧和竅門,幫助使用者更有效率地使用終端。

理解 Bash 與終端

有必要明確 Bash 和終端之間的區別。終端機是您透過其發出命令與作業系統互動的介面或應用程式。而 Bash 是一個 Shell(UNIX 系統的命令語言解釋器),它負責處理並執行您輸入的命令。因此,當您使用終端機時,您實際上是在使用 Bash Shell(也可能是其他 Shell,例如 zsh 或 fish)。接下來的技巧和竅門主要著重於優化您在 Bash 環境中的效率。

1.使用常用指令的自訂別名

重複輸入冗長的指令會非常繁瑣。使用別名可以顯著簡化您的工作流程。別名可讓您為較長的命令分配一個易於記憶的快捷鍵,從而減少所需的輸入量。

例如,git status您可以建立一個類似 的別名,而不是直接輸入gs。別名可以是會話的臨時別名,也可以是永久別名。若要建立臨時別名,請執行:

alias gs="git status"

現在,輸入gs將會執行git status。對於永久別名,請使用您喜歡的文字編輯器(例如 nano)編輯 Bash 設定檔(通常位於「~/.bashrc」或「~/.bash_profile」):

sudo nano ~/.bashrc

在文件末尾添加別名定義,保存,然後重新啟動終端或運行:

sudo source ~/.bashrc

從現在開始,這些別名將適用於每個會話。例如,我使用以下命令進行更新命令:

alias update='sudo apt update && sudo apt upgrade -y'

這樣,只需輸入update,即可執行整個命令。此外,使用函數,您可以建立接受參數的別名:

mkcd() {mkdir -p "$1" && cd "$1"}

該命令mkcd projects/new-app將建立指定的目錄並導航到該目錄。請務必確保不要覆蓋現有命令,以免造成混淆。

2.立即搜尋您的命令記錄

滾動瀏覽終端歷史記錄可能很繁瑣。幸運的是,Bash 提供了一個快速搜尋工具,可以更輕鬆地重新查看先前的命令。

搜尋命令記錄

只要按下Ctrl+ R,你的提示符號就會切換到允許你輸入所需指令的部分內容。輸入過程中,Bash 會顯示歷史記錄中最新符合的指令。

您也可以透過將以下程式碼片段新增至「~/.inputrc」檔案來增強此功能(如果不存在則建立它):

"\e[A": history-search-backward"\e[B": history-search-forwardset show-all-if-ambiguous onset completion-ignore-case on

重新載入終端後,您將能夠透過鍵入命令的開頭,然後使用Up/Down箭頭鍵來搜尋命令歷史記錄。

3.使用管道和重定向的鍊式命令

Bash 允許您連結多個命令,以便將一個命令的輸出用作另一個命令的輸入。您可以使用管道運算子 ( |) 來實現此目的。例如,如果您只想查看正在執行的任務中的 Python 進程,則可以如下組合命令:

ps aux | grep python

連結命令以過濾進程

這裡ps aux列出了所有活動進程,並grep篩選顯示與 Python 關聯的進程。您也可以連接其他命令來形成高效的腳本。例如:

cat logfile.txt | grep "error" | wc -l

此命令計算日誌檔案中標記為錯誤的行數 – 三個命令協同工作。

重定向是另一個關鍵功能。您可以將命令輸出儲存到檔案中,而不是列印到終端機。例如,要儲存目錄列表,您可以使用:

ls -l > files.txt

用於>>附加輸出而不是覆蓋。此功能對於日誌記錄和備份資料特別有用。

4.在後台運行命令

如果您啟動了一個佔用了終端機的長命令,則無需啟動新的會話。只需將該命令推送到後台並繼續使用終端即可。

Ctrl+Z暫停正在執行的命令並返回 shell 提示字元。然後,使用:

bg

這將在後台恢復命令。若要查看作業狀態,只需輸入:

jobs

若要將後台作業重新帶回前台,請使用:

fg %1

您可以指定作業編號;否則,fg預設為最近的任務。如果您希望命令在背景啟動,請&在命令後面附加:

some_long_task &

這樣,命令就可以在不佔用終端機的情況下啟動。為了防止作業在終端關閉時終止,請使用:

disown -h %job

此命令在退出 shell 時向該作業發送「不掛斷」訊號。nohup在開始時使用 可以實現類似的效果,但請注意,後台作業可能仍會輸出到終端。

5.使用 `sudo` 重新運行最後一個命令(sudo!!)

這個技巧解決了一個常見的場景:執行一個需要超級使用者權限的指令。該!!命令會提取上一個命令,以便您能夠以提升的權限快速重新執行該命令。

例如,在嘗試執行安裝腳本(如./SCRIPT-NAME.sh並收到權限錯誤)後,只需輸入:

sudo! !

輸入您的密碼,然後您就可以重新開始操作了——這個小命令可以為您節省大量時間,並且隨著您習慣使用它,它就會成為您的第二天性。

Bash 技巧與竅門 重新運行指令

6.一次執行多個指令

為了加快任務執行速度,Bash 支援連續執行多個指令。若要依序執行命令(無論結果為何),請使用分號 ( ;):

mkdir newdir; cd newdir; touch file.txt

如果您希望在第一個指令成功後才執行第二個指令,請使用雙與符號 ( &&):

sudo apt update && sudo apt upgrade

相反,如果您希望僅在前一個命令失敗時運行命令,請使用雙垂直線 ( ||):

backup_database || echo "Backup failed!"

Bash 也允許後台處理;只需附加一個 & 符號即可在後台運行命令,同時釋放終端:

python script.py & firefox &

這將在啟動 Firefox 的同時執行你的 Python 腳本。透過練習,串聯命令和管理後台任務將使你與終端的互動體驗更加流暢。

7.使用 Apropos 發現指令

apropos命令是根據手動輸入描述查找命令的絕佳工具。如果您使用過手冊頁,您會認出頂部的元資料。透過執行命令apropos並加上關鍵字,您可以查看所有相關的命令列工具。

Bash 技巧與竅門

例如,輸入apropos icmp即可檢索與該主題相關的命令清單。此功能對於發現先前不熟悉的實用程式(例如用於的實用程式)特別有用selinux;只需執行apropos selinux即可查看可用於管理 SELinux 策略的命令。

8.取代最後一條指令中的元素

修正上一條指令錯誤的一個有效策略是使用替換。如果您不小心輸入了錯誤的命令,可以使用插入^符號 ( ) 快速修改。

例如,如果您想要 pingmaketecheasier.com但將其拼寫錯誤為maktecheaser.com,您可以執行:

^maktecheaser.com^maketecheasier.com

此命令可以有效率地使用正確的位址重新執行您的 ping 請求。這種方法尤其適用於較長的命令或複雜的參數。您可以考慮用它來修正輸出重定向的錯誤,例如用>替換>>

9.傳遞前一個指令的參數

!$語法允許您重複使用任何先前命令的最後一個參數。此外,變體使您可以輕鬆地合併特定參數。

例如,如果您剛剛使用編輯了一個檔案nano samplescript.sh並希望授予它可執行權限,只需執行:

chmod 755! $

您也可以使用./!:2來引用上一個指令的第二個參數。以下是替換選項的簡要概述:

!^ - first argument!* - all arguments!:2-$ - second through last arguments!:2-4 - second through fourth arguments

由於 Bash 保存了大約 100 個參數的歷史記錄,此功能可顯著提高您在終端使用時的效率。

希望這些 Bash 技巧和竅門能夠對您有所幫助,並幫助您更有效地在終端機中執行命令。祝您編寫 Bash 腳本愉快!

來源和圖片

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *