Linux命令列與命令

來源:互聯網
上載者:User

作者:Vamei 出處:http://www.cnblogs.com/vamei 歡迎轉載,也請保留這段聲明。謝謝!

 

Linux的命令是很重要的工具,也往往是初學者最大的瓶頸。有朋友用了很長時間的Linux圖形介面,基本不使用命令列輸入命令執行,所以裝的Linux最終成了擺設。這裡總結一些命令列下常使用的命令,希望能有用。

 

1.  什麼是命令

我們通常所說的Linux命令列是運行在終端(terminal)的shell (閱讀Linux架構以瞭解什麼是shell以及它在Linux系統中的位置)

所謂的命令,是我們在命令列輸入的一串字元。shell負責理解並執行這些字串。shell命令可以分為如下幾類 1)可執行檔(executable file) 2)shell內建函數(built-in function) 3) 別名(alias)。可執行檔為經過編譯的程式檔案,我們輸入這些檔案的路徑來讓shell運行,比如$/bin/ls。有些可執行檔被放在特殊的目錄(預設路徑)下面,從而使得作業系統可以通過檔案名稱找到,而不用總是輸入該檔案的絕對路徑(absolute path)。比如說$ls(實際上,shell自動幫我們補齊ls的路徑)。隨後,這些可執行檔中包含的程式運行,並成為進程。shell的內建函數與上面類似,只是其對應的程式被儲存在shell的內部。別名是指我們給以上兩種命令起一個簡稱,以便減少輸入的工作量。

我們可以通過type命令來瞭解命令的類型:

$type ls

$type cd

 

2. 命令的構成

當我們在命令列輸入命令的時候,往往由一下方式構成:

$ls -l /home

整個一行命令由空格分為三個部分(注意, $是自動出現的提示符,有時還會在此之前出現電腦名稱)。第一個為命令的名字ls,這個命令ls的功能是列出目錄中所有檔案,第二個-l是關鍵字,它告訴ls要列出每個檔案的詳細資料,第三個/home為參數,表示我所要列出的目錄是/home。實際上關鍵字是一種特殊的參數,大部分情況下用來開關程式的某些特殊功能 (用來選擇做出的是拿鐵咖啡還是黑咖啡)。而參數是用來傳遞給程式的一般的變數。ls經過處理之後,將在終端輸出/home下麵包含的各個檔案名稱 (該檔案系統見:http://www.cnblogs.com/vamei/archive/2012/09/09/2676792.html):

vamei another

關鍵字和參數可以不止有一個,比如:

$ls -l -a /home /bin

$ls -la /home /bin

(上面兩個命令等價)

列出/home和/bin目錄下的檔案,-a表示列出全部檔案(即使是隱藏檔案也要列出), -l表示列出每個檔案的詳細資料。

(如果命令沒有被放在預設路徑中,你也可以輸入絕對路徑來執行)

 

回憶Linux檔案管理背景知識,我們知道,每個檔案能否被執行要根據使用者所擁有的許可權。命令實際上是可執行檔,也是如此。系統相關的命令,或者某個命令中的定義的操作,往往會要求超級使用者root的身份才能使用。如果你是使用者vamei,那麼你就無法使用這些命令。但以root的身份登入是個糟糕的想法。為瞭解決這一矛盾,你可以以vamei的身份登入,但在執行命令之前加上sudo, 以便臨時以root的身份執行某條命令。比如$sudo ls .

 

對於大多數的shell來說,都有命令補齊的功能。當你在$的後面輸入命令的一部分時,比如rmdir的rmd的時候,按Tab鍵,Linux會幫你打剩下的字元,補充成為rmdir。不止是命令,如果你輸入的是檔案名稱,Linux也可以幫你補齊。比如說, $ls a.txt。當你輸入到$ls a.t的時候,按Tab鍵,Linux會幫你補齊該檔案名稱,成為$ls a.txt。當然,這樣做的前提是你輸入到rmd的時候,預設路徑下能和它相符的命令只有一個rmdir了。如果有多個相符的命令,連按兩下Tab,Linux會顯示所有的相符的命令。

 

3. 多使用命令的好處

實際上,許多命令的功能都可以通過圖形化介面來實現,學習這些命令的意義在哪裡呢?

在UNIX發育的大部分曆史上,使用者都是通過shell來工作的。大部分命令都已經經過了幾十年的發展和改良,功能強大,效能穩定。Linux繼承自UNIX,自然也是如此。此外Linux的圖形化介面並不好,並不是所有的命令都有對應的圖形按鈕。更別說在圖形化介面崩潰的情況下,你就要靠shell輸入命令來恢複電腦了。

命令本身是一個函數 (function),是一個小的功能模組。當我們想要讓電腦做很複雜的事情 (比如說: 在晚上12:00下載某個頁面的所有連結,然後複製到移動硬碟)的時候,不斷地去按各個圖形化按鈕並不是個很聰明的事情 (1. 要點很多下,2. 必須等到12:00)。我們通常是通過shell編程來實現這樣一些複雜任務,這時,就可以把命令作為函數,嵌入到我們的shell程式中, 從而讓不同命令協同工作 (比如使用date來查詢時間,再根據時間來使用wget下載等等)。

 

4. 如何瞭解一個陌生的命令?

有一些命令可以用來瞭解某個命令本身的情況,比如這個命令的絕對路徑。

$which ls

which 在預設路徑中搜尋命令,返回該命令的絕對路徑。

$whereis ls

whereis 在相對比較大的範圍搜尋命令,返回該命令的絕對路徑。

$whatis ls

whatis 用很簡短的一句話來介紹命令。

$man ls

man 查詢簡明的協助手冊。對於大部分的Linux內建的命令來說,當作者編寫它的時候,都會帶有一個協助文檔,告訴使用者怎麼使用這個命令。

(man可以說是我們瞭解Linux最好的百科全書,它不但可以告訴你Linux內建的命令的功能,還可以查詢Linux的系統檔案和系統調用。如果想要深入學習Linux,就必須要懂得如何用man來查詢相關文檔。)

$info ls

info 查詢更詳細的協助資訊

 

此外,在shell中,你還可以用向上箭頭來查看之前輸入啟動並執行命令。

你也可以用

$history

來查詢之前在命令列的操作。

 

當一個命令運行時,你中途想要停止它時,可以用Ctrl + c。如果你只是想暫時停止,使用Ctrl + z。具體機制與訊號(signal)有關,我們將在以後介紹

 

總結:

命令列: 使用shell解釋輸入的字串,以運行程式

type

sudo

which, whereis, whatis, man, info

使用Tab自動補齊,向上箭頭查詢曆史,history

 Ctrl + c, Ctrl + z

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.