• <sub id="h4knl"><ol id="h4knl"></ol></sub>
    <sup id="h4knl"></sup>
      <sub id="h4knl"></sub>

      <sub id="h4knl"><ol id="h4knl"><em id="h4knl"></em></ol></sub><s id="h4knl"></s>
      1. <strong id="h4knl"></strong>

      2. linux bash的重定向

        時間:2023-03-22 11:50:34 Linux認證 我要投稿
        • 相關推薦

        關于linux bash的重定向

          所謂I/O重定向簡單來說就是一個過程,這個過程捕捉一個文件,或者命令,程序,腳本,甚至腳本中的代碼塊(code block)的輸出,然后把捕捉到的輸出,作為輸入發送給另外一個文件,命令,程序,或者腳本。

          如果談到I/O重定向,就涉及到文件標識符(File Descriptor)的概念, 在Linux系統中,系統為每一個打開的文件指定一個文件標識符以便系統對文件進行跟蹤,這里有些和C語言編程里的文件句柄相似,文件標識符是一個數字,不同數字代表不同的含義,默認情況下,系統占用了3個,分別是0標準輸入(stdin),1標準輸出(stdout), 2標準錯誤(stderr), 另外3-9是保留的標識符,可以把這些標識符指定成標準輸入,輸出或者錯誤作為臨時連接。通常這樣可以解決很多復雜的重定向請求。

          標準輸入通常指鍵盤的輸入

          標準輸出通常指顯示器的輸出

          標準錯誤通常也是定向到顯示器

          請看以下例子,來描述一下他們的關系

          #ls /dev

          這個命令列出/dev目錄下的所有文件,在屏幕上輸出結果。

          這里 /dev 就是作為命令ls的標準輸入(從鍵盤輸入),而打印在屏幕的結果就是標準輸出(/dev目錄中的內容)

          還是回到標題,重定向就是把標準的輸入或者輸出更改成其他的方式,請參看如下例子

          或者等同于

          #ls /dev 1>filename #注意:"1"和">"中間沒有空格

          以上命令會把命令的標準輸出重新定向到一個文件filename,而不是顯示到屏幕上,如果不指明文件標識符,系統默認的就是1, 因此1可以省略

          如果把上面例子重的">"改成">>"則表示把輸出追加到filename文件的末尾,如果文件不存在則創建它。如下

          #ls /dev >>filename

          也可以把標準錯誤重新定向到文件

          #ls -qw /dev 2>filename

          顯然 -qw是一個錯誤參數,通常會在顯示器上報告一個錯誤信息,但由于把2標準錯誤(stderr)重新定向到了文件filename,因此顯示器沒有錯誤信息,而信息寫到了文件里面

          以下命令是把標準輸出和錯誤都定向到文件

          #ls /dev &>filename

          "&"在這里代表標準輸出和標準錯誤,這里無論是正常輸出還是錯誤信息都寫到filename中了。

          重新定義標準輸入,輸出,和錯誤的文件標識符

          重新定義文件標識符可以用i>&j命令,表示把文件標識符i重新定向到j,你可以把"&"理解為"取地址"

          請看以下例子

          #exec 5>&1

          表示把文件標識符5定向到標準輸出,這個命令通常用來臨時保存標準輸入。

          同樣標準輸入也是可以重新定向的,請參考下面例子

          # grep search-word

          一般來說grep命令在給定文件中搜索字符串,以上命令把文件filename作為grep命令的標準輸入,而不是從鍵盤輸入。

          前面曾經提到,系統為每一個打開的文件指定一個文件標識符以便系統對文件進行跟蹤,那么默認的文件標識符是什么呢?答案是0,也就是標準輸入,或者可以說從鍵盤輸入。當然這個文件標識符也可以自己指定,請參考下面例子

          #echo 123456789 >filename 把字符串寫到文件filename中 #exec 3<>filename 把文件filename打開,并指定文件標識符為3 #read -n 4 <&3 從文件中讀4個字符,句柄已經指到第四個字符末尾 #echo -n . >&3 在第5個字符處寫一個點,覆蓋第5個字符,-n表示不換行 #exec 3>&- 關閉文件標識符3

          現在cat filename文件的結果就成了1234.6789

          命令j<>filename表示把文件打開,并指明文件標識符為j

          "&-"表示關閉文件標識符

          有關關閉文件標識符的操作請參考下面

          n<&- 關閉輸入文件標識符n 0<&-或<&- 關閉標準輸入stdin n>&- 關閉輸出文件標識符n 1>&-或>&-關閉標準輸出stdout

          另外還有一些其他命令,如下參考

          2. :> filename 或者 > filename

          表示把文件filename設置成空,也就是清空文件內容,如果文件不存在,則創建一個空文件,(等同于touch命令) :表示一個空輸出,兩個命令的唯一區別就是>filename不是在所有shell都可以正常工作的。


        【linux bash的重定向】相關文章:

        Linux認證系統管理:linux下搭建ftp03-08

        Linux認證考試科目06-03

        Linux cpuinfo系統詳解07-29

        Linux文件權限詳解05-11

        Linux基本指令大全11-23

        Linux認證賬戶映射01-23

        Linux 考試試題03-04

        Linux認證基礎知識:linux操作系統目錄結構03-08

        Linux認證考試科目設置01-18

        Linux認證考試報考條件01-11

        国产高潮无套免费视频_久久九九兔免费精品6_99精品热6080YY久久_国产91久久久久久无码
      3. <sub id="h4knl"><ol id="h4knl"></ol></sub>
        <sup id="h4knl"></sup>
          <sub id="h4knl"></sub>

          <sub id="h4knl"><ol id="h4knl"><em id="h4knl"></em></ol></sub><s id="h4knl"></s>
          1. <strong id="h4knl"></strong>

          2. 在线播放亚洲视频 | 日韩R级网站在线观看 | 久久国产精品系列 | 亚洲欧美日产综合在线网性色 | 日韩欧美精品久久 | 中文字字幕在线中文乱码不 |