결과가 다른 경우 주문이 중요합니다. 첫 번째 예를 들어보십시오.
이렇게하면 표준 출력과 표준 오류가 모두 null로 리디렉션됩니다.
리디렉션 순서는 중요합니다. 예를 들어,
명령
ls > dirlist 2>&1
표준 출력 (파일 설명자 1)과 표준 오류
(파일 기술자 2)를 파일 dirlist에 보내고, 명령
ls 2>&1 > dirlist
표준 출력만을 파일 dirlist로 보냅니다. 왜냐하면 표준
표준 이전에 표준 출력 사본이 만들어지지 않았습니다.
출력이 dirlist로 리디렉션되었습니다.
리디렉션 순서, 즉 "& gt; 파일 2 & 1"대 "2 & 1 & 1"파일
명령에서 재 지정이 나타나는 위치는 중요하지 않지만
그들의 명령은 중요합니다. 왼쪽에서 오른쪽으로 설정됩니다.
2>&1 >file
일반적인 오류는 명령 2 & gt; 1 & gt;을 수행하는 것입니다. 파일을 stderr로 리다이렉트한다.
파일로 stdout. 무슨 일이 일어나는지 보자. 먼저
명령을 사용하는 경우 설명자는 다음과 같습니다.
--- +-----------------------+
standard input ( 0 ) ---->| /dev/pts/5 |
--- +-----------------------+
--- +-----------------------+
standard output ( 1 ) ---->| /dev/pts/5 |
--- +-----------------------+
--- +-----------------------+
standard error ( 2 ) ---->| /dev/pts/5 |
--- +-----------------------+
그러면 우리 쉘인 Bash는 2> & amp; 1이므로 1을 복제하고, 파일
설명자는 다음과 같습니다.
--- +-----------------------+
standard input ( 0 ) ---->| /dev/pts/5 |
--- +-----------------------+
--- +-----------------------+
standard output ( 1 ) ---->| /dev/pts/5 |
--- +-----------------------+
--- +-----------------------+
standard error ( 2 ) ---->| /dev/pts/5 |
--- +-----------------------+
맞습니다. 아무것도 바뀌지 않았습니다. 2는 이미 동일한 것을 가리키고있었습니다.
1. Bash는 & gt; 파일 및 따라서 stdout 변경 :
--- +-----------------------+
standard input ( 0 ) ---->| /dev/pts/5 |
--- +-----------------------+
--- +-----------------------+
standard output ( 1 ) ---->| file |
--- +-----------------------+
--- +-----------------------+
standard error ( 2 ) ---->| /dev/pts/5 |
--- +-----------------------+
그리고 그것은 우리가 원하는 것이 아닙니다.
>file 2>&1
이제 올바른 명령 & gt; 파일 2 & amp; 1을 살펴 보겠습니다. 우리는
이전 예와 Bash는 & gt; 파일:
--- +-----------------------+
standard input ( 0 ) ---->| /dev/pts/5 |
--- +-----------------------+
--- +-----------------------+
standard output ( 1 ) ---->| file |
--- +-----------------------+
--- +-----------------------+
standard error ( 2 ) ---->| /dev/pts/5 |
--- +-----------------------+
그런 다음 우리의 복제가 2> & 1 :
--- +-----------------------+
standard input ( 0 ) ---->| /dev/pts/5 |
--- +-----------------------+
--- +-----------------------+
standard output ( 1 ) ---->| file |
--- +-----------------------+
--- +-----------------------+
standard error ( 2 ) ---->| file |
--- +-----------------------+
또한, 1과 2는 모두 파일로 리디렉션됩니다.
n>&m
같이, 리디렉션 스트림n
어디로m
현재 . 스트림을 리디렉션하지 않음n
흐르다m
.