本記事も収録 Linux magazine 2000年 5月号 1,390円 |
ディレクトリ内容を表示するのにlsコマンドを利用した。
USER$ ls /
lsコマンドを次のようにして使うと、その出力が端末でなく、sample.txtファイルに出力される。これをリダイレクトと呼ぶ。
USER$ ls / > sample.txt
>の代わりに>>を使うと、出力した内容が指定されたファイルの末尾に追加される。
USER$ ls /bin >> sample.txt
lsコマンドは通常、結果を端末(画面)に出力する。この端末は標準出力と呼ばれる。>と>>は表示先を標準出力から、ファイルへと切替えるための記号だ。この記号はlsが提供する機能ではなく、シェルの機能なので、標準出力に対して結果を書き出すすべてのコマンドに対して利用できる。
標準出力に対応して標準入力も用意されている。
catコマンドは、指定されたファイルの内容を標準出力に表示するコマンドであるが、入力ファイルを指定しないと、キーボードを入力とする。このキーボードが標準入力だ。標準入力からの入力を終了するには、行頭でCtrl-D(コントロールキーを押しながらDキー)を入力する。
USER$ cat hoge キーボードから入力した文字 hoge catコマンドの出力 fuga キーボードから入力した文字 fuga catコマンドの出力 Ctrl-D USER$
<を使うと、標準入力をファイルに切替えることができる。
USER$ cat < sample.txt
また、┃を使うと、コマンドの出力を標準入力として、別のコマンドに渡すことができる。この機能をパイプと呼んでいる。
次の例では、lsで表示した結果を、sortコマンドで並べかえている。
USER$ ls -aF1 | sort ../ ./ .Xdefaults .bash_history .bash_profile .bashrc .emacs : :
Linuxで提供されているコマンドを個別に見ると、それぞれは単純な動作しかしないものが多い。しかし、パイプや入出力の切替えをうまく使うと、複雑な処理であっても、簡単に実現できる。これもコマンドによるオペレーションの魅力だろう。
USER$ ls -aF1 | sort > sorted.lst