質問: 2>&-、2> / dev / null、|&、&> / dev / nullと> / dev / null 2>&1の違い 違いを探すだけ 2>&- 2>/dev/null |& &>/dev/null >/dev/null 2>&1 tcsh、mkshなどのnon-bourne shellsとの移植性.
回答: 背景: a number 1 = standard out (i.e. stdout) a number 2 = standard error (i.e. stderr) 数値が明示的に指定されていない場合、number 1がシェル(bash)によって想定されます まず、これらの機能に取り組みましょう。参考として、 高度なbashスクリプトガイド を参照してください。機能2>&-これの一般的な形式はm>&-で、 "m"はファイル記述子番号です。これにより、参照されているファイル記述子の出力が閉じられます(つまり、 "m"。2>/dev/nullこれの一般的な形式はm>/dev/nullで、 "m"はファイル記述子番号です。これにより、ファイル記述子 "m"が/dev/nullにリダイレクトされます。2>&1これの一般的な形式はm>&nで、 "m"& "n"はファイル記述子番号です。ファイル記述子の出力 "m"と "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 man page を参照してください。あなたが尋ねたコマンドのうち、どれもcsh/tcshで直接サポートされていません。同様の関数を作成するには、異なる構文を使用する必要があります。