Thursday, April 23, 2009 by JSDN
基本上,Linux 將標準 I/O分為三種,分別是:標準輸入 (stdin, Standard Input)、 標準輸出 (stdout, Standard Output) 及標準錯誤輸出 (stderr, Standard Error)。標準輸入就是指標準輸入設備鍵盤的輸入,或是一般指令後面所加的參數,例如:ls dir1,dir1 就是標準輸入。標準輸出則是指輸出到螢幕,例如:ls dir1 顯示在螢幕上的結果。標準錯誤輸出是指指令執行錯誤時,產生的錯誤訊息,例如:ls dir1結果沒有 dir1 這個目錄時,顯示在螢幕上的錯誤訊息。
─ 輸出導向 :>
# ls dir1 > file1 | 執行結果會儲存到檔案 file1 中,而不是顯示在螢幕上 |
# cat file2 file3 > file4 | 將 file2 與 file3 兩個檔案合併後存到檔案 file4 |
# cat > file5 | 可以在鍵盤上輸入資料,直到按下 Ctrl+d 結束,所有輸入的資料即為新建檔案 file5 的內容 |
# exefile > /dev/null | 執行檔 exefile 的執行結果將會消失不見 |
※ 上述輸出導向指令在執行之前,會先將右邊參數所指的檔案 (e.g., file1, file4 etc.) 內容清空
─ 附加輸出導向 :>>
# cat file2 >> file1 | 將 file2 的內容附加到檔案 file1 的後面 |
─ 輸入導向 :<
# cat <> | 結果與「cat file1」相同 |
# mail user1 <> | 將檔案 file2 的內容直接寄給使用者 user1 |
─ 附加輸入導向 :<<
附加輸入導向「<< string」是指輸入會一直持續到遇到字串 "string" 為止,例如:
cat > file1 <<>> This is a simple input test!
> You can do the input until eof appear.
> eof
─ 錯誤輸出導向 :2>
# ls dir1 2> err.out | 執行錯誤訊息將會存到檔案 err.out |
# ls dir1 > file1 2>&1 | 將正確執行結果與錯誤輸出都寫入同一檔案 file1 |
# ls dir1 &> file1 | 同時將標準輸出與標準錯誤輸出導向到檔案 file1 |
# ls dir1 >& file1 | 同時將標準輸出與標準錯誤輸出導向到檔案 file1 |
─ 管線 (pipe):|
管線的功用就是將程式的輸出引導為另一個程式的輸入,例如:
# ls -l dir1 | more | 將執行結果一頁一頁的顯示 |
─ 雙向重導向:tee
last | tee ~/last.list | 顯示所有登入過系統的使用者清單,並儲存一份至檔案 last.list |