linux的標準輸入輸出

2021-07-04 13:52:32 字數 796 閱讀 3816

0: 

代表標準的std_in

1: 代表標準的std_out

2: 代表標準的std_err

重定向:

2>file, 

將標準錯誤輸出重定向到檔案中。

1>file, 將標準輸出重定向到檔案中。

2>&1, 將標準的錯誤輸出重定向到標準輸出, 錯誤輸出將會顯示在終端上,效果和不加是一樣的,因為預設的錯誤輸出就是終端。那如果我們想達到乙個把錯誤輸出既顯示在終端上又把這個錯誤記錄到檔案中的目的,我們這樣寫: ls file_not_exist | tee file,行不行呢? 這樣寫是不行的,這樣只能是把標準輸出的內容寫到檔案和標準輸出中,而沒有把標準的錯誤輸出寫到檔案中去。要達到上面的目的只能這樣寫:

ls file_not_exist 2>&1 | tee file

也就是tee命令只能是從標準輸出中讀取內容,而不能從標準錯誤輸出中讀取內容,為此,我們只能是首先把標準錯誤的輸出重定向到標準輸出中,然後再用tee命令讀出,寫到標準輸出和檔案中去。

note:

要特別注意linux對管道,重定向處理的順序,shell是從命令列的後面向前處理,例如:

ls feffe 2>&1 >/dev/null

feffe是系統中不存在的乙個檔案,我們現在要把ls的錯誤輸出放到/dev/null中去,那上面的寫法能不能達到我們的目的呢? 答案是不能,因為shell處理這種情況是從後向前處理命令列,首先會把系統的標準輸出的東西重定向到/dev/null,然後再把標準錯誤輸出重定向到標準輸出,因此,我們應該這樣寫:

ls feffe >/dev/null 2>&1

linux標準輸入輸出2 1

linux中有三種標準輸入輸出,分別是stdin,stdout,stderr,對應的數字是0,1,2。stdin是標準輸入,預設從鍵盤讀取資訊 stdout是標準輸出,預設將輸出結果輸出至終端 stderr是標準錯誤,預設將輸出結果輸出至終端。由於stdout與stderr都會預設顯示在終端上,為了...

標準輸入輸出

linux的大部分命令都具有標準的輸入輸出埠,有哪些標準裝置資訊?名稱 檔案描述符 含義裝置 說明stdin 0標準輸入 鍵盤命令在執行時所需要的輸入資料,通過它來獲取 stdout 1標準輸出 顯示器命令在執行後所產生的輸出資料,通過它來送出 stderr 2標準錯誤 顯示器命令在執行後所產生的錯...

標準輸入輸出

目錄流緩衝 格式輸出 格式輸入 目錄流緩衝 格式輸出 格式輸入 記錄下,了解概念。當用流或檔案描述字i o函式開啟乙個檔案時,分別返回乙個流或檔案描述字,後面就可以將這個流或檔案描述字作為引數交給相應讀寫函式來完成實際的讀寫操作。通過關閉檔案可以終止程式與檔案的連線。檔案描述字表示為int型別的物件...