【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の試験対策と例題まとめ
LPICの試験対策と例題(学習サイト)についてまとめました。
【Linux超入門】システムの基礎とよく使うコマンドなど徹底解説
Linuxシステムの基礎とよく使うコマンドなどについて入門者向けに解説します。

コメント