command > /dev/null 2>&1 の意味
疑問
シェルスクリプトで下記のような記述に出会ったのでなんのことか調べてみた。
command > /dev/null 2>&1 # command は任意のコマンドのこと
調べた結果
Linuxコマンドので任意のcommand
を実行し、その際の標準出力と標準エラー出力を捨てることを意味しています。
各部分の意味は以下のとおりです。
command
:command
を実行>
:標準出力(stdout)をリダイレクトします。ここでは、/dev/null
にリダイレクトしています。/dev/null
:リダイレクト先。ここに送られたデータはすべて破棄されます。つまり、標準出力を捨てることになります。2>
:標準エラー出力(stderr)をリダイレクトします。&1
:標準出力へのリダイレクト先を指定します。この場合、標準出力(すでに/dev/null
にリダイレクトされている)と同じ場所にリダイレクトされます。つまり、標準エラー出力も捨てられます。
このコマンド全体で、command
を実行し、
その際に発生する標準出力と標準エラー出力を両方とも捨てることができます。これにより、コマンド実行時にコンソールに何も表示されなくなります。
command > /dev/null 2>&1
コマンドは、command
実行時にエラーが発生しても、エラーメッセージが表示されないようになります。
このコマンドの構成要素は、標準出力と標準エラー出力を /dev/null
にリダイレクトしているため、コマンド実行時にコンソールに何も表示されません。これは、スクリプト実行中に不要なエラーメッセージを表示しないようにするために役立ちます。