#1 linux輸出重定向
$ command > file 2>&1 $ command >> file 2>&1
這里的&沒有固定的意思
放在>后面的&,表示重定向的目標不是一個文件,而是一個文件描述符,內置的文件描述符如下
1 => stdout 2 => stderr 0 => stdin
換言之2>1代表將stderr重定向到當前路徑下文件名為1的regular file中,而2>&1代表將stderr重定向到文件描述符為1的文件(即/dev/stdout)中,這個文件就是stdout在file system中的映射
而&>file是一種特殊的用法,也可以寫成>&file,二者的意思完全相同,都等價于
>file 2>&1
此處&>或者>&視作整體,分開沒有單獨的含義
順序問題:
find /etc -name .bashrc > list 2>&1 # 為什么不能調下順序,比如這樣 find /etc -name .bashrc 2>&1 > list
這個是從左到右有順序的
第一種
xxx > list 2>&1
先將要輸出到stdout的內容重定向到文件,此時文件list就是這個程序的stdout,再將stderr重定向到stdout,也就是文件list
第二種
xxx 2>&1 > list
先將要輸出到stderr的內容重定向到stdout,此時會產生一個stdout的拷貝,作為程序的stderr,而程序原本要輸出到stdout的內容,依然是對接在stdout原身上的,因此第二步重定向stdout,對stdout的拷貝不產生任何影響
#2 輸入重定向
command1 < file1
#3 dev/null
如果希望執行某個命令,但又不希望在屏幕上顯示輸出結果,那么可以將輸出重定向到 /dev/null:
command > /dev/null
/dev/null 是一個特殊的文件,寫入到它的內容都會被丟棄;如果嘗試從該文件讀取內容,那么什么也讀不到。但是 /dev/null 文件非常有用,將命令的輸出重定向到它,會起到"禁止輸出"的效果。
如果希望屏蔽 stdout 和 stderr,可以這樣寫:
command > /dev/null 2>&1
#4 重定向深入
一般情況下,每個 Unix/Linux 命令運行時都會打開三個文件:
標準輸入文件(stdin):stdin的文件描述符為0,Unix程序默認從stdin讀取數據。
標準輸出文件(stdout):stdout 的文件描述符為1,Unix程序默認向stdout輸出數據。
標準錯誤文件(stderr):stderr的文件描述符為2,Unix程序會向stderr流中寫入錯誤信息。
默認情況下,command > file 將 stdout 重定向到 file,command < file 將stdin 重定向到 file。
如果希望 stderr 重定向到 file,可以這樣寫
command 2 > file
如果希望 stderr 追加到 file 文件末尾,可以這樣寫
command 2 >> file
如果希望將 stdout 和 stderr 合并后重定向到 file,可以這樣寫:
$ command > file 2>&1 或者 $ command >> file 2>&1
如果希望對 stdin 和 stdout 都重定向,可以這樣寫:
$ command < file1 >file2
command 命令將 stdin 重定向到 file1,將 stdout 重定向到 file2。
注意:為什么需要將標準錯誤重定向到標準輸出,因為標準錯誤沒有緩沖區,而stdout有。
https://www.runoob.com/linux/linux-shell-io-redirections.html
命令 | 說明 |
---|---|
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
+關注
關注
87文章
11319瀏覽量
209830 -
命令行
+關注
關注
0文章
78瀏覽量
10404
原文標題:全面掌握Linux重定向技巧:讓命令行操作效率翻倍的秘密
文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論