為什麼 stderr 中沒有「權限被拒絕」?

為什麼 stderr 中沒有「權限被拒絕」?

我有一個命令:mywritercmd -f /tmp/test 2>&1 > log.txt我在 bash 終端機中運行,命令返回error: could not open output file "/tmp/test": Permission denied

然而,這個錯誤訊息並沒有寫在日誌.txt文件,它保持空...

為什麼?

我猜想這條訊息應該發送到 stderr,然後發送到文件中,但不知何故它沒有。

答案1

排序會導致差異。命令列從左到右進行評估。當它到達 時2>&1,指令是將 stderr 傳遞到 stdout 所在的地方。目前,該> log.txt部件尚未進行評估。結果,stderr 保持預設狀態,即輸出到終端。

mywritercmd -f /tmp/test > log.txt 2>&1將導致您想要的行為,並導致錯誤訊息寫入 log.txt 檔案。

相關內容