이것은 나에게 이해가되지 않습니다.
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로 보냅니다 .