在linux中有很多標準的命令例如find
、sort
、du
等,可以滿足我們完成文件管理、系統管理等諸多需求,但是大多時候一些複雜的需求都需要多個命令搭配起來使用,對於linux來說乙個命令對應於乙個程序,因此多個命令協同工作,就涉及到多個程序的通訊,linux提供一種管道的方式來完成程序間通訊。
linux很多命令都需要輸入、輸出以及錯誤資訊,預設的輸入輸出以及錯誤資訊都是標準輸入(鍵盤)和標準輸出(螢幕),但有時候我們希望輸入、輸出、錯誤資訊是從其他地方輸入、輸出到其他(例如檔案),這裡就會涉及到輸入、輸出、錯誤資訊的重定向。
管道在linux
中對應管道符號|
。
commanda | commandb
commanda | xargs commandb
commanda執行的輸出作為commandb的輸入。
例如:
ls -l|xargs head -10
# 列出前十個檔案
輸入重定向符號:<
commanda < file
輸入重定向到file
特殊的輸入重定向符號<<
commanda 輸出重定向符號:>
(覆蓋),>>
(追加)
command > file
command >> file
系統中預設的檔案描述符號:
例如:
ls -l > file 2 > /dev/null # 將輸出重定向到file,且將錯誤輸出重定向到/dev/null中
這裡/dev/null
只有個特殊的檔案,重定向這裡的輸出都會被其丟棄,因此有時候為了抑制錯誤輸出,則只需要將其重定向到黑洞/dev/null
即可。
命令說明
command > file
將輸出重定向到 file。
command < file
將輸入重定向到 file。
command >> file
將輸出以追加的方式重定向到file。
n > file
將檔案描述符為 n 的檔案重定向到 file。
n >> file
將檔案描述符為 n 的檔案以追加的方式重定向到 file。
n >& m
將輸出檔案 m 和 n 合併。
n <& m
將輸入檔案 m 和 n 合併。
<< tag
將開始標記 tag 和結束標記 tag 之間的內容作為輸入。
Linux命令中的管道和重定向
在linux中有很多標準的命令例如find sort du等,可以滿足我們完成文件管理 系統管理等諸多需求,但是大多時候一些複雜的需求都需要多個命令搭配起來使用,對於linux來說乙個命令對應於乙個程序,因此多個命令協同工作,就涉及到多個程序的通訊,linux提供一種管道的方式來完成程序間通訊。li...
Linux中的重定向和管道
file descriptors fd,檔案描述符 程序使用檔案描述符來管理開啟的檔案 fd是訪問檔案的標識,即鏈結檔案 0是鍵盤唯讀,1,2是終端可以理解是螢幕,3 是檔案,可讀可寫 例項 ps aux grep vim 檢視程序號 root localhost ll proc 5606 fd 查...
linux重定向 管道
1 這條命令是什麼意思?cat file1 file2 grep name tee file3 file4 file5 wc l 該命令表示 將 file1 file2 中的包含 name 的行重定向輸出。使用 tee 命令表示 將該輸出有兩個去向。乙個是定向到檔案 file3,file4,flie...