為什麼 `2>&1` 在此管道中不起作用?

為什麼 `2>&1` 在此管道中不起作用?

我找不到重定向 NAS 上錯誤的方法。

shell 是/bin/sh,當我使用時,> mylogfile.log 2>&1我仍然在終端上看到錯誤列印。具體命令是

find /volume1/ | grep "totoro" > ~/totoro.log 2>&1

我看到錯誤find。有什麼辦法可以使重定向工作嗎?如何將find錯誤寫入日誌檔案?

答案1

find /volume1/ | grep "totoro" > ~/totoro.log 2>&1

2>&1只影響你grep,不影響find。在下面的命令中,第一個2>&1影響find

find /volume1/ 2>&1 | grep "totoro" > ~/totoro.log 2>&1   # probably wrong

但這會將 stderr 和 stdout 從 發送findgrep。您可能不想grepfind.我猜你想捕獲整個組合命令的標準輸出和標準錯誤。如果是這樣,請在顯式子 shell 中執行該命令並重定向其輸出和錯誤流:

(find /volume1/ 2>&1 | grep "totoro") > ~/totoro.log 2>&1

答案2

請參閱“tee”命令。它從標準輸入讀取並寫入標準輸出和檔案。這裡很有幫助。

相關內容