說到命令,就不能不提shell。出於安全性的考慮,操作系統本身是無法與用戶溝通的。試想如果讓操作系統直接暴露在用戶面前,用戶稍一操作不當就會造成系統崩潰。因此,用戶必須通過圖形界面或者命令行界面與計算機進行交互,圖形界面中我們可以通過點鼠標來執行操作,那命令行中怎麼辦呢?這時候就需要一種軟件能夠調用其他軟件,我們就稱之爲shell, 其本意是外殼的意思,這裏就是指包在操作系統外的一層殼用以保護和使用系統。廣義的shell包括圖形界面的軟件,因爲圖形界面的本質也是通過操縱其他軟件來使用系統。
下面我們將要提到的命令,都是獨立的應用程序,我們只是通過shell來調用他們,就像通過鼠標點擊打開瀏覽器一樣。
shell的種類很多,bash(linux默認的shell), ksh, tcsh, csh, zsh等等,單基本概念都是一樣的(就像linux的各個發行版)
執行命令的方式很簡單,一個命令由兩部分組成:命令名稱(command)和參數(parameter)。
簡單情況下,我們只打命令名稱(一般簡稱爲命令)就可以得到結果,就像上一章最後的date 命令。但絕大多數情況下我們需要輸入參數來得到想要的結果。
以 ls 命令爲例。ls 是 list 的縮寫,用來顯示當前目錄下的文件和文件夾。如果只打ls, 結果如圖:
在ubuntu中,藍色代表文件夾,而白色代表文件。更多有關ls配色方案的信息可以自行google。如果當前文件夾下什麼都沒有,那沒有任何結果會輸出。
在之後的例子中我們會對其進行擴展,爲其加上參數。
參數(parameter)
參數是跟在命令名稱之後的選項,參數與命令之間用空格分開如下圖所示,注意不論空幾格,shell都視爲一格
parallels@ubuntu:~$commande parameters
參數的內容並沒有強制的規定格式,它可以是數字,字母,空格。。。幸運的是,程序員們在開發時約定俗城了一套默認規則,以方便shell的使用(否則,想想瀏覽器大戰給web前端程序員帶來的麻煩)。
短參數 (short parameters)
短參數是最常見的,它由連字符加一個字母組成:
commande -d
如果需要同時給出多個參數,可以這樣做:
commande -d -a -U -h
或者,更方便也更常用的做法是:
commande -daUh
注:再次強調Linux系統是對大小寫敏感的,也就是說這裏大寫的U與小寫的u代表的是2個參數。
以 ls 爲例,如果我們爲其加上參數 a (小寫):
我們發現與只打 ls 相比,多了很多文件。這是因爲 a 是 all 的縮寫,這個參數是 ls 能夠顯示當前目錄下得所有文件。那些以 . 開頭是linux中的隱藏文件。通常你會在你的home目錄下(也就是~)發現許多隱藏文件,這些一般來說都是程序配置文件。
長參數 (long parameters)
長參數由兩個連字符加一個單詞組成:
commande --parameters
這一次不同與短參數,如果想同時給出多個參數,只有一個種選擇:以空格分開
commande --parameter1 --parameter2
我們可以同時使用短參數和長參數:
commande -daUh --anotherparameter
有時一個參數可以寫成短參數,也可以寫成長參數。這取決於命令,關於如何獲取命令的參數信息,在後面關於manual的章節中會講到。
再以 ls 爲例,輸入 ls --all(注意兩個連字符!), 結果如圖所示:
ls -all 的執行結果和 ls -a一模一樣,這說明對於 ls 這個命令,全部顯示這個參數可以寫成 -a 或者 -all。
參數的值 (values of parameters)
有些參數需要被賦值, 對於短參數和長參數,賦值的寫法不同。
對於短參數:
commande -p 14
這裏我們把14這個值賦給了參數p
對於長參數:
commande --parameter=14
其他格式的參數
正如我們開頭所說,參數的格式沒有強制規定。雖然有默認的約定,但林子大了什麼鳥都有。比如對於 ls,我們可以把文件或文件夾名作爲 ls 的參數,用來顯示該文件/文件夾目錄下的內容,以隱藏文件夾 .config爲例:
結果顯示了~/.config目錄下的文件與文件夾。