GNU/Linux >> Linux の 問題 >  >> Linux

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

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


Linux
  1. Linuxコマンドの出力を変数に割り当てる方法

  2. Linuxでコマンド出力をファイルに保存する方法

  3. コマンドをシェルスクリプトの変数に格納する方法は?

  1. Linuxコマンドのスクリプトを作成する方法

  2. LinuxシェルでコマンドのStdoutを逆の順序で印刷する方法

  3. シェルのコマンド出力から最初/最後の「n」行を削除するにはどうすればよいですか?

  1. コマンドの出力をシェル変数に割り当てる方法は?

  2. コマンドライン引数をシェルスクリプトに渡す方法は?

  3. コマンドラインから使用しているOsXのバージョンを確認するにはどうすればよいですか?