모든 출력("stdout" 및 "stderr")을 리디렉션하지 않는 이유는 무엇입니까?

모든 출력("stdout" 및 "stderr")을 리디렉션하지 않는 이유는 무엇입니까?

파일 설명자가 어떻게 작동하는지 어느 정도 이해하고 있습니다 stdout. stderr그러나 때로는 모든 출력을 캡처하지 못하는 경우가 있는데 그 이유를 이해하려고 노력하고 있습니다. 예를 들어, 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인지 확인하고 stdout, stderr그렇지 않은 경우 예쁘게 인쇄된 자세한 상태 업데이트를 무시합니다.

관련 정보