【Linux】標準入出力とは?

Linux

どーも!marusukeです!

Linuxのデータの流れ「標準入出力」について説明します!

標準入出力とは?

LinuxやUnix系のオペレーティングシステムでは、プログラムやコマンドがデータを受け取り、結果を出力する際の「通信路」があります

この通信路のことを標準入力(stdin)、標準出力(stdout)、そしてエラーメッセージを出力する標準エラー出力(stderr)と呼びます

  • 標準入力 (stdin): プログラムにデータを入力する入り口です。デフォルトでは、キーボードからの入力がこの入り口を通じてプログラムに渡されます
  • 標準出力 (stdout): プログラムが処理結果を出力するデータの出口のことです。デフォルトでは、コマンドライン(ターミナル)に表示されます
  • 標準エラー出力 (stderr): プログラムがエラーメッセージを出力するためのデータの出口です。デフォルトでは、これもコマンドラインに表示されますが、stdoutとは別に扱われます

標準入出力にはファイルディスクリプタというOSが識別するための番号が割り振られています

番号入出力名デフォルト
0標準入力キーボードから入力
1標準出力画面(端末)に表示
2標準エラー出力画面(端末)に表示
標準入出力のファイルディスクリプタと実際の入出力先

なぜ重要なのか?

これらのデータの出入口を使うことで、プログラム間でデータを簡単に受け渡したり、出力結果をファイルに書き込んだり(リダイレクト)、他のプログラムに渡したりすること(パイプ)ができます。

この機能により、複雑なタスクを実行するスクリプトやプログラムを簡単に作成することができます

標準入出力・パイプの例

ファイルからの入力を読み込む場合: 標準入力

cat < input.txt

このコマンドはinput.txtの内容をcatコマンドに渡します

<はファイルからの入力を標準入力へリダイレクトします

出力をファイルにリダイレクトする: 標準出力

echo "Hello, World!" > output.txt

ここでは、echoコマンドの出力をoutput.txtにリダイレクトしています

リダイレクトすることで、output.txtHello, World!が書き込まれます

エラーメッセージを別のファイルにリダイレクトする:標準エラー出力

grep "text" file.txt 2> error.txt

grepコマンドを実行し、file.txt内の"text"を検索します

もしエラーが発生した場合、そのエラーメッセージはerror.txtにリダイレクトされます

2>は標準エラー出力をリダイレクトします。

出力を別のコマンドにパイプする

cat file.txt | grep "text"

catコマンドでfile.txtの内容を表示し、その出力をgrepコマンドにパイプします

|(パイプ)により、出力された内容の中から”text”を含む行だけが表示されます

標準入出力の使用方法

書式説明
コマンド > ファイルコマンドの標準出力(実行結果)をファイルに書き込む
コマンド < ファイルファイルの内容をコマンドの標準入力へ送る
コマンド >> ファイルコマンドの標準出力(実行結果)をファイルに追記する
コマンド 2> ファイルファイルに標準エラー出力を書き込む
コマンド 2>> ファイルファイルに標準エラー出力を追記する
コマンド > ファイル 2>&1ファイルに標準出力と標準エラー出力を書き込む
コマンド >> ファイル 2>&1ファイルに標準出力と標準エラー出力を追記する
コマンド <& 終了文字終了文字が現れるまで標準入力へ入力する
コマンド1 | コマンド2コマンド1の標準出力をコマンド2の標準入力に渡す
コマンド1 2>&1 | コマンド2コマンド1の標準出力と標準エラー出力をコマンド2の標準入力に渡す
コマンド1 tee ファイル | コマンド2コマンド1の標準出力(実行結果)をファイルとコマンド2の標準入力に渡すとともにファイルに書き込む
コマンド &> ファイル標準出力と標準エラー出力を同じファイルに書き込む

以上です!

ここまで読んでいただきありがとうございました!

コメント

タイトルとURLをコピーしました