Linux base shell重定向詳解

發布時間:2019-12-30 23:29 來源:互聯網 當前欄目:網站服務器

一、標準輸入,標準輸出與標準錯誤輸出

在linux shell執行命令時,每個進程都和三個打開的文件相聯系,并使用文件描述符來引用這些文件。由于文件描述符不容易記憶,shell同時也給出了相應的文件名:

文件 文件描述符
輸入文件—標準輸入 0(缺省是鍵盤,為0時是文件或者其他命令的輸出)
輸出文件—標準輸出 1(缺省是屏幕,為1時是文件)
錯誤輸出文件—標準錯誤 2(缺省是屏幕,為2時是文件)
系統中實際上有12個文件描述符,我們可以任意使用文件描述符3到9.

標準輸入:從鍵盤輸入數據,即從鍵盤讀入數據。
標準輸出:把數據輸出到終端上。
標準錯誤輸出:把標準錯誤輸出到終端上。

默認的標準輸入指的是鍵盤,默認的標準輸出與標準錯誤輸出指的是屏幕或者是終端。

系統為這三個文件分配了文件標識符fd(file descripter).

在Linux系統下,一切皆是文件,對文件的操作,一般要用到文件標識符。它們的文件標識符,分別為0,1,2。他們的關系如下表:

文件描述符 名稱 通用縮寫 默認值
0 標準輸入 stdin 鍵盤
1 標準輸出 stdout 屏幕
2 標準錯誤 stderr 屏幕

二.文件重定向:改變程序運行的輸入來源和輸出地點

1.輸出重定向:

Command > filename 把標準輸出重定向到一個新文件中
Command >> filename 把標準輸出重定向到一個文件中(追加)
Command > filename 把標準輸出重定向到一個文件中
Command > filename 2>&1 把標準輸出和錯誤一起重定向到一個文件中
Command 2 > filename 把標準錯誤重定向到一個文件中
Command 2 >> filename 把標準輸出重定向到一個文件中(追加)
Command >> filename2>&1 把標準輸出和錯誤一起重定向到一個文件(追加)

2.輸入重定向:

Command < filename > filename2 Command命令以filename文件作為標準輸入,以filename2文件作為標準輸出
Command < filename Command命令以filename文件作為標準輸入
Command << delimiter 從標準輸入中讀入,知道遇到delimiter分界符

3.綁定重定向

Command >&m 把標準輸出重定向到文件描述符m中
Command < &- 關閉標準輸入
Command 0>&- 同上

三、使用實例

復制代碼 代碼如下:
cmd > file
#說明: 將 cmd 的輸出發送到 file 文件(覆蓋模式)

  • 1、
  • 2、
  • 3、
  • 4、
  • 5、
  • 6、
  • 7、
  • 8、
  • 9、
  • 10、
  • 11、
  • 12、
  • 13、
  • 14、
  • 15、
  • 16、
  • 17、
  • 18、
  • 19、
  • 20、
  • 21、
  • 22、
  • 23、
  • 24、
  • 25、
  • 1、
  • 2、
  • 3、
  • 4、
  • 5、
  • 6、
  • 7、
  • 8、
  • 9、
  • 10、
  • 11、
  • 12、
  • 13、
  • 14、
  • 15、
  • 16、
  • 17、
  • 18、
  • 19、
  • 20、
  • 21、
  • 22、
  • 23、
  • 24、
  • 25、