12

データのリダイレクトについて/dev/null調べているので、簡単なテストを試しました:

ping a.b.c  # which results in an address not found

私がこれを試してみると:

ping a.b.c > /dev/null # prints the same error message as the one above

ただし、これを行うと:

ping a.b.c > /dev/null 2>&1 # The error message is gone

その最後の解決策は望ましい解決策ですが、これで何が起こっているの2>&1でしょうか? 2これまでの私の研究では、 が を表しstderr、 を1表すことが示唆されていstdoutます。stderrそのように読むと、ファイルを作成してリダイレクトしているように見えますstdoutか?

その場合、&そのコマンドの は何をしますか?

4

2 に答える 2

12

あなたは正しいです、2ですSTDERR1ですSTDOUT。あなた2>&1が言っているのは、「 ( )に行くものを ( ) に出力するSTDOUT」ということです。そしてその前に、あなたは に行くと言っていました。したがって、何も表示されません。例 1 と 2では、通常のリダイレクトではリダイレクトのみが行われるため、出力メッセージは に出力されるため、出力メッセージが表示されます。1STDERR2STDOUT/dev/nullSTDERRSTDOUT

また、リダイレクトを行うと、 は作成されませんSTDERR。プロセスには、作成時に常に と がありSTDERRますSTDOUT

于 2013-06-08T02:35:59.347 に答える