コマンドまたはシェルスクリプトを実行すると、出力が得られます。このコマンドまたはシェルスクリプトの内部を知らなくても、出力が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を追加する 。