Unix

如何在沒有管道標準輸出的情況下管道標準錯誤

  • February 12, 2013

如何在不傳輸標準輸出流的情況下傳輸標準錯誤流?

我知道這個命令有效,但它也寫出了標準。

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.filetee 複製文件描述符 1,該描述符被製作為 stderr。

引用自:https://serverfault.com/questions/63705