stdoutとstderrをファイルにリダイレクトします

Redirect Stdout Stderr File



コマンド出力をファイルにリダイレクトすると、エラーメッセージがターミナルウィンドウに出力されることに気付くでしょう。 bashなどのLinuxシェルで実行されるコマンドは、3つの通常のI / Oストリームを利用します。数値ファイル記述子は、各ストリームを表すために使用されます。

  • 標準入力ストリーム(stdin):0
  • 標準出力ストリーム(stdout):1
  • 標準エラーストリーム(stderr):2

この投稿では、stdoutとstderrをファイルにリダイレクトする際の情報を把握します。







標準出力 (stdout):

Linuxに基づく各オペレーティングシステムには、実行されるコマンドのデフォルトの場所があります。誰もがこの概念を標準出力または標準出力と呼び、音を出しやすくしています。 BashまたはZshシェルは、常にデフォルトの出力場所を探しています。シェルが新しい出力を検出すると、ターミナル画面に表示して表示します。それ以外の場合は、出力をデフォルトの場所に送信します。



標準エラー(stderr):

標準エラーまたはstderrは、標準の入力および出力に似ていますが、エラーメッセージの保存に使用されます。標準エラーは、端末を使用してコマンドラインまたはファイルにリダイレクトできます。メッセージを別のログファイルに記録または保存したり、エラーメッセージを非表示にしたりする場合は、stderrをリダイレクトすると便利です。それでは、stdoutとstderrリダイレクトの実用的な側面に向かいましょう。



stdoutとstderrをファイルにリダイレクトします。

リダイレクトは、プログラム出力をキャプチャし、それを入力として別のコマンドまたはファイルに送信する方法です。 I / Oストリームは、n>演算子を使用することでリダイレクトできます。ここで、nはファイル記述子番号です。 stdoutをリダイレクトする場合は、1>を使用し、stderrの場合は、演算子として2>を追加します。





リダイレクトされた出力を現在のディレクトリに保存するために、sample.txtという名前のファイルを作成しました。



(コマンド>ファイル)は、端末に表示される標準エラーで標準出力のみをリダイレクトする従来のリダイレクト演算子と見なされます。 stderrをリダイレクトするためのさまざまなオプションも示します。

stderrとstdoutを別々のファイルにリダイレクトする:

以下は、stdoutとstderrを別々のファイルにリダイレクトするためのコマンド構文です。

指図 >>アウト2>>エラー

以下に示すコマンドは、出力を出力ファイルにリダイレクトし、エラーメッセージをエラーファイルにリダイレクトします。

$sample.txt>>アウト2>>エラー

stderrをstdoutにリダイレクトする:

プログラムの標準出力でstderrをリダイレクトして、すべてを1つのファイルに保存するのが一般的な方法です。 stderrをstdoutにリダイレクトするためのコマンド構文は次のとおりです。

指図 >>アウト2>&1$ls >>samplefile.txt2>&1

$samplefile.txt

> outリダイレクトはstdoutをsamplefile.txtにリダイレクトし、2>&1はstderrをstdoutの現在の場所にリダイレクトします。

stderrが最初にstdoutにリダイレクトされる場合は、以下のコマンドを使用してstdoutをファイルにリダイレクトします。

指図 2>&1 >> ファイル$ls -に 2>&1 >>samplefile.txt

$samplefile.txt

&>は、2>&1が実行するのと同じ機能にも使用されます。

指図 &> ファイル$ls &>samplefile.txt

$samplefile.txt

stdoutとstderrを単一のファイルにリダイレクトします。

すべてのシェルがこのフォームリダイレクトをサポートしているわけではありませんが、bashとZshはサポートしています。 Stdoutとstderrは、次の構文を使用してリダイレクトできます。

指図 &>アウト$sample.txt&>アウト

記事の次のセクションでは、stdoutとstderrのリダイレクトの個別の例を確認します。

stdoutをファイルにリダイレクトする:

標準出力は、ファイル記述子番号のリストの1で表されます。ファイル記述子番号のないリダイレクトコマンドの場合、端末はその値を1に設定します。stdoutをファイルにリダイレクトするための構文は次のとおりです。

指図 >> ファイル

ls-alコマンドの標準出力を保存するためにsample.fileを使用しています

$ls -に >>sample.txt

$sample.txt

指図 1>> ファイル$ls 1>>sample.txt

$sample.txt

stderrをファイルにリダイレクトする:

stderrをファイルにリダイレクトするには、2>演算子を使用します。

指図 2>> ファイル $ls -に 2>>sample.txt

stderrとstdoutの実行を1つのリダイレクトコマンドに組み合わせることができます。

指図 2>>error.txt1>>output.txt

以下の例では、エラーメッセージはerror.txtに保存されます。ここで、output.txtにはlsコマンドの標準出力があります。

$ls 2>>error.txt1>>output.txt

$output.txt

結論:

Linuxターミナルで作業しているときは、I / Oストリームのリダイレクトとファイル記述子の概念を持つことは非常に価値があります。この投稿では、stdoutやstderrなどの通常のI / Oストリームについて説明しました。この投稿の最初のセクションでは、リダイレクト、I / Oストリーム、および数値ファイル記述子に関する詳細情報を提供します。次に、さまざまな形式のstdoutおよびstderrリダイレクトの実際的な例を見てきました。