我想知道如何將stderr重定向到多個輸出。我用這個腳本試了一下,但是我無法讓它正常工作。第一個文件應該有stdout和stderr,第二個文件應該只有錯誤。將stdout/stderr重定向到多個文件
perl script.pl &> errorTestnormal.out &2> errorTest.out
有沒有更好的方法來做到這一點?任何幫助將非常感激。謝謝。
我想知道如何將stderr重定向到多個輸出。我用這個腳本試了一下,但是我無法讓它正常工作。第一個文件應該有stdout和stderr,第二個文件應該只有錯誤。將stdout/stderr重定向到多個文件
perl script.pl &> errorTestnormal.out &2> errorTest.out
有沒有更好的方法來做到這一點?任何幫助將非常感激。謝謝。
perl script.pl 2>&1 >errorTestnormal.out | tee -a errorTestnormal.out > errorTest.out
會做你想要什麼。
這有點凌亂,讓我們一步一步地通過它。
STDERR
現在會去STDOUT
STDOUT
現在會去errorTestnormal.out。所以,現在,STDOUT
被打印到文件,STDERR
被打印到STDOUT
。我們想把STDERR
分成兩個不同的文件,我們可以用三通來完成。 tee將文本附加到文件中,並且還回應到STDOUT
。
tee
追加到errorTestnormal.out
,所以現在包含了所有的script.pl
的STDOUT
和STDERR
輸出。tee
STDOUT
(其中包含來自script.pl
STDERR
)爲errorTest.out
在此之後,errorTestnormal.out
擁有所有STDOUT
輸出,然後將所有STDERR
輸出。 errotTest.out
僅包含STDERR
輸出。
我想在第二個「>」的情況下,您嘗試將errorTestnormal.out
(而不是script.pl
)的錯誤輸出發送到errorTest.out
。
我不得不熬過一段時間。爲了在兩個文件中獲得stderr,而只將stdout放入單個文件中(例如,將stderr插入errors.log和output.log,然後將stdout插入output.log),並按照它們發生的順序執行,此命令更好:
((sh test.sh 2>&1 1>&3 | tee errors.log) 3>&1 | tee output.log) > /dev/null 2>&1
最後的/ dev/NUL 2> & 1能如果希望輸出和錯誤仍然被輸出到屏幕上被省略。
將鼠標懸停在已添加的標籤上,關注stdout/stderr = 7。如果你爲你使用的shell包含一個標籤,你會在問題上得到更多的關注,我認爲?祝你好運。 – shellter