2. stdin(標準入力)

前回のレッスンでは、標準出力 (stdout) ストリームのリダイレクトについて学習しました。同様に、標準入力 (stdin) ストリームを管理することもできます。デフォルトでは、プログラムはキーボードから stdin を受け取りますが、ファイルや他のプロセスの出力を入力ソースとして使用することもできます。

stdin と stdout の理解

Linux のすべてのコマンドラインプロセスは、少なくとも 2 つの基本的なデータストリーム、つまり標準入力 (stdin) と標準出力 (stdout) を使用して動作します。プログラムは stdin からデータを読み取り、結果を stdout に書き込みます。効果的なコマンドライン操作のためには、stdin と stdout の両方を制御する方法を理解することが不可欠です。

stdin のリダイレクト方法

stdout のリダイレクトに > を使用するのと同じように、stdin をリダイレクトするには < 演算子を使用します。この強力な機能により、コマンドに対して、キーボードからの入力を待つのではなく、ファイルから入力を読み取るように指示できます。これは入力リダイレクトの核となる概念です。

cat stdin を使用した実践的な例

前回のレッスンで「Hello World」というテキストが含まれていた peanuts.txt ファイルをもう一度見てみましょう。次のコマンドを検討してください。

cat < peanuts.txt > banana.txt

ここで何が起こるかを分解します。

  1. < peanuts.txt の部分は、シェルに対して cat コマンドの stdin をリダイレクトし、キーボードからではなく peanuts.txt から読み取るように指示します。
  2. cat コマンドはその入力を処理します。この場合、cat stdin を使用することは、peanuts.txt の内容を読み取ることを意味します。
  3. > banana.txt の部分は、cat の標準出力を banana.txt という新しいファイルにリダイレクトします。

最終的に、peanuts.txt の内容が banana.txt にコピーされます。この例は、単一の効率的なコマンドで stdin と stdout の両方を管理する方法を効果的に示しています。

ログインして学習進捗を保存

サインイン

演習

入力と出力のリダイレクトに焦点を当てた実践的な演習で理解を深めましょう。

  1. Linux における入出力のリダイレクト - 演算子(>、>>、2>)や tee コマンドを使用して標準出力 (stdout)、標準エラー (stderr)、標準入力 (stdin) を操作し、コマンドからのデータフロー制御を練習します。
  2. データストリームのリダイレクト - Linux ストリームリダイレクトの技術を学びます。標準入力、出力、エラー ストリームを操作し、出力を結合し、高度なファイル操作のために /dev/null を利用します。
  3. シーケンス制御とパイプライン - コマンド実行シーケンスを制御し、あるコマンドの出力を別のコマンドの入力として転送するのに不可欠なパイプラインを活用する方法を学びます。

これらのラボは、入力および出力リダイレクトの概念を実際のシナリオに適用し、シェルスクリプトとデータ操作に対する自信を高めるのに役立ちます。

クイズ

stdin をリダイレクトするために使用される演算子はどれですか?必要な記号のみで回答してください。