違いを探すだけ
-
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によって直接サポートされていません。同様の関数を作成するには、さまざまな構文を使用する必要があります。