成為 GNU/Linux 命令列達人的七種武器

此文是凍仁半年前轉給同事們看的 Bash 入門文章,可說是 GNU / Linux 使用者必備的的常識,相信對於剛踏入這個世界的伙伴而言會是個很好的 overview,最後送給大家一句話:「別害怕命令列、別害怕錯誤訊息,往往答案就在眼前」。



GNU / Linux 終端不僅是一個輸入指令的地方。如若你能熟悉這些基礎技巧,那麼你可以在絕大多數 GNU / Linux 發行版的預設使用的 Bash shell 中遊刃有餘。

這是 howtogeek.com 網站提供給初級用戶升級打怪時不能忘記攜帶的七種武器。

1. Tab 補齊


這樣能節省時間,並且對於輸入那些你不很確定具體名稱的檔案和指令來說很方便。比如,當前目錄下有一個名為「really long file name」的檔案,你想要刪除它。你可以輸入完整的檔名,但是你必須確保正確地輸入了空格和每個字母。若當前目錄下還有許多以字母「r」開頭的檔案,(如果你沒有正確地輸入字母) Bash 將不知道你想要刪除哪一個檔案。

如果在當前目錄下存在著另一個名為「really very long file name」的檔案,你敲擊了 Tab,Bash 將為所有以「r」開頭的檔案自動補齊「really」部分。此時繼續敲擊 Tab 鍵,你將得到符合所有檔名的列表。

2. 管道機制


這種機制允許你把一條指令的輸出傳送到另一條指命。按照 Unix 哲學,每個程式都足夠小,只做一件事並將之做到最好。例如,ls 用來列出當前目錄下的所有檔案,grep 用來搜索指定的檢索項目。

你可以通過管線(| 符號)把二者結合起來,在當前目錄下搜索檔案。以下給出的指令(在當前目錄下搜索檔案目錄下)搜索關鍵字為「word」的檔案:

[ jonny@linux ~ ]
$ ls | grep word Enter

3. 萬用字元


「*」(星號)是一種符合任意長度符號的萬用字元。比如,你想刪除當前目錄下名為「really long file name」和「really very long file name」的兩個檔案,你可以執行以下指令:

[ jonny@linux ~ ]
$ rm really*name Enter

這條指令會刪除所有以「really」開頭以「name」結尾的檔案。但是,如果你執行的是 rm * 這條指令,你將會刪除目錄下的所有檔案。(註:使用萬用字元時要小心,尤其是你的 rm 沒有 -f 確認的時候!)

4. 輸出重定向


「>」符號可以把一條指令的輸出重定向到一個檔案或另一條指令。比如,下面這行指令執行完 ls 後會列出當前目錄下的所有檔案,其結果不是在畫面顯示,而是輸出到當前目錄下一個名為「file1」的檔案中去:

[ jonny@linux ~ ]
$ ls > file1 Enter

5. 歷史記錄


Bash 能記住你以前輸入過的指令,上、下方向鍵可以逐行調出它們。使用 history 指令打印歷史記錄,以管線 grep 選擇性地輸出你想要的結果。

~
.
..

「~」,也叫做波浪符號,用來表示當前用戶的主目錄。相比通過 cd /home/name 到達你的主目錄,你可以輸入 cd ~ 來達到相同效果。 [1] 這點也可以在相關路徑上使用:比如 cd ~/Desktop 能夠到達當前用戶的 Desktop 目錄。

同樣,「.」代表當前目錄,「..」代表當前目錄的父目錄。使用 cd .. 可以返回上一層目錄。它們也可以用在相關路徑上,舉例說明:你當前處在 Desktop 目錄下,通過 cd ../Documents 指令,你可以轉到與 Desktop 共有同一父目錄的 Documents 目錄去。

(註:「-」代表前一個目錄,cd - 可以返回到前一個工作目錄。)

6. 背景執行


Bash 預設情況下會在當前畫面下執行你鍵入的每條指令。通常這樣是沒有問題的,但是如果你想要在啟動某個應用後繼續使用呢?通過輸入 Firefox 啟動火狐瀏覽器,你的畫面將被錯誤提示等各種訊息輸出佔據,直到你關閉火狐瀏覽器為止。在 Bash 中你可以通過在指令結尾添加「&」符號來背影執行程式。

[ jonny@linux ~ ]
$ firefox & Enter

7. 條件執行


Bash 也可以連續執行兩條指令。 第二條指令僅在第一條指令成功執行後才會開始執行。如要如此,你可以通過鍵入「&&」,也就是兩個「&」符號進行分隔,在同一行輸入兩條指令。下面給出的指令會在等待 5 秒後執行 gnome-screenshot 工具:

[ jonny@linux ~ ]
$ sleep 5 && gnome-screenshot Enter

[1] 也可用 cd Enter 來切回家目錄。

資料來源:
7 Tips For Becoming A Linux Terminal Power User | EFYTimes
成為 Linux 終端高手的七種武器 | Linux.CN

留言

Popular Articles

sudo 指令使用說明