이것은 나에게 이해가되지 않습니다.
wibble > /dev/null 2>&1
나는 이것이 다음과 같으면 더 합리적이라고 생각합니다.
wibble 2>&1 > /dev/null
다른 말로
Commands Output Sendall STDERRORS to STDOUT then SEND it all to /dev/null
명령 재 지정 순서에 대한 생각은 무엇입니까 xxx > /dev/null 2>1
?
답변
리디렉션은 왼쪽에서 오른쪽으로 처리됩니다. 당신이 할 경우
2>&1 1> /dev/null
첫 번째 리디렉션은 해당 stderr
시점을 stdout
가리키는 스트림 (기본적으로 tty) 을 가리 킵니다. stderr
의 별칭을 만들지 않습니다 stdout
.
그런 다음 stdout
비트 버킷으로 리디렉션됩니다. stdout
리디렉션은 이전에 영향을주지 않습니다 stderr
리디렉션. stderr
여전히 당신의 tty를 참조하십시오.
그래서:
ls file_that_doesnt_exist 2>&1 1> /dev/null
터미널에 오류 메시지 만 인쇄합니다.
bash
재 문서 페이지가 명시 적으로 언급 :
리디렉션 순서가 중요합니다. 예를 들어
ls > dirlist 2>&1
명령을 실행하는 동안 표준 출력과 표준 오류를 파일 디렉토리로 보냅니다.
ls 2>&1 > dirlist
표준 출력이 dirlist로 리디렉션되기 전에 표준 오류가 표준 출력에서 복제 되었기 때문에 표준 출력 만 파일 dirlist로 보냅니다 .