linux linux重定向 - 我怎樣才能重定向並追加stdout和stderr到Bash文件?




redirect stream pipe (6)

要將stdout重定向到Bash中的截斷文件,我知道使用:

cmd > file.txt

要在Bash中重定向stdout ,附加到一個文件,我知道要使用:

cmd >> file.txt

要將stdoutstderr重定向到截斷的文件,我知道要使用:

cmd &> file.txt

如何重定向stdoutstderr追加到文件? cmd &>> file.txt不適用於我。


Answers

cmd >>file.txt 2>&1

Bash執行從左到右的重定向,如下所示:

  1. >>file.txt :以追加模式打開file.txt在那裡重定向stdout
  2. 2>&1 :將stderr重定向到“當前正在執行的stdout 。 在這種情況下,這是一個以追加模式打開的文件。 換句話說, &1重用了stdout當前使用的文件描述符。

這應該工作得很好:

your_command 2>&1 | tee -a file.txt

它會將所有日誌存儲在file.txt中 ,並將它們轉儲到終端上。


有兩種方法可以執行此操作,具體取決於您的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


嘗試這個

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 >

請參閱http://www.tldp.org/LDP/abs/html/io-redirection.html


在Bash 4(以及ZSH 4.3.11)中:

cmd &>>outfile

剛剛開箱


應該只能使用window.location進行設置。

例:

window.location = "https://.com/";

這是關於這個主題的過去的帖子:

如何重定向到其他網頁?





linux bash redirect stream pipe