天天看點

1.6 Linux指令行使用

        Linux 指令行包括内部指令和程式。内部指令包含在 Shell 内部,而程式是存放在檔案系統中某個目錄下的可執行檔案。Shell 首先檢查指令是否是内部指令,如果不是,再檢查是否是某個單獨程式,然後由系統調用該指令傳給 Linux 核心,如果兩者都不是就會報錯。

1.6.1 指令文法格式

        使用者進入指令行界面時,可以看到一個 Shell 提示符(管理者為 #,普通使用者為$),提示符辨別指令行的開始,使用者可以在它後面輸入任何指令及其選項和參數。

1.6 Linux指令行使用

       輸入指令必須遵循一定的文法規則,指令行中輸入的第 1項必須是一個指令的名稱,從第2項開始是指令的選項  Option 或者參數 Arguments ,各項之間由空格或者 TAB 制表符隔開

提示符 指令 選型 參數
           

       有的指令不帶任何選項和參數。Linux 指令行嚴格區分大小寫,指令、選項和參數都是如此。

    (1)選項。選項是包括一個或多個字母的代碼,前面有一個“ - ”連字元,主要用于改變指令執行動作的類型。例如,如果沒有任何選項,ls 指令隻能列出目前目錄中所有檔案和目錄的名稱;而使用帶 -l 選項的 Is 指令将列出檔案和目錄清單的詳細資訊。使用一個指令的多個選項時,可以簡化輸入。例如,将指令 ls -l -a 簡寫為 ls-la。

1.6 Linux指令行使用

       對于由多個字元組成的選項(長選項格式 ),前面必須使用 “ - ” 符号,如Is--directory。

       有些選項既可以使用短選項格式,又可使用長選項格式,例如 ls -a 與ls -all 意義相同。

(2)參數。參數通常是指令的操作對象,多數指令可使用參數。例如,不帶參數的 ls 指令隻能列出目前目錄下的檔案和目錄,而使用參數可列出指定目錄或檔案中的檔案和目錄。例如:

1.6 Linux指令行使用

1.6.2 指令行基本用法

1.編輯修改指令行

      指令行實際上是一個可編輯的文本緩沖區,在按回車前,可以對輸入的内容進行編緝。在指令行輸入過程中, 使用快建健 <Ctrl+D> 來結束鍵盤輸入。

2.調用曆史指令

        使用者執行過的指令儲存在一個指令緩存區中,稱為指令曆史表。預設情況下,bash可以存儲1000個曆史指令。使用者可以檢視和調用,以提高指令行使用效率。按上、下箭頭,便可以在指令行上逐次顯示已經執行過的各條指令,使用者可以修改并執行這出指令。如果指令非常多,可使用 history 命今列出最近用過的所有指令,顯示結果中為曆史指令加上數字編号,如果要執行其中某—條指令,可輸入“!編号〞來執行該編号的曆史指令。

1.6 Linux指令行使用

3. 自動補全指令

       bash 具有指令自動補全功能,當使用者輸入了指令、檔案名的一部分時,按<Tab>鍵就可将剩餘部分補全;如果不能補全,再按一次<Tab>鍵就可擷取與已輸入部分比對的指令或檔案名清單,供使用者從中選擇。這個功能可以減少不必要的輸入錯誤,非常實用。

4.—行多條指令和指令行續行

在一個指令行中可以使用多個指令,用分号 “;”将各個指令隔開。例如:ls -l;pwd

也可在幾個指令行中輸入一個指令,用反斜杠 “”将個指令行持續到下一行。例如:

ls -l -a \
-h
           
1.6 Linux指令行使用

5.強制中斷指令運作

         在執行指令的過程中,可使用組合鍵<Ctrl>+<C>強制中斷目前運作的指令或程式。例如,當螢幕上産生大量輸出,或者等待時間太長,或者進入不熟悉的環境,就可立即中斷指令運作。

6.獲得聯機幫助

      Linux 指令非常多,許多指令有各種選項和參數,在具體使用時要善于利用相關的幫助資訊。Linux系統安裝有聯機手冊 ( Man Pages ),為使用者提供指令和配置檔案的詳細介紹,是使用者的重要參考資料。使用指令 man 顯示聯機手冊,基本用法如下:

man[選項] 指令名或配置檔案名
           

       運作該指令顯示相應的聯機手冊,它提供基本的互動控制功能,如翻頁檢視,輸入指令 q 即可退出 man 指令。對于 Linux指令,也可使用選項--help 來擷取某指令的幫助資訊,如要檢視 cat 指令的幫助資訊,可執行指令

cat --help
           

1.6.3 指令行輸入與輸出

       與DOS 類似,Shell 程式通常自動打開 3個标準文檔:标準輸入文檔 (stdin)、标準輸出文檔

(stdout)和标準錯誤輸出文檔(stderr)。其中stdin 一般對應終端鍵盤,stdout 和 stderr 對應終端屏

幕。程序從 stdin 擷取輸入内容,将執行結果資訊輸出到 stdout ,如果有錯誤資訊,同時輸出到 stderr。多數情況下使用标準輸入輸出作為指令的輸入輸出,但有時可能要改變标準輸入輸出,這就涉及重定向和管道。

1.輸入重定向

       輸入重定向主要用于改變指令的輸入源,讓輸入不要來自鍵盤,而來自指定檔案。基本用法:

指令 < 檔案名
           

2.輸出重定向

        輸出重定向主要用于改變指令的輸出,讓标準輸出不要顯示在螢幕上,而寫入指定檔案中。基本用法

指令 >檔案名
           

       例如,Is 指令在螢幕上列出檔案清單,不能儲存清單資訊。要将結果儲存到指定的檔案,就可使用輸出重定向,下列指令将目前目錄中的檔案清單資訊寫到所指定的檔案中。

1s > /home/mytest.lst
           

       如果寫入己有檔案,則将該檔案重寫(覆寫)。要避免重寫破壞原有資料,可選擇追加功能,将  > 改為>>,下列指令将目前目錄中的檔案清單資訊追加到指定檔案的末尾。

1s >> /home/mytest.lst
           

     以上是對标準輸出來講的,至于标準錯誤輸出的重定向,隻需要換一種符号,将>改為2>;将>>改為2>>。将标準輸出和标準錯誤輸出重定向到司一檔案,則使用符号&>。

3. 管道

管道用于将一個指令的輸出作為另一個指令的輸入,使用符号 “|”來連接配接指令。可以将多個指令依

此連接配接起來,前一個指令的輸出作為後一個指令的輸入。基本用法:

指令1 | 指令2 ……| 指令N
           

       在Linux 指令行中,管道操作非常實用。例如,以下指令将 ls 指令的輸出結果送出給 grep 指令進行搜尋,

ls | grep "ab"
           

16.4 Shell 腳本

       Shell 腳本是指使用 Shell 所提供的語句所編寫的指令檔案,又稱Shell程式。它可以包含任意從鍵盤輸入的 Linux 指令。Shell 腳本最基本的功能就是彙集一些在指令行輸入的連續指令,将它們寫入腳本中,然後直接執行腳本來啟動一連串的指令行指令,如用腳本定義防火牆規則或者執行批處理任務。如果經常用到相同執行順序的操作指令,就可以将這些指令寫成腳本檔案,以後要進行同樣的操作時,隻要在指令行輸入該腳本檔案名即可。

      執行 Shell 腳本最常用的方法是把腳本權限設定為為可執行,然後在提示符下直接執行。 直接編輯生成的腳本沒有可執行權限,需要利用指令 chmod 把它設定為具有執行權限。例如:

chmod +x test1
           

        這樣就可以像執行 Linux 指令一樣來執行腳本檔案。執行 Shell腳本的方式與執行一般的可執行檔案方法相似。Shell 接收使用者輸入的指令(腳本名),并進行分析。如果檔案被标記記為可執行的,但不是被編澤過的程式,Shell 就認為它是一個腳本,并讀取其中的内容,加以解釋執行。

Shell 本身就是一種解釋型的程式設計語言,編寫 Shell 腳本的過程就是 Shell 程式設計。