레이블이 redirection인 게시물을 표시합니다. 모든 게시물 표시
레이블이 redirection인 게시물을 표시합니다. 모든 게시물 표시

Linux/Windows 프로그램의 stdout stderr 함께 출력하기

다음과 같은 redirection(스트림을 방향을 변경하는) 연산자를 사용할 수 있다.
< : 입력하기
> : 출력하기
>> : 출력하기(출력 대상의 내용에 이어붙이기)
0 : 표준 입력 장치(stdin)
1 : 표준 출력 장치(stdout)
2 : 표준 에러 장치(stderr)

program.exe 라는 프로그램이 있으면,

예1)
stdout 만 파일로 저장하여 보고 싶다면
program > result.txt   또는
program >> result.txt  (기존result.txt 파일 뒤에 붙이기)

예2)
stderr 만 파일로 저장하여 보고 싶다면
program 2> result.txt

예3)
2>&1 : stderr 를 stdout 으로 리다이렉션
아래와 같이하면과 stdout, stderr 를 /dev/null 한번에 보낼 수 없다.
# rm -fv exist_file not_exist_file 2>&1 /dev/null
다음과 같이 /dev/null 뒤에 2>&1 을 명시해서 stdout, stderr 리다이렉트할(버릴) 수 있다.
fd(/dev/null)이 먼저 파악되어 stdout > fd 로 갈 수 있도록 한 상태에서, stderr(2) > stdout(1) 로 보내야 한다.
rm -fv exist_file > /dev/null 2>&1
# rm -f 옵션을 사용하면 없는 파일도 에러메시지 없이 동작해서 뺏음
rm -v not_exist_file > /dev/null 2>&1