2017-06-21 63 views
0

我在腳本中使用2> & 2,並希望stderr不會顯示在終端上,而是被重定向到/ dev/fd /。終端上仍顯示錯誤。我的理解有問題嗎? 謝謝。2>&2是否合理?如果是這樣,它有什麼作用?

編輯: 我想將標準錯誤重定向到日誌文件以及終端。

這工作得很好

exec 2> >(while read -r line; do printf '%s %s\n' "$(date --rfc-3339=seconds)" "$line" | tee -a $LOG_FILE; done >&2) 

(通過擊和審判秀)但這並不

exec 2> >(while read -r line; do printf '%s %s\n' "$(date --rfc-3339=seconds)" "$line" | tee -a $LOG_FILE; done) 

我想了解什麼> & 2這樣做,命令1級的作品,但命令沒有按2 't

+0

這意味着你正在將bash錯誤重定向到stderr ...你在這裏沒有做任何事情。嘗試'2>'並閱讀:http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO-3.html – Tamar

+0

然後爲什麼它顯示在終端上?它應該重定向到標準錯誤? –

+0

這是從終端 – Tamar

回答

1

不,它沒有任何意義。

使用2>&2您將文件描述符2(stderr)重定向到與文件描述符2關聯的資源。因此,您不會更改任何內容,只需將stderr重定向到它已經指向的位置。

stderr的默認資源是終端,所以這就是stderr輸出仍顯示在終端上的原因。

相關問題