다음과 같은 redirection(스트림을 방향을 변경하는) 연산자를 사용할 수 있다.
< : 입력하기
> : 출력하기
>> : 출력하기(출력 대상의 내용에 이어붙이기)
0 : 표준 입력 장치(stdin)
1 : 표준 출력 장치(stdout)
2 : 표준 에러 장치(stderr)
program.exe 라는 프로그램이 있으면,
# stdout 만 파일로 저장하여 보고 싶다면
program > result.txt
# 또는 기존result.txt 파일 뒤에 붙이기
program >> result.txt
# stderr 만 파일로 저장하여 보고 싶다면
program 2> result.txt
# stdout 만 pipeline 으로 보낼때
program 2> /dev/null | grep "aaa"
# 또는
program | grep "aaa"
# stderr 만 pipeline 으로 보낼때
program 2>&1 1>/dev/null | grep -i 'no such'
# stderr, stdout 각각 pipeline 으로 보낼때
program 2> >(grep -i 'some error' >&2) | grep -i 'some message'
# 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