【Linux】ストリーム、パイプ、リダイレクトの使い方と実行例

Linuxコマンドにおけるストリーム、パイプとリダイレクトの使い方と実行例についてまとめました。

スポンサーリンク

ストリーム

ストリームとは、データの入出力の流れのことです。

  • テキストストリーム
    • 複数行(1つの塊)のテキストデータ。
スポンサーリンク

パイプ

パイプ(pipe)は、コマンドの標準出力を次のコマンドに渡す機能です。この機能を使った処理を「パイプライン処理」といいます。
使い方は簡単で、コマンドとコマンドの間に記号「|」を使います。

【使用例】

$ date |  tee date.txt
2023年 12月13日 水曜日 11時14分36秒 JST

$ cat date.txt
2023年 12月13日 水曜日 11時14分36秒 JST
スポンサーリンク

リダイレクト

リダイレクトは、標準入出力をファイルに変更する機能です。

  • 出力リダイレクト
    • 標準出力をファイルに変更
    • 記号は上書きの場合は「>」、追記の場合は「>>」を使う
  • 入力リダイレクト
    • ファイルから標準入力を行う
    • 記号は「<」と「<<」の2つ

出力リダイレクト

【使用例】
「date」コマンドの実行結果を「>」を使って上書きで「date.txt」に書き込みます。
が「txtfile」というファイルに書き込まれます。

$ date >  date.txt
$ cat date.txt
2023年 12月15日 金曜日 12時29分00秒 JST

更にファイルに追記したい場合は「>>」を使います。

$ date >> date.txt
$ cat date.txt
2023年 12月15日 金曜日 12時29分00秒 JST
2023年 12月15日 金曜日 12時29分50秒 JST

「2>」や「2>>」を使うと、「標準エラー出力(エラーメッセージ)」をファイルに保存できます。

$ ls test.txt 2> msg.txt  
$ cat msg.txt
ls: test: No such file or directory

標準出力と標準エラー出力の両方を1つのファイルに保存したい場合、「2>&1」の記号を使います。
2つのファイルに分けて保存したい場合、「コマンド 1> 標準出力の保存先 2> 標準エラー出力の保存先」を使います。
ちなみに、数字の「1」は標準出力、「2」は標準エラー出力を示します。追記モードで保存する場合は「>」を「>>」に変えます。

$ date >  result.txt 2> err.txt

$ ls test.txt > result.txt 2> err.txt  

$ cat result.txt                        
2023年 12月15日 金曜日 12時42分09秒 JST

$ cat err.txt                          
ls: test.txt: No such file or directory

入力リダイレクト

入力リダイレクト「<」は、ファイルの内容を標準入力としてコマンドを実行できます。
例えば、以下を実行すると「cmd.txt」内の「d」という文字を含んだ行を表示します。

$ grep "d" < cmd.txt
date

$ cat cmd.txt
date
ls-l

「<<」は「ヒアドキュメント」といい、指定した文字列が入力されるまで標準入力からの入力を継続します。
以下を実行すると、標準入力(キーボードで入力した内容)が「result.txt」に保存され、標準入力に「end」という文字列が入力されるまで続きます。

$ cat > result.txt << "end"

関連ページ

【LinuC】試験対策と例題まとめ
LinuCの試験対策と例題(学習サイト)についてまとめました。
【LPIC入門】Linuxの基礎と試験範囲別の解説
LPICに従って、Linuxの基礎と試験範囲別の解説についてまとめました。
【Linuxコマンド入門】主なコマンドとサンプル集
Linuxコマンドの主な使い方とサンプル集について入門者向けにまとめました。
UNIX
スポンサーリンク

コメント