Bashでの標準入力、標準エラー出力、標準出力のストリームの使い方
Linuxオペレーティングシステムが起動すると、3つのストリームが開かれます。これらはstdin、stdout、stderrです。stdinの完全な形式は標準入力で、ユーザーからの入力を受け取るために使用されます。stdoutの完全な形式は標準出力で、コマンドの出力をstdoutストリームに格納するために使用されます。stderrの完全な形式は標準エラーで、任意のコマンドから生成されたエラーメッセージをデータストリームに格納するために使用されます。これらのストリームの使用法はこのチュートリアルで示されています。stdin、stdout、およびstderrの対応する数値識別子の値はそれぞれ0、1、2です。
標準入力、標準出力、および標準エラーのリダイレクト演算子
- "<" または "0<" は stdin ストリームに使用されます。
- 「>」または「1>」はstdoutストリームに使用されます。
- 「2」はstderrストリームに使用されます。
標準入力、標準出力、および標準エラーの使用
このチュートリアルのこの部分では、標準入力、標準出力、および標準エラーの使用法が複数の例を用いて示されています。
例1: Stdinの使用
ファイルの内容を取得し、ターミナルに表示する方法は、この例に示されています。
以下の「cat」コマンドを実行して、いくつかの内容を含む testdata.txt という名前のテキストファイルを作成してください:
cat > testdata.txt
以下の「cat」コマンドを実行して、testdata.txtファイルにコンテンツを追加してください。
cat >> testdata.txt次の「cat」コマンドを実行して、testdata.txtファイルから入力を取得し、それをターミナルに表示します:
cat < testdata.txt出力:
次の出力は、testdata.txtファイルに「linux-console.net」と「Scripting Language」という文字列を追加した後、前のコマンドを実行した後に表示されます:
例2: Stdoutの使用
この例では、パイプ(|)とリダイレクションオペレーターを使用してファイルを作成する方法が示されています。
次のコマンドを実行して、文字列データをtestdata2.txtという名前のテキストファイルにパイプを使って書き込みます。「echo」コマンドの出力は、パイプ(|)オペレーターを使用して「cat」コマンドの入力に送られます:
echo "Learn Bash Programming" | cat > testdata2.txt次の「cat」コマンドを実行して、testdata2.txtファイルの内容を確認してください。
cat testdata2.txt出力:
以前のコマンドを実行した後、以下の出力が表示されます。この出力によると、「echo」コマンドの出力はtestdata2.txtファイルに書き込まれます:
次のコマンドを実行して、“ls -l”コマンドの出力をリダイレクションオペレーター(‘>’)を使用して、list.txtという名前のテキストファイルに書き込みます:
ls -l > list.txt次の「cat」コマンドを実行して、list.txtファイルの内容を確認してください:
cat list.txt出力:
前のコマンドを実行した後、以下の出力が表示されます。この出力によると、「ls -l」コマンドの出力がlist.txtファイルに書き込まれています:
例3: StdinとStdoutの使用
ファイルから入力を取り込み、ファイルに書き込むためにstdinとstdoutの両方を使用する方法は、この例に示されています。
以下の「cat」コマンドを実行して、testdata.txtファイルの内容をtestfile.txtファイルと端末に書き込みます:
cat < testdata.txt > testfile.txt
次の「cat」コマンドを実行して、testdata.txtファイルの内容を表示します:
cat testdata.txt次の「cat」コマンドを実行して、testfile.txtファイルの内容を表示します:
cat testfile.txt出力:
以前のコマンドを実行した後、以下の出力が表示されます。この出力によると、testdata.txtファイルの内容がtestfile.txtファイルに書き込まれ、ターミナルに表示されます。
例4: Stderrの使用
標準エラーの内容は、ターミナルに印刷することも、ファイルにリダイレクトすることも、リサイクルビンのように機能する/dev/nullに送信することもできます。標準エラーを渡す異なる方法は、この例に示されています。
以下のコマンドは有効であり、「Hello」文字列を改行付きで印刷します。したがって、以下のコマンドに対して標準エラーは生成されません。
printf "%s\n" "Hello"次のコマンドは「pirntf」という名前のコマンドが存在しないため無効です。そのため、標準エラーが生成され、エラーがターミナルに表示されます:
pirntf "%s\n" "Hello"出力:
前のコマンドを実行した後に以下の出力が表示されます。この出力によれば、標準エラーが端末に印刷されています:
時には、標準エラーを隠すことによってカスタムエラーを印刷し、ユーザーにとってより理解しやすくする必要があります。この作業は、エラーを /dev/null にリダイレクトすることで行うことができます。ここでの「2>」は、エラーを /dev/null にリダイレクトするために使用されます。
次のコマンドを実行して、エラーを/dev/nullにリダイレクトします。これにより、エラーが存在する場合でもエラーは表示されません。
pirntf "%s\n" "Hello" 2> /dev/null出力:
前のコマンドを実行した後に次の出力が表示されます。出力によると、標準エラーは端末に印刷されず、/dev/null にリダイレクトされています:
時々、標準エラーは将来の使用のためにファイルに保存する必要があります。このタスクは、「2>」演算子を使用してエラーをファイルにリダイレクトすることで実行できます。
標準エラーを errorfile.txt という名前のファイルにリダイレクトするために、以下のコマンドを実行してください。
pirntf "%s\n" "Hello" 2> errorfile.txtエラーファイルの内容を確認するには、次のコマンドを実行してください。
cat errorfile.txt出力:
前のコマンドを実行した後、次の出力が表示されます。出力によれば、標準エラーは正しく errorfile.txt ファイルに書き込まれています:
標準エラーは、次のコマンドを使用して /dev/null と errorfile.txt ファイルの両方にリダイレクトできます:
pirntf "%s\n" "Hello" 2> /dev/null > errorfile.txt結論
このチュートリアルでは、stdin、stdout、stderrの使用方法が複数の例を用いて説明されており、Linuxユーザーがこれらのストリームの概念を理解し、必要に応じて適切に使用できるようにしています。






