====== 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}}