コマンドまたはシェルスクリプトの出力がstdoutかstderrかどうかを確認する方法

コマンドまたはシェルスクリプトの出力がstdoutかstderrかどうかを確認する方法

コマンドやシェルスクリプトを実行すると出力が出るとしましょう。このコマンドやシェルスクリプトの内部内容について何も知らない状態で、出力が出力されているかどうかをstderrどうやって確認できますかstdout

例えば、

$ ls -ld /
drwxrwxr-t  35 root  admin  1258 Dec 11 19:16 /

比較済み

ls -ld /test
ls: /test: No such file or directory

stdout最初のコマンドがに印刷され、2番目のコマンドがstderr(そうですか?)に印刷されているかどうかを確認できますか?

ベストアンサー1

出力が印刷されたかどうかを知る方法はありません。この場合stdoutと両方がstderr端末に接続されているため、テキストが端末に表示されるまでどのストリームに書き込まれたかに関する情報は、端末に到達する前にプログラムによってまとめられます。

上記の場合は、コマンドを実行しstdoutstderr別の場所にリダイレクトして何が起こるかを確認できます。またはstdout、リダイレクトを使用して1回、リダイレクトを/dev/null使用して1回、2回実行し、どのような場合にテキストが表示されるかを確認します。stderr/dev/null

コマンドラインの末尾に追加してリダイレクトすることもstdout、追加してリダイレクトすることもできます。/dev/null>/dev/nullstderr/dev/null2>/dev/null

おすすめ記事