「UNIX/パイプ・リダイレクション」の編集履歴(バックアップ)一覧はこちら
「UNIX/パイプ・リダイレクション」(2011/03/08 (火) 22:51:49) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
&topicpath()
#contents
----
*■パイプ( "|" ) と リダイレクション( "<" ">" )
パイプ( "|" )とリダイレクション( "<" ">" )は
標準入力・標準出力・標準エラーを変更するために使う
**標準入力/標準出力/標準エラー
|BGCOLOR(#0AA):入出力|BGCOLOR(#0AA):装置|
|標準入力|キーボード|
|標準出力|ディスプレイ|
|標準エラー|ディスプレイ|
**コマンド
|BGCOLOR(#0AA):コマンド|BGCOLOR(#0AA):内容|
|(コマンド1) &bold(){|} (コマンド2) |[パイプ]&br()コマンド1の出力をコマンド2の入力にする|
|(コマンド) &bold(){>} (ファイル名) |[標準出力の変更]&br()コマンドの標準出力を(ファイル名)に出力する|
|(コマンド) &bold(){>>} (ファイル名) |[標準出力の変更(追記)]&br()コマンドの標準出力を(ファイル名)に出力する|
|(コマンド) &bold(){2>} (ファイル名) |[標準エラーの変更]&br()コマンドの標準エラーを(ファイル名)に出力する|
|(コマンド) &bold(){<} (ファイル名) |[標準入力の変更]&br()(ファイル名)の中身を標準入力の変わりにコマンドに渡す|
|(コマンド) &bold(){2>&1} |標準エラーと標準出力をひとまとめにする|
**&bold(){★パイプ "|"★ lsコマンド、headコマンド、tailコマンドを用いた例}
|BGCOLOR(#BDD):コマンド|BGCOLOR(#BDD):内容|
| ls |カレントディレクトリにあるファイル名を表示|
| head -n &italic(){(ファイル名)} |&italic(){(ファイル名)}の内容を先頭からn行表示|
| tail -n &italic(){(ファイル名)} |&italic(){(ファイル名)}の内容を末尾からn行目以降が表示|
$ ls -l
total 12 ←ここから
-rw-r--r-- 1 hoge hoge 4 xxxx-xx-xx xx:xx aaa.txt
-rw-r--r-- 1 hoge hoge 4 xxxx-xx-xx xx:xx bbb.txt
-rw-r--r-- 1 hoge hoge 4 xxxx-xx-xx xx:xx ccc.txt ←ここまでがls -lコマンドの出力
$ ls -l | head -2
total 12
-rw-r--r-- 1 hoge hoge 4 xxxx-xx-xx xx:xx aaa.txt ←先頭から2行目まで出力される
$ ls -l | tail -3
-rw-r--r-- 1 hoge hoge 4 xxxx-xx-xx xx:xx aaa.txt ←末尾から3行目以降が出力される
-rw-r--r-- 1 hoge hoge 4 xxxx-xx-xx xx:xx bbb.txt
-rw-r--r-- 1 hoge hoge 4 xxxx-xx-xx xx:xx ccc.txt
**&bold(){★リダイレクション">" ">>" "2>"★ echoコマンド、catコマンドを用いた例}
|BGCOLOR(#BDD):コマンド|BGCOLOR(#BDD):内容|
| echo &italic(){(内容)} |&italic(){(内容)}を標準出力に出力|
| cat &italic(){(ファイル名)} |&italic(){(ファイル名)}の内容を標準出力に出力|
■echo (内容) :(内容)を標準出力(ディスプレイ)に出力)
$ echo aaa
aaa ←ディスプレイにaaaが出力される
■echo (内容) > (ファイル名) :(内容)を(ファイル名)に出力 ※ディスプレイには出力しない
$ echo aaa > ttt.txt ←ttt.txtにaaaが書き込まれ、ディスプレイにaaaが出ない
$ cat ttt.txt ←ttt.txtの内容を見るとaaaが書き込まれている
aaa
■echo (内容) >> (ファイル名) :(内容)を(ファイル名)に追記 ※ディスプレイには出力しない
$ cat ttt.txt
aaa ←aaaと書き込まれているttt.txtファイル
$ echo bbb >> ttt.txt
$ cat ttt.txt
aaa ←もともと書き込まれていたaaaのあとに
bbb ←bbbが追記される
■cat (存在しないファイル名) :エラーが標準エラー(ディスプレイ)に出力
$ cat nnn.txt
cat: nnn.txt: No such file or directory ←エラーがディスプレイに出力される
■cat (存在しないファイル名) 2> (ファイル名) :エラーが(ファイル名)に出力 ※ディスプレイには出力しない
$ cat nnn.txt 2> eee.txt ←エラーが画面に出力されない
$ cat eee.txt
cat: nnn.txt: No such file or directory ←eee.txtにエラーが書き込まれる
**&bold(){★リダイレクション"<"★ 例}
**いろいろな組み合わせ例
tail -100 xxxx.log | head -50 > xxxx.out
↑xxxx.logの後ろから100行目から以降の50行をxxxx.outに切り出す
grep ^000 xxxx.log | sed "s/aaa/bbb/g"
↑xxxx.logの中から000で始まる行を探しその行の"aaa"を"bbb"に書き換えて画面表示
./a.out |tee xxxx.log
↑a.outを実行し、ディスプレイに表示される標準出力をxxxx.logにも書き込む
ls -1 | wc -l
↑カレントディレクトリのファイル数を表示させる
(ls -1でカレントディレクトリのファイルを1行に1個表示させた結果を
wc -l コマンドに渡す。wc -lは入力されたファイル(=今回はls -1の内容)の行数を表示)
*■``
ついでに `` を紹介しておきます
シェルスクリプトでよく使います
$./a.out
Hello,World
./a.outの結果をls -lコマンドに渡す
$ ls -l `./a.out`
ls: Hello,World: No such file or directory
./a.outの結果を変数に渡す
$ arg=`./a.out`
$ echo $arg
Hello,World
----
&topicpath()
----
&topicpath()
#contents
----
*■パイプ( "|" ) と リダイレクション( "<" ">" )
パイプ( "|" )とリダイレクション( "<" ">" )は
標準入力・標準出力・標準エラーを変更するために使う
**標準入力/標準出力/標準エラー
|BGCOLOR(#0AA):入出力|BGCOLOR(#0AA):装置|
|標準入力|キーボード|
|標準出力|ディスプレイ|
|標準エラー|ディスプレイ|
**コマンド
|BGCOLOR(#0AA):コマンド|BGCOLOR(#0AA):内容|
|(コマンド1) &bold(){|} (コマンド2) |[パイプ]&br()コマンド1の出力をコマンド2の入力にする|
|(コマンド) &bold(){>} (ファイル名) |[標準出力の変更]&br()コマンドの標準出力を(ファイル名)に出力する|
|(コマンド) &bold(){>>} (ファイル名) |[標準出力の変更(追記)]&br()コマンドの標準出力を(ファイル名)に出力する|
|(コマンド) &bold(){2>} (ファイル名) |[標準エラーの変更]&br()コマンドの標準エラーを(ファイル名)に出力する|
|(コマンド) &bold(){<} (ファイル名) |[標準入力の変更]&br()(ファイル名)の中身を標準入力の変わりにコマンドに渡す|
|(コマンド) &bold(){2>&1} |標準エラーと標準出力をひとまとめにする|
**&bold(){★パイプ "|"★ lsコマンド、headコマンド、tailコマンドを用いた例}
|BGCOLOR(#BDD):コマンド|BGCOLOR(#BDD):内容|
| ls |カレントディレクトリにあるファイル名を表示|
| head -n &italic(){(ファイル名)} |&italic(){(ファイル名)}の内容を先頭からn行表示|
| tail -n &italic(){(ファイル名)} |&italic(){(ファイル名)}の内容を末尾からn行目以降が表示|
$ ls -l
total 12 ←ここから
-rw-r--r-- 1 hoge hoge 4 xxxx-xx-xx xx:xx aaa.txt
-rw-r--r-- 1 hoge hoge 4 xxxx-xx-xx xx:xx bbb.txt
-rw-r--r-- 1 hoge hoge 4 xxxx-xx-xx xx:xx ccc.txt ←ここまでがls -lコマンドの出力
$ ls -l | head -2
total 12
-rw-r--r-- 1 hoge hoge 4 xxxx-xx-xx xx:xx aaa.txt ←先頭から2行目まで出力される
$ ls -l | tail -3
-rw-r--r-- 1 hoge hoge 4 xxxx-xx-xx xx:xx aaa.txt ←末尾から3行目以降が出力される
-rw-r--r-- 1 hoge hoge 4 xxxx-xx-xx xx:xx bbb.txt
-rw-r--r-- 1 hoge hoge 4 xxxx-xx-xx xx:xx ccc.txt
**&bold(){★リダイレクション">" ">>" "2>"★ echoコマンド、catコマンドを用いた例}
|BGCOLOR(#BDD):コマンド|BGCOLOR(#BDD):内容|
| echo &italic(){(内容)} |&italic(){(内容)}を標準出力に出力|
| cat &italic(){(ファイル名)} |&italic(){(ファイル名)}の内容を標準出力に出力|
■echo (内容) :(内容)を標準出力(ディスプレイ)に出力)
$ echo aaa
aaa ←ディスプレイにaaaが出力される
■echo (内容) > (ファイル名) :(内容)を(ファイル名)に出力 ※ディスプレイには出力しない
$ echo aaa > ttt.txt ←ttt.txtにaaaが書き込まれ、ディスプレイにaaaが出ない
$ cat ttt.txt ←ttt.txtの内容を見るとaaaが書き込まれている
aaa
■echo (内容) >> (ファイル名) :(内容)を(ファイル名)に追記 ※ディスプレイには出力しない
$ cat ttt.txt
aaa ←aaaと書き込まれているttt.txtファイル
$ echo bbb >> ttt.txt
$ cat ttt.txt
aaa ←もともと書き込まれていたaaaのあとに
bbb ←bbbが追記される
■cat (存在しないファイル名) :エラーが標準エラー(ディスプレイ)に出力
$ cat nnn.txt
cat: nnn.txt: No such file or directory ←エラーがディスプレイに出力される
■cat (存在しないファイル名) 2> (ファイル名) :エラーが(ファイル名)に出力 ※ディスプレイには出力しない
$ cat nnn.txt 2> eee.txt ←エラーが画面に出力されない
$ cat eee.txt
cat: nnn.txt: No such file or directory ←eee.txtにエラーが書き込まれる
**&bold(){★リダイレクション"<"★ 例}
**いろいろな組み合わせ例
tail -100 xxxx.log | head -50 > xxxx.out
↑xxxx.logの後ろから100行目から以降の50行をxxxx.outに切り出す
grep ^000 xxxx.log | sed "s/aaa/bbb/g"
↑xxxx.logの中から000で始まる行を探しその行の"aaa"を"bbb"に書き換えて画面表示
./a.out |tee xxxx.log
↑a.outを実行し、ディスプレイに表示される標準出力をxxxx.logにも書き込む
ls -1 | wc -l
↑カレントディレクトリのファイル数を表示させる
(ls -1でカレントディレクトリのファイルを1行に1個表示させた結果を
wc -l コマンドに渡す。wc -lは入力されたファイル(=今回はls -1の内容)の行数を表示)
*■``
ついでに `` を紹介しておきます
シェルスクリプトでよく使います
$./a.out
Hello,World
./a.outの結果をls -lコマンドに渡す
$ ls -l `./a.out`
ls: Hello,World: No such file or directory
./a.outの結果を変数に渡す
$ arg=`./a.out`
$ echo $arg
Hello,World
----
&topicpath()
----
表示オプション
横に並べて表示:
変化行の前後のみ表示: