====== 06 Bash リダイレクション ====== ===== 書式 標準入出力のリダイレクション ===== > File 標準出力の内容をFileに書き込む >> File 標準出力の内容をFileに追加書きする。 >m ファイルディスプリタm番の内容を標準出力にコピーする。 (標準出力の内容をファイルディスプリタm番に向ける) >&- 標準出力のファイルディスプリタを閉じる < File 標準入力をFileの内容とする。 <&m ファイルディスプリタm番の内容を標準入力にコピーする。 (標準入力をファイルディスプリタm番からとする。) <&- 標準入力のファイルディスプリタを閉じる ===== 書式 ファイルディスプリタ番号を指定したリダイレクション ===== n> File ファイルディスプリタn番の内容をFileに書き込む n>&m ファイルディスプリタm番の内容をファイルディスプリタn番にコピーする n< File Fileのデータをファイルディスプリタn番の入力とする n<&- ファイルディスプリタn番を閉じる ===== ファイルディスプリタ番号 ===== 0(標準入力)と1(標準出力)は省略する事ができます。 |50|300|c |0|標準入力| |1|標準出力| |2|標準エラー| ===== 例 ===== === lsコマンドの結果をlistへ書き込む。 === $ ls > list === 既存のファイルに追加書き込み === dateコマンドをlistへ書き込んだ後、追加でlsの結果を書き込む。 $ date > list $ ls >> list === 1(標準出力)をlogに2(標準エラー)をerrlogに出力する。 === $ command > log 2> errlog === エラー(2)を/var/log/rsync.logへ、標準出力(1)を/dev/nullへ === * 6 * * * root /root/rsync.sh 2> /var/log/rsync.log 1> /dev/null === 1(標準出力)も2(標準エラー)も残さない。 === ・2>&1は1(標準出力)を2(標準エラー)にコピーするという意味 ・/dev/nullは捨てるという意味。 $ command >/dev/null 2>&1 ■NG例 ・この場合1(標準出力)を2(標準エラー)にコピーした後、1(標準出力)を捨てる為、2(標準エラー)は残る事になり、1(標準出力)も2(標準エラー)も残る事になる。 $ commnad 2>&1 >/dev/null {{tag>bash}}