FreeBSD QandA 609
Q. コマンドの実行結果をファイルに残したり、結果を別のコマンドに渡したい
と思うのですが、どのように操作するのでしょうか。
A. UNIX の Shell(シェル)にはリダイレクトというとても便利で柔軟な機能が
あります。コマンドの実行結果を別のコマンドの入力にしたり、ファイルに残
したりできます。この機能の利用方法は使用しているシェルによって若干異
なってきます。
1. 結果をファイルに記録する
csh, tcsh など
% make > file.log
sh, bash など
$ make > file.log
2. 標準エラー出力も記録する
csh, tcsh など
% make >& file.log
sh, bash など
$ make > file.log 2>&1
3. コマンドの結果を別のコマンドに渡したい
csh, tcsh など
% ls | more
sh, bash など
$ ls | more
4. エラー出力も渡したい
csh, tcsh など
% ls |& more
sh, bash など
$ ls 2>&1 | more
5. 画面を見ながらその結果を片っ端から記録したい
csh, tcsh など
% telnet hoge.hiyo.ac.jp |& tee file.log
sh, bash など
$ telnet hoge.hiyo.ac.jp 2>&1 | tee file.log
これでTELNETのログができます。
注) tee とは 標準入力からデータを読み込み、その内容を指定された
ファイルと 標準出力に出力するコマンドです。
詳しくは jman tee (日本語版 マニュアルの場合) を参照。
6. 画面を操作しながらその結果を片っ端から記録したい
script(1)コマンドは、シェルによらず動作出来るので、とても有用です。
% script file.log
これで画面への入力及び出力の全てを file.log に記録する事が出来ます。
ただし、Enter/C-p/C-nなどのシェルに対するキー入力も、コントロール
コードとして そのまま記録されてしまいます。
file.logへの記録を終えたいときは exitしてください。
間違い・追加情報を見付けた場合は、
修正案の投稿のしかた を読んだ上で、
QandA@jp.FreeBSD.org まで
お知らせください。