Unix
如何在沒有管道標準輸出的情況下管道標準錯誤
如何在不傳輸標準輸出流的情況下傳輸標準錯誤流?
我知道這個命令有效,但它也寫出了標準。
Command 2>&1 | tee -a $LOG
我怎樣才能得到標準錯誤?
注意:我想要的只是將 stderr 流寫入日誌並將 stderr 和 stdout 寫入控制台。
為此,請使用一個額外的文件描述符來切換 stderr 和 stdout:
find /var/log 3>&1 1>&2 2>&3 | tee foo.file
基本上,它有效,或者至少我認為它有效,如下所示:
重定向是從左到右評估的。
3>&1
創建一個新的文件描述符,3 是 fd 1(stdout)的副本(副本)。
1>&2
使 stdout (1) 成為 fd 2 (stderr) 的副本
2>&3
製作 fd 2,即 3 的副本(副本),之前製作了 stdout 的副本。所以現在 stderr 和 stdout 被切換了。
| tee foo.file
tee 複製文件描述符 1,該描述符被製作為 stderr。