stderrをBashのstdoutにリダイレクトする方法

How Redirect Stderr Stdout Bash



Linuxのコマンドは、ファイルまたは任意の属性である可能性のあるユーザーからの入力を受け取り、実行すると、標準出力と呼ばれる出力を提供します。標準出力は、成功出力またはエラー出力である可能性があります。両方が端末画面に表示されます。ただし、場合によっては、コードのテストまたはデバッグのために、標準出力をファイルに保存する必要があります。 Linuxでは、これらの出力をファイルにリダイレクトでき、それをキャプチャするプロセスはリダイレクトと呼ばれます。







Linuxのすべてのプロセスは、stdin、stdout、およびstderrの3つのデータストリームを生成します。



  • stdin :キーボードを介してユーザーから入力を受け取ります
  • stdout :画面に出力を表示します
  • stderr :画面にエラー情報を表示します

すべてのデータストリームには数値IDがあります。



数値ID 名前
0 stdin
1 stdout
2 stderr

リダイレクトについてもう少し詳しく説明しましょう。





Bashで標準出力と標準エラーをリダイレクトする方法:

コマンドの標準出力をリダイレクトするために、>記号より大きいリダイレクト演算子で1を使用します。

$ls 1>>stdout.txt

上記のコマンドはファイルを作成し、lsコマンドの標準出力をstdout.txtファイルに配置します。



stdout.txtファイルを読み取るには、次を使用します。

$stdout.txt

次のコマンドを使用して、標準エラーをファイルにリダイレクトすることもできます。

$myfile.txt2>>stderr.txt

stderr.txtファイルを表示するには、次を使用します。

$stderr.txt

使用2が>記号よりも大きいことを確認してください。ディレクトリにmyfile.txtファイルがないため、catコマンドはstderr.txtファイルに追加されるエラーを出します。

これらの標準出力は、次のコマンドを使用してリダイレクトすることもできます。

$ls 1>>stdout.txt2>>stderr.txt

lsコマンドの出力はに書き込まれます stdout.txt ファイル、しかし stderr.txt エラーが発生しないため、空のままになります。

それでは、stderr.txtを実行してみましょう。

$myfile.txt1>>stdout.txt2>>stderr.txt

stderr.txtを読み取るには、以下のコマンドを使用します。

$stderr.txt

そしてもちろん、stdout.txtは空になります。

結論

実行時のLinuxコマンドは、成功出力またはエラー出力の標準出力を提供します。通常、これらの出力はリダイレクト演算子を使用してリダイレクトできません。 >記号の付いた特定の数値IDを使用する必要があります。このガイドでは、これらの数値キーを使用して、標準出力をファイルにリダイレクトする方法を例とともに学習しました。