輸出 / 入重新導向 (Redirection)

基本上,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

0 comments:

Blogger Templates by Blog Forum