web-dev-qa-db-ja.com

Bashリダイレクト:ファイル記述子に追加(2 >>&1)

コマンドの出力(stdoutおよびstderr)を既存のファイルに追加しようとしています。

私がやろうとしていることは次のようなものです:

command >>file 2>>&1

問題はそれです 2>>&1はエラーをスローしますが、>>file 2>>file ではない。

だから、私はリダイレクトがどのように機能するのか、またはファイル記述子とは何か、その中に保存される情報と誤解していると思います。

要約すると、次の2つのコマンドの違いは何ですか?最初のコマンドは機能しませんが、2番目のコマンドは機能するのはなぜですか?

command >>file 2>>&1      #not working
command >>file 2>>file    #working

ありがとう

3
marolafm

ファイル記述子1(stdout)を設定してファイルに追加し、fd 2(stderr)をリダイレクトして、fd 1が行っていることを単純に実行します。

command >>file 2>&1

2>>&1がリダイレクト演算子ではないため、>>&でエラーが発生します。

Bashマニュアルの Redirections 、特にセクション3.6.5および3.6.8をお読みください

6
glenn jackman