UNIX コマンドによるプロセスのほとんどが標準出力(端末画面)に書き出されます、そしてその入力のほとんどは標準入力(キーボード)から受け取ります。 標準エラー出力というものもあり、プロセスはエラーメッセージを端末画面に書き出します。
私たちはファイルの内容を画面に書き出すために cat コマンドが使えることを知っています。
ファイルを指定せずに cat コマンドを実行してみます。
% cat
いくつか文字を入力してリターンキーを押してみましょう。最後に[コントロール]キーを押しながら [d] を押して入力を終えてください。(今後は[コントロール] + [d] を[^D] と表現します。)
何が起こりましたか?
cat コマンドにファイルを指定しなければ、標準入力(キーボード)から入力を読み取って、そしてファイルの終了(^D)を受け取ると、標準出力(端末画面)にコピーします。
UNIX ではコマンドの入力と出力をリダイレクトする(変える)ことができます。
記号 > を使ってコマンドの出力をリダイレクトします。果物の名称が書かれた list1 というファイルを作ってみます。次のように入力してください。
% cat > list1
果物の名前を入力してひとつずつ改行を入れ(リターンキーを押し)ます。
pear banana apple ^D
cat コマンドは標準入力(キーボード)を読み取りそして通常は端末画面に出力されるものを list1 ファイルに書き出します。
ファイルの内容を表示してみます。
% cat list1
上記の方法を使って list2 というファイルを作ってみましょう。ファイルの内容は次のフルーツの名前を書いてください orange, plum, mango, grapefruit 。ファイルが出来上がったら内容を表示して確認しましょう。
記号 >> を使うと標準出力をファイルに追記できます。 list1 にもっと多くの内容を追加します。
% cat >> list1
次のようにフルーツの名前を書きます。
peach grape orange ^D
ファイルの内容を表示します。
% cat list1
現在ふたつのファイルがあって、 list1 には6個のフルーツ、 list2 には4個のフルーツが書かれているはずです。
これから cat コマンドを使って list1 と list2 の内容を連結して biglist というファイルを作ります。
% cat list1 list2 > biglist
上記のコマンドは list1 と list2 の内容を読み取ってから、ファイル biglist にテキストを書き出しているのです。
新しいファイルの内容を表示します。
% cat biglist
記号 < を使えばコマンドの入力をリダイレクトすることができます。
sort コマンドはアルファベットまたは数字の順に一覧を並べ替えます。次のように入力してください。
% sort
動物の名前を入力してみます。ひとつずつリターンキーを押してください。
dog cat bird ape ^D
次のように出力されるでしょう。
ape bird cat dog
< を使えばキーボードに代わってファイルから入力することができます。フルーツの一覧を並べ替えます。
% sort < biglist
並べ替えられた結果が端末画面に表示されます。
並べ替えられた結果をファイルに出力してみます。
% sort < biglist > slist
slist の内容を cat コマンドで確認してみましょう。
このシステムに誰がいるか見てみましょう。次のように入力します。
% who
名前の分類されたリストを得る1つの方法は、次のようなコマンドを実行することです。
% who > names.txt % sort < names.txt
この方法は少し遅いやり方です。コマンドを終えれば names.txt という一時ファイルを削除することを忘れないようにしなければなりません。 そこで、 who コマンドの出力を sort コマンドの入力とする方法があります。パイプ(パイプラインとも言う)を使えばそれが実現できます。パイプの使用には垂直バー [|] を用います。
次のコマンドを入力してください。
% who | sort
先ほどと同じ結果が得られたはずです。しかも一時ファイルを使わず短時間で実行結果が得られるのです。
何人のユーザーがログインしているか見てみましょう。
% who | wc -l
コマンド | 解説 |
---|---|
command > file | 標準出力を file にリダイレクトする |
command >> file | 標準出力を file に追記する |
command < file | 標準入力を file に変える |
command1 | command2 | command1 の出力を command2 に入力としてパイプで送る |
cat file1 file2 > file0 | file1 と file2 を連結して file0 に送る |
sort | データを並べる |
who | ログイン中のユーザーの一覧を表示する |
この文書は UNIX Tutorial for Beginners から派生した文書です。 Creative Commons License の下で利用できます。
最終更新日: 2011年02月24日(木)