linux shell 编程 12 重定向
2019獨角獸企業重金招聘Python工程師標準>>>
輸出/輸入重導向
>? ?? ?>>? ?<? ?<<? ?:>? ?&>? ?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的效果不一樣。
轉載于:https://my.oschina.net/u/1454838/blog/531788
總結
以上是生活随笔為你收集整理的linux shell 编程 12 重定向的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 内部类(转)
- 下一篇: 练习PYTHON之EPOLL