살아가는 이야기

윈도우 표준오류 재지정(redirection 리디렉션) 본문

컴퓨터, 풀어그림

윈도우 표준오류 재지정(redirection 리디렉션)

우균 2012. 12. 6. 16:26

윈도우 명령프롬프트에서 표준출력(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)를 배우던 때가 떠오른다.

 

Comments