使用Linux終端不僅僅是只輸入命令。學習這些基本的技巧,你就會逐漸掌握Bash shell,這個在大多數(shù)Linux發(fā)行版上默認使用的終端工具。
這篇文章是寫給缺乏經(jīng)驗的新手的,我相信大多數(shù)高級用戶已經(jīng)知道了所有的這些技巧。但是,你仍然可以看看,也許能學到你一直以來都忽略了的東西。
Tab鍵自動補全
使用Tab鍵自動補全是基本的技巧。它能節(jié)省你很多時間,而且當你不確定一個文件名或者命令怎么拼寫時,它也及其有用。
舉個例子,比如在當前目錄你有一個文件,文件名是“really long file nam”,你想刪除這個文件。你可以輸入整個文件名,但是你得小心輸錯空格符(需要用\轉(zhuǎn)義)。如果你輸入”rm r”,然后按Tab鍵,Bash會自動為你補全這個文件的名字。
當然,如果當前目錄中你有很多以字母r開頭的文件,Bash就會不知道你指的是哪一個。比如當前目錄你有另一個名字叫做“really very long file name”的文,當你按Tab鍵時,Bash會補全到“really\&;部分,因為兩個文件都是以這開頭的。然后,再按Tab鍵你會看到所有能匹配該開頭的文件列表,如下圖。
接著輸入你想要的文件名然后按Tab鍵。這樣,當我們輸“l”然后按Tab鍵時,Bash會自動補全我們想要的文件名。
這種方法對于輸入命令來說同樣適用。當你不確定你想要的命令是什么,只記得以”gnome”開頭時,輸入“gnome”然后按Tab鍵,你就會看到所有可能的結(jié)果。
管道命令
管道命令允許你把一個命令的輸出結(jié)果轉(zhuǎn)移給另一個命令。在Unix的設計哲學中,每個程序都是只有少而精的功能。舉個例子,”ls”命令會顯示當前目錄中所有的文件列表,而”grep”命令會在制定的地方搜索輸入的字符串。
把這兩者通過管道命令(用“|”符號表示)結(jié)合起來,你就可以在當前目錄搜索某個文件了,以下命令用來搜索“really”:
ls | grep really
通配符
星號”*”是一個可以匹配任何東西的通配符。比如,如果我們想把”really long file name“和”really very long file name“從當前目錄都刪了,我們可以使用如下命令:
rm really*name
這個命令刪除了所有以really開頭,以name結(jié)尾的文件。如果你用”rm *”命令,將會刪除該目錄下的所有文件,所有需謹慎使用。
輸出重定向
“〉”字符可以把一個命令的輸出結(jié)果重定向到一個文件,而不需要額外使用另一個命令。比如,下圖的代碼使用”ls”命令來列出當前目錄的所有文件,并把輸出的列表輸入到了一個名為”file1“的文件,而不是僅僅輸出顯示在終端上。
ls > file1
命令行歷史
Bash會記得你使用過的命令的歷史。你可以使用向上鍵和向下鍵來翻閱你已經(jīng)使用過的命令。使用”history”命令會把歷史命令都打印出來,因此你可以使用管道命令來搜索你最近使用的命令。
關于命令行歷史,還有很多可以使用的技巧
~,. ..
波浪符”~”代表當前用戶的主目錄。所以,你可以使用”cd ~”切換到你的主目錄,而不用輸入”cd /home/name”。這對相對路徑同樣使用,比如”cd ~/Desktop”會切換到當前用戶的桌面目錄。
與之類似的是,”.”代表當前目錄,”..”代表父級目錄。所有,”cd ..”會跳到父級目錄。這對相對路徑同樣有效,比如你在Desktop目錄,你想切換到與Desktop目錄同級的Document目錄,你可以使用”cd ../Documents”命令。
后臺運行命令
默認情況下,Bash會在當前終端下運行你的命令。正常來說沒有問題,但是當你想同時運行一個應用程序而又要繼續(xù)使用該終端時怎么辦?比如你輸入”firefox”命令來運行火狐瀏覽器,火狐將會占據(jù)你的終端并且顯示一些錯誤信息等輸出,直到你關閉它。但是加一個””符號在命令后面會使Bash在后臺運行該程序:
firefox
條件執(zhí)行
你同樣可以用Bash運行兩個命令,一個接著一個。第二個命令只有當?shù)谝粋€命令成功運行完畢后才會運行。要想做到這樣,把兩個命令在同一行中用””分隔即可。
比如,”sleep”命令會以秒為單位接受一個參數(shù),然后倒計時,允許結(jié)束。單獨來用的話,該命令沒有任何用處,但是你可以把它作為運行下一個程序之前的延時。下面的命令會停5秒然后運行gnome的截屏工具:
sleep 5 gnome-screenshot