Windows system >> Windowsの知識 >  >> Linuxシステムチュートリアル >> Linuxチュートリアル >> それから、シェル "> /dev /null 2> 1"について話しましょう

それから、シェル "> /dev /null 2> 1"について話しましょう

  

今日、私は自分の技術グループで別の質問をしましたので、一般的な方法で説明して記録しました。説明が明確かどうか見てみましょう。

シェルは次のように表示されることがよくあります。> /dev /null 2>& 1

コマンドの結果は%>

の形式で定義できます。次の組み合わせを分解します。'> /dev /null 2>& 1< 1" 5つの部分。

1:>リダイレクト先を表します。例:空のデバイスファイルの場合はecho" 123" /home/123.txt2:/dev/null標準エラー4の場合は3:2> &は等価、2>& 1を意味し、2の出力リダイレクトが標準出力の15:1と等価で、システムのデフォルトは1であるため、> /dev /nullと等価です。 1> /dev /null"

したがって、> /dev /null 2>&1;は' 1> /dev /null 2>& 1< 1<< p> 1> /dev /null:最初に、標準出力は空のデバイスファイルにリダイレクトされます、つまり、端末には情報が出力されません。 2>& 1:次に、標準出力は空のデバイスファイルにリダイレクトされているため、標準エラー出力は標準出力にリダイレクトされ、標準エラー出力も空のデバイスファイルにリダイレクトされます。

あなたは明らかですか、誰もがそれを理解しています!

ところで、この用途の利点を比較してください。

最も一般的な方法は次のとおりです。

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

違いはありますか。

最初のコマンド> file 2> fileは、コマンドによって生成された標準出力情報と間違った出力情報をfile.command> file 2> fileに送信することを意味します。このように、stdoutとstderrこれらは直接ファイルに送信され、ファイルは2回開かれるので、stdoutとstderrはお互いに上書きして、FD1とFD2を使ってファイルを取得します。 > file 2> 1コマンドはstdoutを直接fileに送信し、stderrがFD1パイプラインを継承した後にfileに送信されますが、このときfileは1回だけ開かれ、1つのパイプラインのみが使用されます。 FD1。stdoutとstderrの内容を含みます。 IOの効率から、前のコマンドの効率が後者のコマンドの効率よりも低いため、シェルスクリプトを作成するときは、コマンド> file 2>& 1を頻繁に作成します。

Copyright © Windowsの知識 All Rights Reserved