살아가는 이야기
윈도우 표준오류 재지정(redirection 리디렉션) 본문
윈도우 명령프롬프트에서 표준출력(standard output)을 파일 out.txt로 재지정(redirection 리디렉션)하려면 다음과 같은 명령어를 사용하면 된다.
> 명령어 > out.txt
그런데 간혹 어떤 명령어는 표준오류(standard error)로 오류 메시지를 출력하기도 하는데, 표준 오류는 위 명령어로 저장할 수 없다. 이 때는 표준오류 스트림 번호를 사용해야 하는데, 표준오류 스트림 번호는 2번이다. 따라서 아래와 같이 err.txt에 재지정할 수 있다.
> 명령어 2> err.txt
구체적인 예로 set 명령어를 살펴보자. set 명령어는 환경변수를 지정하는 명령어다. set 명령어의 인수로 변수명만 주면 정의된 내용을 보여준다. 예컨대 다음 명령어는 path에 지정된 내용을 보여준다.
> set path
그런데 인수로 주어진 변수에 아무런 값도 지정되어 있지 않은 경우에는 다음과 같은 오류 메시지를 낸다.
> set hello
hello 환경 변수가 정의되지 않았습니다.
이 오류 메시지는 표준오류로 출력된 것이다. 따라서 다음과 같이 out.txt로 재지정해도 out.txt에는 아무런 내용이 저장되지 않으며, 오류 메시지는 여전히 스크린으로 출력된다.
> set hello > out.txt
오류 메시지를 저장하려면 다음과 같이 적어야 한다.
> set hello 2> err.txt
표준오류와 표준출력을 모두 한 파일에 저장하고 싶다면 다음과 같이 한다.
> set hello > out.txt 2>&1
이 명령어는 표준출력을 out.txt에 저장하되 표준오류를 표준출력과 묶어 달라(2>&1)는 뜻이다.
문득 오래 전에 유닉스(unix)를 배우던 때가 떠오른다.