니모닉 또는 시스템이 있습니까? 이것은 내가 항상 그것을 찾아야 만 몇 년 동안 나를 귀찮게했다
답변
C 프로그래머라면 &1
“주소 1″로 생각할 수 있으므로 2>&1
“파일 설명자 # 2를 # 1과 같은 위치로 리디렉션”이라고 읽습니다.
답변
“투투 원” ( “투” >
)은 “투투 원” 보다 논리적으로 의미가 있습니다. “그리고 하나”를 하나의 명사 (장소)로 생각하면 문맥 상 문법적으로 의미가 있습니다. “2 대 1″과는 더 어려워요. “1 대”를 하나의 것으로 간주해야합니다. 명사, 그리고 그것은 여전히 상황에 맞지 않을 것입니다.
답변
니모닉이 아니지만 다음과 같이 읽습니다.
0
stdin입니다.
1
stdout입니다.
2
stderr입니다.
>
에있다.
<
밖으로입니다.
&
파일 디스크립터입니다 (일부 쉘).
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
리디렉션이 여러 개인 명령 줄을 이해하려면 알아야 할 중요한 것은 리디렉션이 왼쪽에서 오른쪽으로 수행된다는 것입니다. 이에 대한 자세한 내용은 리디렉션 순서를 참조하십시오 .
답변
나는 그것이 항상 2-> 1임을 기억했다. Stderr to stdout.
중간 부분은 항상 어려운 부분이며, 나는 항상 날카로운 캐릭터가 온다는 것을 기억할 때까지 >
, 그리고 실제로는 쓸 수없는 캐릭터를 기억하기 전까지는 항상 엉망으로 만들었습니다 &
.
그러니 2&>1
항상2>&1
답변
FD2가 STDERR이라는 것을 이해하면 “아, STDOUT (FD1)을 보내는 곳마다 STDERR을 캡처하십시오”라고 생각할 수 있습니다.
답변
우리 대부분은 항상 기억하지 않기 때문에 내 동료와 나는 보통, “이 1보다 크다”라고 stderr
파일 기술자이다 2
하고 stdout
있다 1
리디렉션에 대한 다른 니모닉 그래서 (유닉스 / 리눅스에 특히 신규) stderr
정말 일을하지 않습니다 . 유일한 문제는 여전히 앰퍼샌드가 어디로 가는지 기억해야한다는 것입니다!