명령줄이 끝나면 I/O 리디렉션 바로 가기가 작동하지 않습니다.

명령줄이 끝나면 I/O 리디렉션 바로 가기가 작동하지 않습니다.

나는 I/O 리디렉션에 익숙합니다. &>지름길을 깨달았습니다 2>&1. 나는 그것이 또한 작동한다고 믿습니다 >&. 내가 모르는 뉘앙스가 있을 수 있습니다.

이를 사용할 때는 명령줄 중간에 있어야 합니다.

ls test.txt missing &> output.txt

그러나 긴 형식을 사용하는 경우 명령줄 끝에 있어야 합니다.

ls test.txt missing > output.txt 2>&1

바로가기를 맨 끝에 넣으려고 하면 오류가 발생합니다.

ls test.txt missing > output.txt &>
-bash: syntax error near unexpected token `newline'

왜 이런거야? 긴 형식 방법처럼 줄 끝이 아닌 인라인으로 사용해야 하는 바로가기가 다른 점은 무엇입니까?

답변1

&>word:

semantically equivalent to

>word 2>&1

그것은아니요혼자 있는 것과 마찬가지다 2>&1. 리디렉션과 마찬가지로산출, word(대상) 부분이 필요합니다. 2>&1실제로는다른 통신사이며 대상 word(여기서는 " 1")도 필요합니다.

리디렉션은 순차적으로 적용되며 다중 리디렉션이 허용됩니다. 명령을 다음과 같이 변경할 수 있습니다.

ls test.txt missing > output.txt &>tmp.txt

&>성과를 볼 수 있는 목적지를 제공합니다. 그것이 당신이 쓰려고 한다고 생각하는 것이고 오류는 두 번째 파일 이름을 볼 것으로 예상했지만 찾지 못했다고 말합니다.

관련 정보