web-dev-qa-db-ja.com

Unixコマンドラインでの2>の意味は何ですか?

scriptlist=`ls $directory_/fallback_* 2> /dev/null`

コマンドの2>部分の目的は何ですか?私はそれを省略してコマンドを実行しました、それはうまくいきます。

そして、lsの出力が/ dev/nullファイルに格納される場合、変数scriptlistには正確に何が含まれますか。コードを実行すると、出力は変数にあり、ファイルnullには何もありませんでした。 2を削除すると、変数ではなくファイルに出力されます。このコード行が正確に何をしているのでしょうか?

26
Smith

ファイル記述子2は標準エラーを表します。 (他の特殊ファイル記述子には、標準入力の0と標準出力の1が含まれます)。

2> /dev/nullは、標準エラーを/dev/nullにリダイレクトすることを意味します。 /dev/nullは、書き込まれたすべてを破棄する特別なデバイスです。

まとめると、このコード行はコマンドls $directory_/fallback_* 2> /dev/nullの標準出力を変数scriptlistに格納し、標準エラーは破棄されます。

18
Yu Hao
scriptlist=`ls $directory_/fallback_* 2> /dev/null`

行全体を囲んでいるのでls $directory_/fallback_* 2> /dev/nullバッククォートでは、 ls コマンドの出力はscriptlist変数に格納されます。

また、2>redirecting の出力で、stderrから /dev/nullどこにも)。

5

ここで「2」が正確に何をしているのか

ここで2STDERRを参照するファイル記述子です。

2> /dev/nullは、STDERRがnullデバイスにリダイレクトされることを意味します /dev/null

あなたが言及した完全な行は、ls $directory_/fallback_*によって変数STDOUTに返された出力、つまりSTDERRscriptlistを無視)を格納します。

4
devnull