コマンドまたはシェルスクリプトを実行すると、出力が得られます。このコマンドまたはシェルスクリプトの内部を知らなくても、出力がstderr
からのものであるかどうかをどのように判断するのでしょうか。 またはstdout
?
例:
$ ls -ld /
drwxrwxr-t 35 root admin 1258 Dec 11 19:16 /
vs
ls -ld /test
ls: /test: No such file or directory
最初のコマンドがstdout
に出力されたことを確認するにはどうすればよいですか。 stderr
の2番目 (しましたか?)?
承認された回答:
出力がすでに印刷されているかどうかを判断する方法はありません。この場合、両方のstdout
およびstderr
は端末に接続されているため、テキストが端末に表示されるまでに、どのストリームに書き込まれたかに関する情報はすでに失われています。それらは、ターミナルに到達する前にプログラムによって結合されました。
上記のような場合にできることは、stdout
を使用してコマンドを実行することです。 およびstderr
別の場所にリダイレクトされ、何が起こるかを確認します。または、stdout
を使用して1回ずつ2回実行します。 /dev/null
にリダイレクトされます stderr
で1回 /dev/null
にリダイレクトされます 、そしてそれらのケースのどれがテキストを表示する結果になるかを確認してください。
stdout
をリダイレクトできます /dev/null
へ >/dev/null
をタックすることによって コマンドラインの最後にあり、stderr
をリダイレクトできます /dev/null
へ 2>/dev/null
を追加する 。