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(標準出力)は省略する事ができます。
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