GNU/Linux >> Linux の 問題 >  >> Linux

2>&-、2> / dev / null、|&、&> / dev/nullと>/dev / null 2>&1の違いは?

違いを探すだけ

  • 2>&-
  • 2>/dev/null
  • |&
  • &>/dev/null
  • >/dev/null 2>&1

tcshのようなBourne以外のシェルとの移植性 、mksh 、など。

承認された回答:

背景:

  • ナンバー1 =標準出力(つまりSTDOUT)
  • 番号2 =標準エラー(つまり、STDERR)
  • 番号が明示的に指定されていない場合は、番号1 シェル(bash)によって想定されます

まず、これらの機能に取り組みましょう。参考のために、AdvancedBash-ScriptingGuideを参照してください。

機能

2>&-

これの一般的な形式はM>&-です。 、ここで「M」 ファイル記述子番号です。これにより、参照されているファイル記述子、つまり「M」の出力が閉じられます。 。

2>/dev/null

これの一般的な形式はM>/dev/nullです。 、ここで「M」 ファイル記述子番号です。これにより、ファイル記述子“ M”がリダイレクトされます 、/dev/nullへ 。

2>&1

これの一般的な形式はM>&Nです。 、ここで「M」「N」 ファイル記述子番号です。ファイル記述子の出力を組み合わせます「M」 および「N」 単一のストリームに。

|&

これは、2>&1 |の単なる略語です。 。 Bash4で追加されました。

&>/dev/null

これは、>/dev/null 2>&1の単なる略語です。 。ファイル記述子2(STDERR)と記述子1(STDOUT)を/dev/nullにリダイレクトします 。

>/dev/null

これは、1>/dev/nullの単なる略語です。 。ファイル記述子1(STDOUT)を/dev/nullにリダイレクトします 。

non-bash、tcsh、mkshなどへの移植性

csh以外の他のシェルについてはあまり扱っていません。 およびtcsh 。 bashのリダイレクト演算子と比較したこれら2つの経験では、bashはその点で優れています。詳細については、tcshのmanページを参照してください。

あなたが尋ねたコマンドのうち、どれもcsh/tcshによって直接サポートされていません。同様の関数を作成するには、さまざまな構文を使用する必要があります。


Linux
  1. [[$ a ==Z*]]と[$a==Z *]の違いは?

  2. / dev / stdin、/ dev / stdout、および/ dev / stderrはどの程度移植可能ですか?

  3. / sbin/nologinと/bin/ falseの違いは何ですか?

  1. ‘$の違い。 Foo」と「$./foo」??

  2. Linux の /dev/zero および /dev/null ファイルとは

  3. /dev/shm/ と /tmp/ はいつ使用する必要がありますか?

  1. Linux:/ dev / console、/ dev / tty、/ dev / tty0の違いは?

  2. /etc/crontab と crontab -e の違い

  3. /etc/hosts と /etc/resolv.conf の違い