stderrに「Permission Denied」がないのはなぜですか? [コピー]

stderrに「Permission Denied」がないのはなぜですか? [コピー]

コマンドがあります。mywritercmd -f /tmp/test 2>&1 > log.txtbash 端末で実行すると、コマンドが返されます。error: could not open output file "/tmp/test": Permission denied

ただし、このエラーメッセージは次のように記録されません。ログ.txtファイルが空です...

なぜ?

私はこのメッセージをstderrに送信してからファイルに送信する必要があると思いますが、どういうわけかそうではありません。

答え1

並べ替えると違いがあります。コマンドラインは左から右に評価されます。到着すると、2>&1stdoutがある場所にstderrを渡すように指示があります。現在、この> log.txt部分は評価されていません。その結果、stderr は端末に出力されるデフォルト状態のままです。

mywritercmd -f /tmp/test > log.txt 2>&1これにより、目的の動作が発生し、エラーメッセージがlog.txtファイルに書き込まれます。

関連情報