パイプは二つ以上使うことによって3つ以上のコマンドを接続することができる。
また、リダイレクションとパイプは同時に使用できる。
あるコマンド(この場合はecho)によって ウインドウに出力されるデータ(testという文字列) を リダイレクション( > )によってdataというファイルに書き込んでいる。
# echo test <- echoは引数の文字列を標準出力に出力するコマンド test # echo test > data <- その出力をdataという名前のファイルに書き込む # cat data <- dataの中身を出力すると test <- echoの出力が書き込まれている # cat <- catだけで実行 I am a boy <- 入力が標準入力(キーボード)になる I am a boy <- 出力が標準出力に出力される Ctrl+d <- Ctrl+dで入力終り #
例えば、あるディレクトリのなかにあるファイルの個数を数えたいと思った時、どのようにすれば良いだろうか。 lsコマンドにはファイルの個数を数える機能はない。 しかしlsコマンドではファイル名は標準出力に出力されているのだから、その個数を他のコマンドで数えれば良い。 そのために入力されたデータの単語数を数えてくれるwcというコマンドを使用する。 この互いに関係の無い2つのコマンド(ここではlsとwc)をパイプ( | )で組み合わせることによって今まで存在しなかった機能(ファイルの個数を数える)が実現できる。
# ls <- lsはファイル名を標準出力に出力するコマンド data1 data2 data3 # wc data1 <- wcは引数にファイル名があるとそのファイルの行数・単語数・文字数を標準出力に出力するコマンド 32 64 182 <- data1は32行、単語64個、文字数182個(スペース、改行を含む) # wc <- wcだけで実行する This is a pen <- 入力がキーボード(標準入力)になる Ctrl+d <- Ctrl+dで入力終り 1 4 14 <- This is a penの行数(1)、単語数(4)、文字数(14) # ls | wc <- lsコマンドの出力結果をパイプを通してwcコマンドへ送る 1 3 18 <- 2番目の数字がファイルの個数 #