本文へスキップ

「コンピュータ入門」の授業では,数値計算プログラミングの基礎を習得します。

〒910-8507 福井市文京3-9-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)のコマンドは,いろいろと奥が深いので,興味のある人は調べて見ましょう。

バナースペース

コンピュータ入門担当

分子科学分野 玉井良則
総合研究棟5階東