
이 리디렉션의 차이점은 무엇입니까?
some-program &> some_file
이?
some-program > some_file 2>&1
답변1
In bash
과 zsh
Shell에는 둘 사이에 차이가 없습니다. 리디렉션은 &>file
POSIX 표준의 확장으로 구현된 구문 설탕이며 그 의미는 표준과 정확히 동일합니다 >file 2>&1
.
비/인터프리터에 의해 실행되는 스크립트에서 리디렉션을 사용 하면 &>
스크립트가 흥미로운 방식으로 중단될 수 있습니다. 와 은 서로 독립적으로 해석되기 때문입니다.bash
zsh
&
>
some_command &>file
-bash
/ 가 아닌 스크립트에서는 zsh
다음과 결합됩니다.
some_command & >file
그리고
some_command &
>file
이는 some_command
백그라운드 작업으로 시작하여 이름이 인 파일을 자르거나 생성합니다 file
.
또한 관련:
답변2
두 번째 형태POSIX 호환, 모든 POSIX 셸에서 작동합니다.
첫 번째 형식은 정확히 동일하지만 축약된 형식(예: 두 가지 예를 들자면 Bash 및 Zsh)을 지원하는 셸에서만 작동하며 다른 형식(예: Dash, /bin/sh
Debian 및 그 파생 형식) 구현 에서는 실패합니다. ).
이식성이 중요한 경우에는 2단계 형식을 사용해야 합니다.