輸出/輸入重導向
> >> < << :> &> 2&> 2<>>& >&2
文件描述符(File Descriptor),用一個數字(一般爲0-9)來表示一個文件。
經常使用的文件描述符以下:
文件描述符 名稱 經常使用縮寫 默認值
0 標準輸入 stdin 鍵盤
1 標準輸出 stdout 屏幕
2 標準錯誤輸出 stderr 屏幕
咱們在簡單地用<或>時,至關於使用 0< 或 1>(下面會詳細介紹)。
* cmd > file
把cmd命令的輸出重定向到文件file中。若是file已經存在,則清空原有文件,使用bash的noclobber選項能夠防止覆蓋原有文件。
* cmd >> file
把cmd命令的輸出重定向到文件file中,若是file已經存在,則把信息加在原有文件後面。
* cmd < file
使cmd命令從file讀入
* cmd << text
從命令行讀取輸入,直到一個與text相同的行結束。除非使用引號把輸入括起來,此模式將對輸入內容進行shell變量替換。若是使用<<- ,則會忽略接下來輸入行首的tab,結束行也能夠是一堆tab再加上一個與text相同的內容,能夠參考後面的例子。
* cmd <<< word
把word(而不是文件word)和後面的換行做爲輸入提供給cmd。
* cmd <> file
以讀寫模式把文件file重定向到輸入,文件file不會被破壞。僅當應用程序利用了這一特性時,它纔是有意義的。
* cmd >| file
功能同>,但即使在設置了noclobber時也會覆蓋file文件,注意用的是|而非一些書中說的!,目前僅在csh中仍沿用>!實現這一功能。
: > filename 把文件"filename"截斷爲0長度.# 若是文件不存在, 那麼就建立一個0長度的文件(與'touch'的效果相同).
cmd >&n把輸出送到文件描述符n
cmd m>&n 把輸出 到文件符m的信息重定向到文件描述符n
cmd >&-關閉標準輸出
cmd <&n 輸入來自文件描述符n
cmd m<&n m來自文件描述各個n
cmd <&-關閉標準輸入
cmd <&n-移動輸入文件描述符n而非複製它。(須要解釋)
cmd >&n-移動輸出文件描述符 n而非複製它。(須要解釋)
注意: >&實際上覆制了文件描述符,這使得cmd > file 2>&1與cmd 2>&1 >file的效果不同。shell