linux重定向
我怎樣才能重定向並追加stdout和stderr到Bash文件? (4)
要將stdout重定向到Bash中的截斷文件,我知道使用:
cmd > file.txt
要在Bash中重定向stdout ,附加到一個文件,我知道要使用:
cmd >> file.txt
要將stdout和stderr重定向到截斷的文件,我知道要使用:
cmd &> file.txt
如何重定向stdout和stderr追加到文件? cmd &>> file.txt
不適用於我。
嘗試這個
You_command 1>output.log 2>&1
您使用&> x.file在bash4中可以正常工作。 對不起:(
這裡有一些額外的提示。
0,1,2 ... 9是bash中的文件描述符。
0代表stdin
,1代表stdout
,2代表stderror
。 3〜9用於其他臨時使用。
任何文件描述符都可以使用運算符>
或>>
(附加)重定向到其他文件描述符或文件。
用法:< file_descriptor >> < filename | &file_descriptor >
在Bash 4(以及ZSH 4.3.11)中:
cmd &>>outfile
剛剛開箱
有兩種方法可以執行此操作,具體取決於您的Bash版本。
經典和便攜式( Bash pre-4 )方式是:
cmd >> outfile 2>&1
從Bash 4開始,一個不便攜的方法是
cmd &>> outfile
(類似於&> outfile
)
對於良好的編碼風格,你應該
- 決定可移植性是否值得關注(然後使用經典的方式)
- 決定是否對Bash pre-4的可移植性是一個擔憂(然後使用經典的方式)
- 無論使用哪種語法,都不要在同一個腳本中更改它(混淆!)
如果您的腳本已經以#!/bin/sh
開頭(無論是否有意),那麼Bash 4解決方案以及通常任何Bash特定的代碼都是不可行的。
還要記住,Bash 4 &>>
只是更短的語法 - 它不會引入任何新功能或類似的東西。
語法是(除了其他重定向語法)在這裡描述: http://bash-hackers.org/wiki/doku.php/syntax/redirection#appending_redirected_output_and_error_output : http://bash-hackers.org/wiki/doku.php/syntax/redirection#appending_redirected_output_and_error_output
這應該工作得很好:
your_command 2>&1 | tee -a file.txt
它會將所有日誌存儲在file.txt中 ,並將它們轉儲到終端上。