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