このページをはてなブックマークに追加このページを含むはてなブックマーク このページをlivedoor クリップに追加このページを含むlivedoor クリップ

目次

リダイレクト

 UNIXではコマンドへの入力や結果の出力、エラーの出力をする場所が標準で設定されている。

標準入力入力を行う場所。キーボード
標準出力処理結果の出力を行う場所。ディスプレイ
標準エラー出力エラーの出力を行う場所。ディスプレイ

リダイレクトの種類

標準入力のリダイレクト

  • コマンドの処理結果などをファイルに保存し、操作の記録を残すなどの使い方ができる。

標準エラー出力のリダイレクト

  • エラーの状況をファイルに保存し、後で原因を解明するなどの使い方ができる。

例:標準出力と標準エラー出力のリダイレクト(上書き保存)

$ コマンド >& ファイル
$ コマンド > ファイル 2> &1

標準入力のリダイレクト

  • キーボードの代わりにファイルからの入力を行える。
  • 長いデータの入力などに便利。

2>&1

  • bashの場合、">&"で出力ファイルディスクリプタ(記述子)の複製を行う。
    • UNIXではファイルディスクリプタとして多くの場合0,1,2が使用される(シェルで予約されている)。
      • 0は入力、1は通常のメッセージ出力、2はエラーメッセージの出力となる。
    • そのため、"2>&1"は2番のファイルディスクリプタを1番のファイルディスクリプタにするという意味になる。

例:

$ command > /dev/null

 commandの普通のメッセージを/dev/nullというファイル(ここに出力されるとすべて捨てられる)に出力される。

$ command > /dev/null 2>&1

[注意]/dev/nullを記述する位置は"2>&1"の前になる。 ◇

 commandからのすべてのメッセージを捨てられることを意味する。つまり、エラーであろうがなかろうが出力されるメッセージはない。 ◇

参考文献

  • 『基本からわかるUNIX/Linuxコマンドの使い方』