多くのメッセージや結果を出力するプログラムでは,出力結果をファイルに残しておきたい場合があります。 そんなときは,リダイレクト(direct は方向づけること。re-direct は向け直す)を使います。
./sample3 > out3.txt ./sample3 2> err3.txt
1つ目の例は,標準出力(エラーではない正常なメッセージ)をテキストファイル out3.txt に書き込む方法です。 記号 ">" が出力先を画面からファイルに切り替える「リダイレクト」を表わしています。 2つ目の例は,標準エラー出力(エラーメッセージ)のみをテキストファイル err3.txt に書き込む方法です。 "2>" は標準エラー出力のみをリダイレクトするという意味になります。 この例では,標準出力(エラーではないメッセージ)は画面に表示されます。
出力されたファイルはエディタで開いて,内容をじっくりと検討できます。 また,less コマンドを使うと,1ページずつ画面出力して確認できます。
出力結果をファイルではなく,別のコマンドに渡すためには,パイプを使います。 記号は "|" です。
./sample3 | less ./sample3 2>&1 | less
1つ目の例は,sample3 の標準出力を less コマンドに渡して, 1ページずつ画面表示するときに使います。 2つ目の例は,標準出力とエラー出力をまとめて less コマンドに渡しています。
たとえば,コンパイル時に大量のエラーが出て,画面の遥か彼方までメッセージが出力されたとき, 何がどうなっているのかわかりません。 エラーは先頭から順に解決していくのが常道ですから,困ってしまいます。こんなときは,
gcc -o sample3 sample3.c 2>&1 | lessとすると,エラーメッセージは1ページごとに表示され,スペースキーを押すごとに次のページが表示されていきます。 また,文字コード変換コマンド iconv は,リダイレクトを用いて次のように使います。
iconv -f SJIS -t UTF-8 元のファイル名 > 変換後のファイル名Shift-JIS で書かれたファイルを,UTF-8 に変換するために使います(f は from,t は to)。 なお,元のファイル名と変換後のファイル名は違うものにしましょう。でないとファイルの内容が消えてしまいます。 UNIX(Linux)のコマンドは,いろいろと奥が深いので,興味のある人は調べて見ましょう。
玉井 良則(分子科学講座)
総合研究棟5階 東棟