2014/03/11

linux redirect 特殊変数

★/dev/null は、Unix系オペレーティングシステムにおけるスペシャルファイルの1つで、そこに書き込まれたデータを全て捨て(write システムコールは成功する)、読み出してもどんなプロセスに対してもデータを返さない(EOFを返す)。

★0,1,2
プログラムがアクセスするファイルや標準入出力などをOSが識別するために用いる識別子。0から順番に整数の値が割り当てられる。

 「0」:標準入力と呼ばれ、シェルへの入力元を表す。通常はキーボード空の入力になっている。
 「1」:標準出力と呼ばれ、シェルの結果の出力先を表す。通常は画面への出力となっている。
 「2」:標準エラー出力と呼ばれ、シェルで実行時に発生したエラーメッセージの出力先を表す。通常は画面への出力となっている。

★ $? 直前に実行されたコマンドの終了ステータスが設定される変数。
正常終了の場合は「0」、異常終了の場合は「0 以外」がセットされる。シェルスクリプトでは exit コマンドに与えた引数がそのシェルスクリプトの終了ステータスとなる。 例えば「exit 2」と書いたならば、そのシェルスクリプトの終了ステータスは「2」。
※ 関数の return も同様に、指定した引数がその関数の終了ステータスとなる。

★$! バックグラウンドで実行されたコマンドのプロセスID が設定される変数。
「 sleep 100 & 」のように & を付けて実行すると、そのコマンドはバックグラウンドで実行される。 上記の場合、「 $! 」には sleep コマンドの PID (プロセスID)がセットされている。


grep "2000/10" < temp.log
・ログファイルから 2000を検索

echo "Syntax Error" > &2
標準エラー出力に書き込む

find / -name ".txt" > result 2> error
検索結果をresultに、エラーをerrorに


-n   標準入力を/dev/nullからリダイレクトするように(つまり標準入力からの読み込みを禁止した状態に) します。ssh をバックグラウンドで走らせるときには、このオプションが不可欠です。