通常,コマンドはキーボード(標準入力)から入力され,結果は画面(標準出力) に表示される. しかし,コマンドの実行結果を用いて次の処理をしたいようなときに, 実行結果をファイルに出力できれば効率的に作業を行える. シェルはコマンドの入力や出力を切り替える機能をもっており, ここではリダイレクションとパイプの2種類について説明する.
リダイレクションは,ファイルの内容を標準入力として使用したり,
標準出力の内容をファイルに書き込むための機能である.
リダイレクションを使うことによって,
ファイルの内容をコマンドに入力したり,コマンドの
実行結果をファイルに書き込める.リダイレクションには,``<
''や
``>>
''を用いる.
ファイルからデータを読み込んでコマンドに実行させるには,``<
''を
用いる.``<
''の左側に実行するコマンドを,右側にコマンドに入
力する内容を書いたファイルの名前を指定する.
% [実行するコマンド] < [ファイル名]<RET>
>
''を用いる.
``>
''を用いたリダイレクションには次の3つの書式がある.
% [コマンド] > [出力するファイル名]<RET> % [コマンド] >> [出力するファイル名]<RET> % [コマンド] >& [出力するファイル名]<RET>
>&
''はコマンドの標準出力に加えて,標準エラー出力をファイルに
上書きする.これはコンパイル時のエラーなどをファイルに出力する場合などに用
いる.次の例では,lsコマンドの出力結果をdirectoryというファ
イルに書き込んでいる.なお``>
''を用いた場合,コマンドの実行結果
は表示されない.
% ls<RET> report.tex proposal.gif % ls > directory<RET> % less directory<RET> report.tex proposal.gif % _
パイプは,ある1つのコマンドの標準出力を次のコマンドの標準入力として使 用する際に用いる.
次の例では,ls -lの標準出力を次のlessコマンド (→)の標準入力として用いている.このよ うにすることで,lsコマンドの出力が1画面以上の長さにわたる場合に, 1画面ごとに止めて見られる.
% ls -l | less<RET>
&
''をつけると,コマンドの標準出力だけでなく標準エラー
出力も次のコマンドの入力として使える(表→).
% [コマンド1] | [コマンド2]<RET>
>!
'' (上書き)や``>>!
'' (追加)を用いる.