LoginSignup
2
0

More than 1 year has passed since last update.

LINUX パイプとリダイレクト

Posted at

はじめに

LINUX基本のメモ
LPIC101準拠

標準入出力

キーボードやディスプレイ、ファイルの書き出し等の入出力に伴うデータの流れをストリームと呼ぶ。
LINUXでは下記の3つがある。

番号 入出力名 デフォルト
0 標準入力 キーボード
1 標準出力 画面(端末)
2 標準エラー出力 画面(端末)

番号はファイルディスクリプタといい、OSがファイルを識別する番号である。

パイプ

コマンドやプログラムの出力結果を別のコマンドやプログラムに渡す事できる。
つまり、単純なコマンドも複数組み合わせることで複雑な処理が可能。
この時に使われるものがパイプで記号「 | 」で表す。

パイプの使用例

例:lsコマンドでhttpdを検索する場合

[root@localhost ~]# ps -aux | grep "httpd"
root       1226  0.0  0.4 426864  8296 ?        Ss   07:43   0:02 /usr/sbin/httpd -DFOREGROUND
apache     7144  0.0  0.4 428948  8460 ?        S    10:15   0:00 /usr/sbin/httpd -DFOREGROUND
apache     7145  0.0  0.4 428948  8428 ?        S    10:15   0:00 /usr/sbin/httpd -DFOREGROUND

teeコマンド

コマンドの実行結果をファイル保存しながら画面表示する。

書式:tee [オプション] ファイル名

項目名 説明
-a 上書きせずに追記する

使用例:lsで一覧を取得しテキスト出力。ファイル数を画面表示する

[root@localhost ~]# ls -l | tee ls_log | wc -l
11

リダイレクト

コマンドの実行結果を画面に表示せず、ファイル出力したい場合に使用する

・上書きする場合 
 書式: コマンド > 出力ファイル名
・追記する場合
 書式: コマンド >> 出力ファイル名

※どちらもファイルが存在しない場合は新規作成される

例:ファイル一覧を「log1」に出力する

[root@localhost ~]# ls -l > log1

・エラーを出力する場合はディスクリプタが異なるので番号を指定する

例:lsで存在しないコマンドを指定した場合の出力

[root@localhost ~]# ls aaa 2>log1

・入力のリダイレクト
標準入力を切り替えもできる。※ファイル入力する

例:text1.txtからlpicをgrepする

[root@localhost ~]# grep "lpic" < text1.txt

一覧

項目名 説明
コマンド > ファイル ファイル書き込み
コマンド < ファイル ファイル内容をコマンド入力に送る
コマンド >> ファイル ファイルに追記する
コマンド 2> ファイル 標準エラーを書き込む
コマンド 2>> ファイル 標準エラーを追記する
コマンド > ファイル2 >&1 実行結果とエラーを書き込む
コマンド >> ファイル2 >&1 実行結果とエラーを追記する
コマンド << 終了文字 終了文字が現れるまで標準入力へ送る
image.png コマンド1の内容をコマンド2に渡す

履歴

2021/8/30 作成

2
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0