天天看點

其他指令(echo、輸入輸出重定向、管道、cat << end等)1. 重定向相關2. 管道——符号(|)

1. 重定向相關

1.1 echo指令

  1. 作用:會在終端中顯示參數指定的文字,通常會和重定向聯合使用。
  2. 格式:

    echo 參數名

  3. 示例:

    echo hello

1.2 重定向

将某些内容的輸出/輸入的目的地(裝置)改變,使其輸入/輸出到其他目的地(裝置),就是重定向。

1.2.1 輸出重定向相關

  1. 概念:将某些程式/指令的輸出結果儲存到其他地方而非螢幕上,這就是重定向。比如可以将結果重定向到檔案中,這樣就可以永久的儲存到檔案中。
  2. 正确重定向符号:

    >

    >>

    這兩個的差別:

    >

    是寫入指定目标,而

    >>

    是追加到指定目标的末尾,也就是說

    >

    會清空目标中的内容,然後在将内容寫入,比如如果重定向到某個檔案中,會先清空該檔案的原有内容。
  3. 執行個體:
    其他指令(echo、輸入輸出重定向、管道、cat << end等)1. 重定向相關2. 管道——符号(|)
    其他指令(echo、輸入輸出重定向、管道、cat << end等)1. 重定向相關2. 管道——符号(|)
    其他指令(echo、輸入輸出重定向、管道、cat << end等)1. 重定向相關2. 管道——符号(|)
  4. 錯誤重定向符号:

    2>

    2>>

    ,可以将錯誤的結果重定向到檔案中,兩個符号的差別與>和>>相同。
  5. 示例:
    其他指令(echo、輸入輸出重定向、管道、cat << end等)1. 重定向相關2. 管道——符号(|)
    其他指令(echo、輸入輸出重定向、管道、cat << end等)1. 重定向相關2. 管道——符号(|)
  6. 正确和錯誤重定向符号:

    &>

    &>>

    ,可以将正确和錯誤的結果全部重定向,兩個符号的差別與>和>>相同。
  7. 示例:
    其他指令(echo、輸入輸出重定向、管道、cat << end等)1. 重定向相關2. 管道——符号(|)
    附:

    /dev/null

    是一個特殊的裝置,可以将任何不需要的資訊重定向到該裝置。

1.2.2 輸入重定向相關

  1. 示例:

    使用mail(安裝evolution用戶端後)發送郵件的格式如下:

    mail -s 郵件标題  目标使用者名(敲完後回車)
    	 ......//輸入要發送的内容
    	(敲完後回車)
               
    可以使用如下的方法檢視和收郵件:
    mail(按回車檢視郵件),然後按前面的編号即可檢視相應郵件内容
               
  2. 輸入重定向符号:

    <

    ,例如上面的發送郵件的示例中,輸入完發送郵件的指令

    mail

    并按回車後,指令會進入和隻輸入cat類似的狀态來等待使用者的輸入,而此時使用者輸入的内容就被輸入重定向定向到mail指令中
  3. 輸入重定向的意義:就是可以将互動式指令轉為非互動式指令,所謂shell腳本就是一個Linux腳本的集合(序列),但是腳本中的内容要盡可能是非互動式指令,這樣才能讓腳本自己運作。

注: 需要注意的是

<<

并不是輸入重定向符号,這個符号一般和cat聯合使用,想要結束左邊指令的輸入必須以<<右邊的内容結束,示例如下:

其他指令(echo、輸入輸出重定向、管道、cat << end等)1. 重定向相關2. 管道——符号(|)

2. 管道——符号(|)

2.1 管道的作用

Linux允許将一個指令的輸出通過管道作為另一個指令的輸入,可以将其了解成一個管子,左側塞(寫)東西,右側取(讀)東西,管道的通信是單向的。

2.2 管道符号

|

:管道符号,将左邊指令的輸出作為右邊指令的輸入

2.3 常用管道的指令

與管道指令經常搭配使用的指令有以下幾個:

  1. more

    :分屏顯示内容
  2. grep

    :在指令執行的結果的基礎上在指定檔案中查找指定内容。
    1. 常用參數:
      1. -i

        :不區分大小寫
      2. -v

        :反向抓取,即不含有“内容”的行
      3. -A

        :after,使用方法,-A n,抓取有内容的行及其後n行
      4. -B

        :before,使用方法,-B n,抓取有内容的行及其前n行
      5. -n

        :顯示行号
      6. -E

        :表示使用進階功能,如比對正規表達式時,就需要加此參數
    2. 正規表達式(存在的意義是為了比對檔案内容,而通配符是為了比對檔案名)
      1. ^....

        :比對以

        ^...

        開頭的,即以^後面的字元串開頭的内容
      2. ....$

        :比對以…結尾的,即以 前 面 的 字 符 串 結 尾 的 内 容 , 在 s h e l l 中 前面的字元串結尾的内容,在shell中 前面的字元串結尾的内容,在shell中後面加字字母表示變量。
      3. .

        :表示比對任意一個字元
      4. *

        :表示比對任意非空字元串
      5. ?

        :表示可以複用前面的字元,比如 a?,表示比對aa或a
    注: 配合管道,grep可以抓取任何内容

注: 不管是head還是tail以及cat等都是将文本顯示出來的指令,而後面也不一定非要加一個檔案,如果什麼都不加,那麼其都會等待一個輸入。而且在檔案管理中,大部分指令都有接收輸入的能力。

重點指令:

xargs:該指令基本都是跟在管道符後的,例如“ls | xargs cat”,這裡xargs的作用是将ls的結果作為參數傳給cat,那麼就是将file的文本内容輸出出來,而非将ls的結果輸出出來

2.4 示例

其他指令(echo、輸入輸出重定向、管道、cat << end等)1. 重定向相關2. 管道——符号(|)