すべての出力(「stdout」と「stderr」)をリダイレクトしないのはなぜですか?

すべての出力(「stdout」と「stderr」)をリダイレクトしないのはなぜですか?

ファイル記述子がどのように機能するかをどの程度理解していますstdoutstderrしかし、時にはすべての出力をキャプチャすることはできませんが、その理由を理解しようとしています。たとえば、gitリポジトリに複製すると、次のような出力が得られます。

$ git clone [email protected]:Alex23rodriguez/MyRepo
Cloning into 'MyRepo'...
remote: Enumerating objects: 438, done.
remote: Counting objects: 100% (438/438), done.
remote: Compressing objects: 100% (319/319), done.
remote: Total 438 (delta 96), reused 410 (delta 68), pack-reused 0
Receiving objects: 100% (438/438), 13.09 MiB | 1.73 MiB/s, done.
Resolving deltas: 100% (96/96), done.

ただし、ファイルにstdoutリダイレクトすると予期しない結果が発生します。stderr

$ git clone [email protected]:Alex23rodriguez/MyRepo &> log
(no output)
$ cat log
Cloning into 'MyRepo'...

私の質問は、印刷された残りの行はどうなるかです。

ベストアンサー1

まったく印刷されません。git単に合計ファイル記述子がttyであることを確認しstdoutstderrそうでない場合はきれいに印刷された詳細な状態更新を無視します。

おすすめ記事