2> / dev / nullはどういう意味ですか?


回答:


348

>演算子は、通常、出力をファイルにリダイレクトしますが、デバイスに出力することもできます。>>を使用して追加することもできます。

数値を指定しない場合、標準出力ストリームが想定されますが、エラーをリダイレクトすることもできます

> filestdoutをファイルに
1> fileリダイレクトstdoutをファイルに
2> fileリダイレクトstderrをファイルに
&> fileリダイレクトstdoutとstderrをファイルにリダイレクト

/dev/nullnullデバイスであり、必要な入力を取得して破棄します。出力を抑制するために使用できます。


6
との間には違いが> /dev/null 2>&1あります&> /dev/null
アレクサンダーミルズ

13
今日、実際には2>&1古い構文があるとは思わ&>ないので、何年も前には機能しなかったでしょうが、両方とも同等です。
ウォーレンヒル

28

つまり、stderrブラックホールにリダイレクト(fd 2)します(コマンドの出力を破棄します)。

リダイレクトの一般的な使用例:

command > /dev/null 2>&1 &

commandバックグラウンドで実行し、破棄stdoutしてstderr

command >> /path/to/log 2>&1 &

commandstdoutとstderrを実行してログファイルに追加します。

Bash 4+では、より短い(ただし読みにくい)フォームが機能します

command &>> /path/to/log

3
> /dev/null 2>&1代わりに使用する正当な理由はあり&> /dev/nullますか?
クレイグマックイーン

7
@CraigMcQueen &>はBash 4の新機能であり、前者は従来の方法に過ぎません。私はそれに慣れています(覚えやすい)。
テリー王

上のコメントによると@CraigMcQueen この答え&> /dev/null一部のシェルでは動作しないかもしれないが、>を/ dev / null 2>&1は、すべてのPOSIX互換のシェルで動作します。
スタックアンダーフロー

3
なぜ2&1>ではなく2>&1ですか??
マリエンバート

1
それは構文:-)投稿価値質問がある実際です@marienbad fn>targetところ、fnファイル番号である(0-2は、一般的に、一部のプログラムは、より多くの数字を定義)とtarget接頭辞で-通常はファイル名ですが、ここで、別のファイル番号で&あります「ファイル名の代わりにファイル番号が必要」の構文。
toolforger

9

/dev/nullLinux / Unixではブラックホールとして扱われるため、これに何かを入れることはできますが、から戻すことはできません/dev/null

さらに、2>つまり>、stderr(つまり2)をブラックホール(つまり/dev/null)にリダイレクトしていることを意味します

あなたのコマンドは:

grep -i 'abc' content 2>/dev/null 

このような別のスラッシュで終了しようとしないでください- 2>/dev/null/(ディレクトリではありません)。


2

grep -i 'abc'コンテンツは、エラーを含むコンソールに表示される出力を生成します。

指定2>/dev/nullするとエラーが除外され、コンソールに出力されなくなります。

より詳細には:2はエラー記述子を表し、エラーが書き込まれます。デフォルトでは、コンソールに出力されます。

\> この場合、指定された場所に出力をリダイレクトします /dev/null

/dev/null 無視する出力を送信する標準のLinuxデバイスです。


簡潔で話題。いい答えだ。
セルギーコロディアズニー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.