初心者のWEBデザイン

HTML,CSS、その他WEBデザインに関する事を記述していきます。

bash ShellScript リダイレクト まとめ

bashでコマンドを実行するときに標準入出力の入力元と出力先を
置換することをリダイレクトと言います。

ファイルディスクリプタ

プロセスから開かれた全てのファイルには、ファイルディスクリプタ
呼ばれる番号が割り当てられます。
プロセスからファイルを参照する際の識別番号です。

名前 ファイルディスクリプタ
標準入力 0
標準出力 1
標準エラー出力 2

よくコマンドのエラーメッセージに使用される
2> /dev/nullの正体はまさにこのファイルディスクリプタ
エラーの出力(ファイルディスクリプタが2番)を/dev/null/
に書き込んでいます。
通常のファイルであればエラー出力が書き込まれるのですが
/dev/null/に書き込んでもデータは全てなくなる為、
結果としてエラーの出力もされず、書き込みもない状態となります。

/dev/null/の特徴
  • 読み込んでも何もデータは返されない
  • データを読み込んでも書き込まれるはなく消える

リダイレクトに関する記号表

記号 内容
< file 標準入力をfileに変更する
> file 標準出力をfileに変更する
>>file 標準出力をfileの末尾に追加する
> file noclobberの設定を無視して、標準出力をfileに変更する
f2> file 標準エラー出力をfileに変更する
2>> file 標準エラー出力をfileに変更する
2> file noclobberの設定を無視して、標準出力をfileに変更する
>&i 標準出力をファイルデゥクリプタi番のコピーにする
j>&i ファイルディスクリプタj番をファイルディクスリプタi番のコピーにする
&> file 標準出力と標準エラー出力の両方をfileに変更する(fileがあった場合は上書きされる)
&>> file 標準出力と標準エラー出力の両方をfileの末尾に追加する

※【>】は同名のfileがあった場合は、内容が全て書き換わってしまうので
使用する際には注意が必要です。