이것은 나에게 이해가 되지 않습니다.
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
?
답변1
리디렉션은 왼쪽에서 오른쪽으로 처리됩니다. 당신이 그렇게한다면
2>&1 1> /dev/null
첫 번째 리디렉션은 stderr
당시 가리키는 스트림(기본적으로 tty)을 가리킵니다. 별칭은 stdout
생성되지 않습니다 .stderr
stdout
그런 다음 stdout
Bitbucket으로 리디렉션합니다. 리디렉션은 stdout
이전 리디렉션에 영향을 주지 않습니다 stderr
. stderr
아직도 tty를 참조하고 있습니다.
그래서:
ls file_that_doesnt_exist 2>&1 1> /dev/null
터미널에 오류 메시지가 인쇄됩니다.
이것bash
리디렉션 문서 페이지에는 다음이 명시적으로 언급되어 있습니다.
리디렉션 순서가 중요합니다. 예를 들어 다음 명령은
ls > dirlist 2>&1
표준 출력 및 표준 오류를 파일의 디렉토리 목록으로 지정하고 명령은
ls 2>&1 > dirlist
파일의 디렉토리 목록에만 표준 출력을 지정합니다.표준 오류는 디렉토리 목록으로 리디렉션되기 전에 표준 출력에서 복사되기 때문입니다..