2>&-, 2>/dev/null, |&, &>/dev/null および >/dev/null 2>&1 の違い

2>&-, 2>/dev/null, |&, &>/dev/null および >/dev/null 2>&1 の違い

ただ違いを探してみると

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

tcshBourneシェルではなくシェルへmkshの移植性。

ベストアンサー1

背景:

  • 番号1=標準出力(例:STDOUT)
  • 2回=標準エラー(例:STDERR)
  • 数値を明示的に指定しない場合番号1シェルによって仮定される

まず、その機能を見てみましょう。参考までに以下を参照してください。高度なバッシュスクリプトガイド

機能

2>&-

これの一般的な形態はですM>&-「中」ファイル記述子です。これにより、参照されたファイル記述子の出力が閉じます。「中」

2>/dev/null

これの一般的な形態はですM>/dev/null「中」ファイル記述子です。これにより、ファイル記述子がリダイレクトされます。「中」、到着する/dev/null

2>&1

これの一般的な形態はですM>&N「中」&「N」ファイル記述子番号。ファイル記述子の出力を結合します。「中」そして「N」単一ストリームとして。

|&

これは単なる略語です2>&1 |。 Bash 4に追加されました。

&>/dev/null

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

>/dev/null

これは単なる略語です1>/dev/null。ファイル記述子1(STDOUT)を/dev/null

bash以外の場所、tcsh、mkshなどに移植可能

csh私は外部の他のシェルをあまり扱っていませんでしたtcsh。 Bashのリダイレクト演算子と比較して、この2つの操作の私の経験によると、bashはこの点で優れています。よりtcsh のマニュアルページ詳細については。

csh / tcshはあなたが要求したコマンドを直接サポートしません。同様の関数を構成するには、別の構文を使用する必要があります。

おすすめ記事