初心者目線のLPIC講座 > パイプとリダイレクト > 出力リダイレクト
パイプとリダイレクト出力リダイレクト
「>」や「>>」という記号を使うと、標準出力を画面からファイルに変更する事ができ、コマンドの実行結果を保存することができます。これらの記号を「リダイレクト」といいます。
「>」を使うと上書きでファイルに書き込みます。1つ例をあげます。ちなみに「$」はコマンドプロンプト表示を意味していますので、入力しなくて結構です。
$ ls -l > txtfile
これを実行すると、「ls -l」コマンドを実行した結果が「txtfile」というファイルに書き込まれます。
更にこのファイルに追記したいという時は「>>」を使います。
$ ls -l >> txtfile
そして、例外になりますが、「2>」や「2>>」という記号を使うと、上記の標準出力に変わって「標準エラー出力」、つまり処理結果がエラーだった時のメッセージをファイルに保存する事ができます。
例えば、「lpic-site」というファイルが存在しないにもかかわらず、「ls」コマンドでそのファイルを表示させたとしましょう。
$ ls lpic-site
と入力すると、
ls: lpic-site: No such file or directory
当然、こんな表示になります。
これを先ほどの「2>」を使って、エラー結果を「error-txt」に書き込んでみましょう。
$ ls lpic-site 2> error-txt
と入力すると、
ls: lpic-site: No such file or directory
ここで「cat」コマンドで「error-txt」の内容を表示させてみると、
$ cat error-txt
ls: lpic-site: No such file or directory
と、表示されます。
では最後に「出力リダイレクト」の記号をまとめます。
Command > file・・・コマンドの標準出力をファイルに書き込む
Command >> file・・・コマンドの標準出力をファイルに追加
Command 2> file・・・コマンドの標準エラー出力をファイルに書き込む
Command 2>> file・・・コマンドの標準エラー出力をファイルに追加
Command > file 2>&1・・・コマンドの標準出力と標準エラー出力をファイルに書き込む
Command >> file 2>&1・・・コマンドの標準出力と標準エラー出力をファイルに追加
最後の2つは説明しませんでしたが、要はこのリダイレクト「2>&1」を最後に追加すると、処理結果が正常かエラー、どちらの場合になってもファイルに書き込んでくれます。
「1」や「2」といった番号は、「ファイル記述子」といって、「1」が標準出力、「2」が標準エラー出力を意味しています。真中の「>&」は、左側に書かれたファイル記述子の出力を右側に書かれたファイル記述子の出力に変更する記号ですが、ここではとにかく「処理結果(正常かエラー)をファイルに保存する」ものだと考えて良いと思います。
ちなみに、処理結果が正常な場合とエラーの場合で、保存するファイルを分けたい場合は、
Command 1> file 2> errorfile
のように指定すると良いです。スポンサードリンク