本記事では、シェルスクリプトでの標準入出力のリダイレクトについてまとめる。
標準出力は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 コメント:
コメントを投稿