scriptlist=`ls $directory_/fallback_* 2> /dev/null`
コマンドの2>
部分の目的は何ですか?私はそれを省略してコマンドを実行しました、それはうまくいきます。
そして、lsの出力が/ dev/nullファイルに格納される場合、変数scriptlist
には正確に何が含まれますか。コードを実行すると、出力は変数にあり、ファイルnull
には何もありませんでした。 2
を削除すると、変数ではなくファイルに出力されます。このコード行が正確に何をしているのでしょうか?
ファイル記述子2
は標準エラーを表します。 (他の特殊ファイル記述子には、標準入力の0
と標準出力の1
が含まれます)。
2> /dev/null
は、標準エラーを/dev/null
にリダイレクトすることを意味します。 /dev/null
は、書き込まれたすべてを破棄する特別なデバイスです。
まとめると、このコード行はコマンドls $directory_/fallback_* 2> /dev/null
の標準出力を変数scriptlist
に格納し、標準エラーは破棄されます。
scriptlist=`ls $directory_/fallback_* 2> /dev/null`
行全体を囲んでいるのでls $directory_/fallback_* 2> /dev/null
バッククォートでは、 ls
コマンドの出力はscriptlist
変数に格納されます。
また、2>
は redirecting の出力で、stderr
から /dev/null
(どこにも)。
ここで「2」が正確に何をしているのか
ここで2
はSTDERR
を参照するファイル記述子です。
2> /dev/null
は、STDERR
がnullデバイスにリダイレクトされることを意味します /dev/null
。
あなたが言及した完全な行は、ls $directory_/fallback_*
によって変数STDOUT
に返された出力、つまりSTDERR
(scriptlist
を無視)を格納します。