살아가는 이야기

bash에서 표준오류(stderr)를 파이프로 받기 본문

컴퓨터, 풀어그림

bash에서 표준오류(stderr)를 파이프로 받기

우균 2008. 5. 30. 18:02
내가 Unix를 배울 때는 Bourne shell이 기본이었다. 그냥 sh이라고 되어 있던 프로그램이다. 그런데 잠시 후 C shell이 등장해서 모두들 유행처럼 csh로 갈아탔다. 그리고 tcsh과 ksh이 등장했었다. 그런데 요즘 linux를 설치하면 bash가 기본으로 설정된다.

csh, tcsh에서는 표준 오류를 파이프로 받으려면

명령어 |& more

이렇게 하면 되었다. 그런데 bash에서는 조금 복잡해졌다. 2번 포트(표준오류)를 1번 포트(표준출력)와 합친 후에 이를 파이프로 받아야 한다. 그래서 다음과 같이 써야 한다.

명령어 2>&1 | more

표준오류만 파이프로 받으려면 꼼수를 써야 한다. 표준출력을 다른 곳으로 보내고 그 결과를 표준오류를 표준출력과 합친 다음에 표준출력을 파이프로 받아야 한다.

명령어 >/dev/null 2>&1 | more

물론 표준오류만 재지정(redirection)하려면 다음과 같이 하면 된다.

명령어 2> stderr.txt

핵심은 표준오류만 걸러내는 파이프가 없다는 것. 그래서 표준오류를 표준출력과 합치는 방법 2>&1을 기억해야 한다.

Comments