쉘 스크립트를 작성할 때 사람들이 I/O 리디렉션 연산자 뒤에 공백을 넣을지 여부에 많은 불일치가 있다는 것을 알았습니다. 예를 들어:
foo >bar.txt
작동하지만 다음도 작동합니다.
foo > bar.txt
....또는 심지어 이:
foo > bar.txt
사실 심지어Linux 문서 프로젝트 페이지실망스러울 정도로 일관성이 없습니다 2>&1
.불다터미널(공백 있음)이 한 곳에 있고 또 > filename
다른 곳에 있습니다!
나는 후자가 나에게 두 가지 다른 주장처럼 보이기 때문에 전자를 사용해 왔지만, 둘 사이에 차이점이나 추론이 있는지 궁금합니다.
무엇보다 >bar.txt
휴대성이 더 좋나요 ? > bar.txt
아니면 하나의 정의 사례에 하나의 구문을 사용해야 하고 다른 경우에는 다른 구문을 사용해야 합니까?
답변1
문자
<
,>
및&
는|
쉘에 특별하며 인용되지 않은 경우 모든 곳에서 특별한 의미로 인식됩니다.휴대용 리디렉션 연산자는
>
,>>
,>|
,>&
,<
,<<
,<<-
, 입니다<>
. 리디렉션 연산자 앞에는 파일 설명자를 나타내는 숫자가 올 수 있습니다. 이 경우 숫자와 리디렉션 연산자 사이에는 공백이 없어야 하며 숫자는 이전 단어(있는 경우)와 하나 이상의 공백으로 구분되어야 합니다. . 그렇지 않은 경우 리디렉션 연산자 주위의 따옴표 없는 공백은 선택 사항입니다.
바라보다Open Group 기본 사양 7호, 2018년판,셸 및 유틸리티, 제 2 장, "쉘 명령 언어"더 알아보기.