あるコマンドを実行した結果は、通常は、その端末エミュレータの画面に表示さ
れます。また、コマンド名を間違って、存在しないコマンドを入力した場合の
「Command not found.」や「コマンドが見つかりません.」というエラーも
画面に表示されます。ユーザーから見ると、同じ様に表示されますが、UNIX で
は、このふたつの表示は区別されています。コマンドが正常に動作して結果を表
示した場合は、標準出力という名前の出力を行ない、コマンドがエラー
になった場合は、標準エラー出力という名前の出力を行なっています。
通常は、標準出力も標準エラー出力も画面に結びつけられているので、区別でき
ないのです。標準出力や標準エラー出力を、画面以外のもの(通常はファイル)
に結びつけることをリダイレクション(redirection)と呼び、「>
」 や
「>>
」 などの記号を用います。
練習
3
以下の操作を行なって、標準出力と標準エラー出力が異なることを確認しましょ
う。また、「>
」と「>>
」の違いを理解しましょう。
% ls -l > ls1.txt (ls -l の出力を ls1.txt ファイルへ) % less ls1.txt (内容を確認) % lls -l > ls2.txt (間違って、lls としてしまった場合) lls: コマンドが見つかりません. % ls -l ls?.txt (ふたつのファイルの容量を確認) % cat ls2.txt % ls -l /usr/local/bin >> ls1.txt (ls -l の出力を、ls1.txt に追加) % less ls1.txt (内容を確認) % rm ls?.txt (ふたつのファイルを消去)
標準出力と標準エラー出力の他に、UNIX では標準入力というものがあ り、普通はキーボードに結びつけられています。wc(word count)というコマンド で、標準入力の使い方をみましょう。wc は、引数でファイルを指定した場 合はそのファイルに付いて、引数を与えないと標準入力についての、 行数、ワード数、文字数を標準出力に出力します。
% wc .cshrc 68 228 1777 .cshrc % wc 123 word (適当にキーボードから入力してリターンキー) gjd test (適当にキーボードから入力してリターンキー) 3 (適当にキーボードから入力してリターンキー) (Ctrl + d を押す) 3 5 20 (行数、ワード数、文字数を表示)Ctrl + d が、キーボードからの標準入力の終了キーです60。
標準入力と標準出力、標準エラー出力の 3つがあることがわかりました。あるコ
マンドの標準出力を、他のコマンドの標準入力に結びつけることを、パ
イプ(正確にはパイプライン、pipeline)と呼び、「|
」 の記号を使い
ます。wc の場合と同様に、UNIX の多くのコマンドが、引数としてのファイルが
省略された場合には、標準入力に対して処理をするように作成されています。
例えば、次のような使い方ができます。
% ls -l /usr/local/bin | less (ls -l の出力を less で表示) % ls /usr/local/bin | grep tex | wc -l (/usr/local/bin 以下で、tex をファイル名に含むファイルの数を出力) % grep includegraphics *.tex | wc -l (カレントディレクトリで、ファイル名が.texで終わるものすべてに ついて、 includegraphics を含む行数の総和を出力)
パイプは、いくつでもつなげることができます。また、grep とか sort とか uniq というコマンドを組み合せることが良く行なわれます。