명령어/Linux

[리눅스] 2> 2>&1 에러 출력 리다이렉션

jykim23 2026. 7. 8. 23:11
반응형

부제: 에러 출력을 따로 저장하거나 버리기

cmd 2> err.txt          # 에러만 파일로
cmd > out.txt 2>&1      # 정상+에러를 같은 파일로
cmd 2>/dev/null         # 에러 버리기
$ ls 없는파일 2> err.txt
$ cat err.txt
ls: cannot access '없는파일': No such file or directory

명령어의 정상 출력(1번)과 에러 출력(2번)은 흐르는 통로가 다르다.
2>는 에러만 따로 보내고, 2>&1은 에러를 정상 출력 쪽으로 합친다. 2>/dev/null은 에러를 아예 버릴 때 쓴다.
순서가 중요하다. > out.txt 2>&1처럼 >가 먼저 와야 둘 다 파일로 가고, 순서를 바꾸면 에러는 터미널에 남는다.

이렇게도 쓴다

권한 없는 디렉터리 에러를 숨기고 검색 결과만 본다.

find / -name "*.conf" 2>/dev/null

 

에러만 로그 파일에 누적한다(>>는 이어쓰기).

./backup.sh 2>> backup-err.log

 

크론 작업에서 출력을 전부 버린다.

./job.sh > /dev/null 2>&1

 

화면으로 보면서 파일에도 남긴다(tee 조합 — 배포 로그 단골).

./deploy.sh 2>&1 | tee deploy.log

 

에러까지 포함해 거른다. 파이프는 정상 출력만 넘기므로 2>&1을 먼저 붙여야 에러가 grep에 닿는다.

./build.sh 2>&1 | grep -i error
반응형