Linux標準輸入 標準輸出和標準錯誤重定向

2021-10-04 12:58:25 字數 2231 閱讀 3725

shell會自動為我們開啟和關閉0、1、2這三個檔案描述符,我們不需要顯式地開啟或關閉它們。標準輸入是命令的輸入,預設指向鍵盤;標準輸出是命令的輸出,預設指向螢幕;標準錯誤是命令錯誤資訊的輸出,預設指向螢幕。

標準輸入是檔案描述符0。它是命令的輸入,預設是鍵盤,也可以是檔案或其他命令的輸出。

標準輸出是檔案描述符1。它是命令的輸出,預設是螢幕,也可以是檔案。

標準錯誤是檔案描述符2。這是命令發生錯誤時的輸出,預設是螢幕,同樣也可以是檔案。

為什麼會有乙個專門針對錯誤的特殊檔案?這是因為很多人喜歡把錯誤單獨儲存到乙個檔案中,特別是在處理大的資料檔案時,可能會產生很多錯誤。

如果沒有顯式地進行重定向,命令通過檔案描述符0從螢幕讀取輸入,通過檔案描述符1和2將輸出和錯誤資訊輸出到螢幕。但如果我們想從其他檔案(再次強調,i/o裝置在unix/linux中也是檔案)讀取輸入或產生輸出,就需要對0、1、2使用重定向了。其語法如下:

command < filename                     把標準輸入重定向到filename檔案中

command 0

< filename 把標準輸入重定向到filename檔案中

command > filename 把標準輸出重定向到filename檔案中(覆蓋)

command 1

> fielname 把標準輸出重定向到filename檔案中(覆蓋)

command >> filename 把標準輸出重定向到filename檔案中(追加)

command 1

>> filename 把標準輸出重定向到filename檔案中(追加)

command 2

> filename 把標準錯誤重定向到filename檔案中(覆蓋)

command 2

>> filename 把標準輸出重定向到filename檔案中(追加)

command > filename 2

>

&1 把標準輸出和標準錯誤一起重定向到filename檔案中(覆蓋)

command >> filename 2

>

&1 把標準輸出和標準錯誤一起重定向到filename檔案中(追加)

command < filename > filename2 把標準輸入重定向到filename檔案中,把標準輸出重定向到filename2檔案中

command 0

< filename 1

> filename2 把標準輸入重定向到filename檔案中,把標準輸出重定向到filename2檔案中

重定向的使用有如下規律:

1)標準輸入0、輸出1、錯誤2需要分別重定向,乙個重定向只能改變它們中的乙個。

2)標準輸入0和標準輸出1可以省略。(當其出現重定向符號左側時)

3)檔案描述符在重定向符號左側時直接寫即可,在右側時前面加&。

4)檔案描述符與重定向符號之間不能有空格!

對重定向的一些解釋:

1、/dev/null代表空裝置檔案,任何寫入都將被直接丟棄(但返回「成功」),任何讀取都將得到eof(檔案結束標誌)。

2、>代表重定向到**,例如:echo "123" > /home/123.txt"> /dev/null"等同於"1> /dev/null"

3、2 表示stderr標準錯誤,&表示等同於的意思,2>&1表示2的輸出重定向等同於1。

那麼1> /dev/null表示標準輸出重定向到空裝置檔案,也就是不輸出任何資訊到終端,說白了就是不顯示任何資訊。

4、2>&1表示標準錯誤輸出重定向等同於標準輸出,因為之前標準輸出已經重定向到了空裝置檔案,所以標準錯誤輸出也重定向到空裝置檔案。

標準輸入,標準輸出和標準錯誤

當我們使用檔案描述符進行操作時,需要操作標準輸入 標準輸出 標準錯誤,可以包含如下標頭檔案 include這個標頭檔案中定義了標準裝置 standard file descriptors.define stdin fileno 0 standard input.define stdout filen...

linux中的標準輸入 標準輸出 標準錯誤

在shell中執行命令時,每個程序都和三個開啟的檔案相聯絡,並使用檔案描述符來引用這些檔案。輸入檔案 標準輸入 0 預設是鍵盤輸入,也可以是檔案或其他命令的輸出 輸出檔案 標準輸出 1 預設是螢幕,也可以是檔案 錯誤輸出檔案 標準錯誤 2 預設是螢幕,也可以是檔案 linux系統中實際上有12個檔案...

標準輸入與標準輸出

輸入cat 命令時,他會從stdin 對通斷介面來說,標準輸入就是鍵盤 接受輸入,cat testfile 現在cat命令會用testfile檔案中的行為作為輸入,可以使用這種技術將資料輸入到任何能從stdin接受資料的shell命令 stdout 在終端介面上,標準輸出就是終端顯示器。ls l t...