回答:
1表し、標準出力(stdout)。2意味標準エラー(stderrを)。
したがって2>&1、標準出力がリダイレクトされる場所にも標準エラーを送信するように指示します。送信されるので/dev/null、出力をまったく無視することに似ています。
0(STDIN)、1(STDOUT)と2(標準エラー出力)が、実際にファイルディスクリプタているシェルはリダイレクトに彼らの前に置かアンパサンドが必要です。この場合、ファイル記述子を複製し、2つの情報ストリームを効果的にマージします。
curl http://www.google.com 2>/dev/nullここの「2」はstderrを意味するものであり、curlコマンドに渡す2番目のパラメーターではないことをコマンドラインはどのように認識しますか?
stderrストレートから/dev/null代わりに送信されます。あなたは試みることによって、実際にそれを見ることができるcurl、curl 1>/dev/nullとcurl 2>/dev/nullだけ出力の変化を見るために。繰り返しますが、アンパサンドはリダイレクトされるファイル記述子にのみ必要です。
バックグラウンドでフェッチhttp://www.google.comし、との両方を破棄します。stdoutstderr
curl http://www.google.com > /dev/null 2>&1 &
と同じです
curl http://www.google.com > /dev/null 2>/dev/null &
0、1および2標準のファイルを表す記述子でPOSIXのオペレーティングシステムを。ファイル記述子は、(基本的に)ファイルまたはソケットへのシステム参照です。
Cで新しいファイル記述子を作成すると、次のようになります。
fd = open("data.dat", O_RDONLY)
ほとんどのUnixシステムコマンドは、入力を受け取り、結果を端末に出力します。curl指定されたurl(google dot com)にあるものをすべて取得し、結果をに表示しstdoutます。

あなたのように言った<と>どこかに、ファイルのようにコマンドの出力をリダイレクトするために使用されています。
たとえば、でls > myfiles.txt、ls現在のディレクトリのコンテンツを取得し、>その出力をリダイレクトしますmyfiles.txt(ファイルが存在しない場合は作成され、それ以外の場合は上書きされますが、>>代わりに>ファイルに追加する代わりに使用できます)。上記のコマンドを実行すると、ターミナルに何も表示されないことに気付くでしょう。それは通常、Unixシステムでの成功を意味します。これをチェックしcat myfiles.txtて、ファイルの内容を画面に表示します。
最初の部分はを> /dev/nullリダイレクトしますstdout。これはcurlの出力です/dev/null(これについては先に説明します)に2>&1リダイレクトstderrしますstdout(リダイレクトされた/dev/nullので、すべてが送信されます/dev/null)。
左側が2>&1わかりますどのようなリダイレクトされ、右側がわかりますどこに。&区別するために右側に使用されているstdout (1)か、stderr (2)指定されたファイルから1か2。その2>1ため、新しいファイル(まだ存在しない場合)を作成して1、stderr結果をそこにダンプします。
/dev/nullは空のファイルで、書き込まれたものをすべて破棄するために使用されるメカニズムです。したがって、
の出力をcurl http://www.google.com > /dev/null効果的に抑制していcurlます。

しかし、なぜ端末に表示されるものがあるのですか?これは通常の出力ではなく curl、に送信されるデータでありstderr、ここではエラーだけでなく進行状況と診断情報を表示するために使用されます。
curl http://www.google.com > /dev/null 2>&1curlの出力curl情報とs進行情報の両方を無視します。その結果、端末には何も表示されません。
&最後には、あなたのようにコマンドを実行するためにシェルを伝える方法です仕事で背景。これにより、コマンドがバックグラウンドで非同期に実行されている間、プロンプトがすぐに戻ります。現在のジョブを確認するにjobsは、ターミナルに入力します。これは、システムで実行されているプロセスとは異なることに注意してください。topターミナルでこれらのタイプを表示するには。
/dev/null?curl少なくともどこかでの結果が役に立つと思いませんか?
私は次のように理解しています:
画面上のコマンドの出力およびエラー情報のみを読み取りたい場合は、次のように記述します。
curl http://www.google.com
また、後で確認するために、出力情報を端末画面ではなくファイルに保存したい場合は、次のように記述できます。
curl http://www.google.com > logfile
ただし、この方法では>、StdOutをにリダイレクトするだけなので、StdErr情報は省略されlogfileます。
したがって、実行に失敗したコマンドのエラー情報を気にする場合は、2>&1(StdErrをStdOutに折り畳むことを意味する)を使用してStdOutとStdErrを組み合わせる必要があるため、次のコマンドラインを記述できます:
curl http://www.google.com > logfile2>&1