本文へスキップ

計算機による "物理実験" - 物理工学実験III(化学物理1)

リダイレクトとパイプRE-DIRECT & PIPE

画面出力をファイルに書き込む(リダイレクト)

多くのメッセージや結果を出力するプログラムでは,出力結果をファイルに残しておきたい場合があります。 そんなときは,リダイレクト(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)のコマンドは,いろいろと奥が深いので,興味のある人は調べて見ましょう。

物理工学実験III(化学物理)担当

玉井 良則(分子科学講座)
総合研究棟5階 東棟