답변:
C 프로그래머라면 &1"주소 1"로 생각할 수 있으므로 2>&1"파일 설명자 # 2를 # 1과 같은 위치로 리디렉션"이라고 읽습니다.
니모닉이 아니지만 다음과 같이 읽습니다.
0stdin입니다.
1stdout입니다.
2stderr입니다.
>에있다.
<밖으로입니다.
&파일 디스크립터입니다 (일부 쉘).
2>&1
2 > & 1
stderr into file descriptor 1
redirect stderr into stdout
리디렉션 전에 파일 디스크립터를 엉망으로 만들면 변경 될 수 있습니다 ...
2>somefile 1>&2
2 > somefile 1 > &2
stderr into somefile and stdout into file descriptor 2
redirect stderr into somefile and stdout into somefile.
쓰면 2>&1"표준 오류는 표준 출력으로 간다"는 것입니다.
그것을 분해하자.
먼저 표준 오류는 2이고 표준 출력은 1입니다.
그래서 당신은 2무언가를 가지고 1있습니다.
"가다"가 쓰여집니다 >.
그래서 당신은 2>무언가를 가지고 있습니다 1.
2>filename표준 오류를에 보내는 것을 의미합니다 filename. 그러나이라는 파일로 보내지 않으려 고합니다 1. 이미 열려있는 파일 수와 같은 다른 것을 원합니다. 그게 다야 &.
그래서 2>&1.
당신이 어디에, 할당을하고있는 것처럼 당신은 또한 생각할 수 >등호처럼하고는 &유사한입니다 $, 비교 :
f=$1
2>&1
리디렉션이 여러 개인 명령 줄을 이해하려면 알아야 할 중요한 것은 리디렉션이 왼쪽에서 오른쪽으로 수행된다는 것입니다. 이에 대한 자세한 내용은 리디렉션 순서를 참조하십시오 .