동시에 여러 리디렉션을 사용하는 경우 순서를 변경하면 차이가 발생합니까?
명령의 의미를 이해하는 방법은 무엇입니까? 리디렉션을 위한 링크 채널은 리디렉션을 왼쪽에서 오른쪽으로 또는 오른쪽에서 왼쪽으로 읽는 방식으로 구성되어 있습니까?
예를 들어
command 2>&1 > somefile
command > somefile 2>&1
감사드립니다!
답변1
예, 순서가 다르므로 왼쪽에서 오른쪽으로 읽어야 합니다.
command 2>&1 >somefile
stderr(2)를 stdout(터미널)의 현재 대상으로 리디렉션합니다. 그런 다음 stdout을 .so로 변경하여 somefile
stderr은 터미널로 이동하고 stdout은 파일로 이동합니다.
command >somefile 2>&1
stdout을 somefile
stdout(파일)과 동일한 대상으로 리디렉션한 다음 stderr를 stdout(파일)로 리디렉션하는 것을 의미합니다. 따라서 stderr과 stdout은 모두 somefile
.
이에 대한 설명은 다음과 같습니다.Bash 매뉴얼 섹션 3.6: 리디렉션.
답변2
man bash
설명하다:
리디렉션 명령을 실행하기 전에 셸에서 해석한 특수 기호를 사용하여 입력과 출력을 리디렉션할 수 있습니다. 리디렉션을 사용하여 현재 셸의 실행 환경에서 파일을 열고 닫을 수도 있습니다. 다음 리디렉션 연산자는 간단한 명령 앞이나 명령 내의 어느 위치에나 나타날 수 있거나 명령 뒤에 올 수 있습니다. 리디렉션은 표시된 순서대로 왼쪽에서 오른쪽으로 처리됩니다.
그리고
리디렉션 순서가 중요합니다. 예를 들어 다음 명령은
ls > dirlist 2>&1
표준 출력 및 표준 오류를 파일의 디렉토리 목록으로 지정하고 명령은
ls 2>&1 > dirlist
표준 출력을 디렉토리 목록으로 리디렉션하기 전에 표준 출력에서 표준 오류를 복사하므로 표준 출력을 파일 디렉토리 목록으로만 보냅니다.