重定向》 與標準輸入 標準輸出 標準錯誤輸出

2021-09-25 07:35:20 字數 2481 閱讀 1289

當linux執行乙個程式的時候,會自動開啟三個流,標準輸入*(standard input),標準輸出(standard output),標準錯誤輸出(standard error)*,比如在開啟命令行時,預設情況下,命令列的標準輸入連線到鍵盤,標準輸出和標準錯誤都連線到螢幕,儘管三個流都開啟,但他會根據需要使用。

>

>可以改變文字流的方向,指定輸出目的地。(覆蓋)

例子:

輸入命令

ls

> aa.txt

解釋:

改變ls命令用來顯示內容的容器,預設容器是螢幕,現將容器改為aa.txt

執行結果:

開啟aa.txt可看到所有ls命令的顯示內容

「注意」:

樣例:

echo ok > a.txt

解釋:echo的作用是將文字流導向標準輸出

執行結果:ok寫入a.txt中

cat < a.txt

解釋:將cat標準輸入只想a.txt,文字會從檔案流到cat,然後輸出到螢幕上

執行結果:同cat a.txt

cat < a.txt > b.txt

解釋:a.txt中內容複製到了b.txt中

cat > a.txt < b.txt

解釋:b.txt中內容複製到了a.txt中

>&

&表示等同於的意思

例子:

假設void是乙個不存在的目錄,當我們執行

cd void > a.txt
螢幕出現錯誤提示

bash: cd: void: no such file or directory
當我們執行

cd void >

& a.txt

錯誤資訊被導向a.txt

樣例:

cd void 2 > a.txt > b.txt
解釋:標準錯誤對應的總是2,所有有以上寫法。標準錯誤輸出到a.txt,標準輸出輸出到b.txt

>>

>>可以改變文字流的方向,指定輸出目的地。(追加)

例子:

cat a.txt >> b.txt
將cat a.txt命令的標準輸出指向b.txt檔案

執行結果:

開啟b.txt可看到a.txt的內容被新增到原b.txt內容後面

「注意」:

樣例:

做輸入分隔符

分隔符可以是任意字元。

cat

> a.txt << end

​ 當執行cat > a.txt << end,命令並沒有結束,cat命令在等待你給他輸入資料,當我們敲入end後,cat命令才結束。end之前輸入的字元都被寫到a.txt檔案中,這就是輸入分隔符的作用。

>/dev/null這條命令的作用是將標準輸出1重定向到/dev/null中。/dev/null代表linux的空裝置檔案,所有王這個檔案裡寫入的內容都會丟失,俗稱「黑洞」。執行此命令後,標準輸出就會不再存在,沒有任何地方能找到輸出的內容。

2>&1這條命令用到了重定向繫結,採用&可以將兩個輸出繫結在一起。這條命令的作用是錯誤輸出將和標準輸出同用乙個檔案描述符,也就是錯誤輸出會和標準輸出輸出到同乙個地方。

>/dev/null 2>&1 vs 2>&1 >/dev/null從左到右地來分析2>&1 >/dev/null

2>&1,將錯誤輸出繫結到標準輸出上。由於此時的標準輸出是預設值,也就是輸出到螢幕,所以錯誤輸出會輸出到螢幕。

>/dev/null,將標準輸出1重定向到/dev/null中。

我們用乙個**來更好地說明這兩條命令的區別:

命令標準輸出

錯誤輸出

>/dev/null 2>&1

丟棄丟棄

2>&1 > /dev/null

丟棄螢幕

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

重定向操作符 描述 將命令輸出寫入到檔案或裝置 如印表機 而不是命令提示符視窗或控制代碼。從檔案而不是從鍵盤或控制代碼讀入命令輸入。將命令輸出新增到檔案末尾而不刪除檔案中已有的資訊。將乙個控制代碼的輸出寫入到另乙個控制代碼的輸入中。從乙個控制代碼讀取輸入並將其寫入到另乙個控制代碼輸出中。從乙個命令中...

重定向標準輸出

各位看官,今天我們來聊聊標準io流的重定向問題。必須,在程式設計時會輸出大量資訊到螢幕上,非常不方便閱讀,我們可以通過對於標準輸出的重定向,從而使得閱讀更方便。主要涉及的方法為 setin inputstream setout printstream seterr printstream setin...

標準輸出 標準錯誤重定向(格式)

command filename 把把標準輸出重定向到乙個新檔案中 command filename 把把標準輸出重定向到乙個檔案中 追加 command 1 fielname 把把標準輸出重定向到乙個檔案中 command filename 2 1 把把標準輸出和標準錯誤一起重定向到乙個檔案中 c...