stdout과 stderr을 함께 리디렉션하는 것과 stdout을 리디렉션한 다음 stderr을 stdout이 있는 파일로 리디렉션하는 것

stdout과 stderr을 함께 리디렉션하는 것과 stdout을 리디렉션한 다음 stderr을 stdout이 있는 파일로 리디렉션하는 것

이 리디렉션의 차이점은 무엇입니까?

some-program &> some_file

이?

some-program > some_file 2>&1

답변1

In bashzshShell에는 둘 사이에 차이가 없습니다. 리디렉션은 &>filePOSIX 표준의 확장으로 구현된 구문 설탕이며 그 의미는 표준과 정확히 동일합니다 >file 2>&1.

비/인터프리터에 의해 실행되는 스크립트에서 리디렉션을 사용 하면 &>스크립트가 흥미로운 방식으로 중단될 수 있습니다. 와 은 서로 독립적으로 해석되기 때문입니다.bashzsh&>

some_command &>file

-bash/ 가 아닌 스크립트에서는 zsh다음과 결합됩니다.

some_command & >file

그리고

some_command &
>file

이는 some_command백그라운드 작업으로 시작하여 이름이 인 파일을 자르거나 생성합니다 file.

또한 관련:

답변2

두 번째 형태POSIX 호환, 모든 POSIX 셸에서 작동합니다.

첫 번째 형식은 정확히 동일하지만 축약된 형식(예: 두 가지 예를 들자면 Bash 및 Zsh)을 지원하는 셸에서만 작동하며 다른 형식(예: Dash, /bin/shDebian 및 그 파생 형식) 구현 에서는 실패합니다. ).

이식성이 중요한 경우에는 2단계 형식을 사용해야 합니다.

관련 정보