Linuxユーザの立場から、役立つ情報や困ったときの解決方法を分かりやすく、かつ簡潔に記事にまとめています。主に、Ubuntu 8.04(→9.04)やCentOS 5.2(→5.3)で確認したことですが、他のディストリビューションでも応用できると思います。内容は(1)設定ファイルの書き方(2)役立つソフトウェア紹介やインストール方法(3)便利なコマンドの使い方や活用例(4)困ったときの解決方法です。このページの末尾にキーワード別で記事を分類してあります。また、真上の「ブログ検索」フォームからブログ内の記事を検索できます。

2008年10月26日日曜日

ファイルディスクリプタとリダイレクト このエントリーを含むはてなブックマーク

本記事では、シェルスクリプトでの標準入出力のリダイレクトについてまとめる。

標準出力はfile.txtに書き込まれる。(標準エラー出力は画面に表示される)

$ command1 >  file.txt

標準出力はfile.txtの末尾に追加する形で書き込まれる。

$ command1 >>  file.txt

標準出力はfile.txtに書き込まれ、標準エラー出力はerr.txtに書き込まれる。

$ command1 > file.txt 2> err.txt

標準出力とエラー出力はともにfile.txtに書き込まれる。

$ command1 > file.txt  2>&1

(注)最初に>file.txtが評価される。command1の標準出力がfile.txtに書き込まれる。次に、command1の標準エラー出力が標準出力に向けられる。この時点で標準出力=file.txtである!ので、標準エラー出力はfile.txtに書き込まれる。

標準エラー出力は画面に表示され、標準出力はfile.txtに出力される。

$ command1 2>&1 > file.txt

(注)最初に2>&1が評価される。そのとき、command1の標準エラー出力は標準出力に向けられる。この時点で標準出力=画面である!ことに注意する。その後に、command1の標準出力はfile.txtに書き込まれる。

まず、command1の標準出力がcommand2の標準入力に結合される。そして、command1の標準エラー出力は標準出力に向けられる。すなわち、標準出力とエラー出力がともにcommand2に渡される。

$ command1 2>&1 | command2

(注)まず初めにパイプでコマンド同士の入出力が結合される!その後にリダイレクトが評価される。

参考サイト:「シェルを使おう -応用編-」に非常に分かりやすい説明が載っている。

0 コメント:

キーワード

キーワード別に記事を分類してあります。クリックすると各キーワードに該当する記事たちが表示されます。

筆者について

自分の写真
趣味はコンピュータ、音楽、写真などです。