개발 환경 및 프로젝트 관리/Linux 개념

표준 출력(stdout)과 표준 에러(stderr) 기존 파일에 저장하기

Data Jun 2026. 1. 8. 14:56

리눅스/유닉스 환경에서 명령어를 실행하면 결과는 기본적으로 터미널 화면(stdout) 에 출력됩니다.
하지만 서버 운영이나 로그 관리 상황에서는 출력 결과를 파일로 저장해야 하는 경우가 많습니다.

이때 사용하는 것이 리다이렉션(redirection) 입니다.

 

1. 표준 출력(stdout) 리다이렉션

1️⃣ 기존 파일에 덮어쓰기 (>)

$ pwd > result.txt
  • pwd의 출력 결과를 result.txt에 저장
  • 기존 파일 내용은 모두 삭제되고 새로 저장됨

확인:

$ cat result.txt

 

2️⃣ 기존 파일에 이어서 쓰기 (>>)

$ pwd >> result.txt
  • 기존 파일 내용은 유지
  • 파일 끝에 출력 결과를 추가

로그를 누적해서 남길 때 반드시 사용하는 방식입니다.

 

2. 표준 에러(stderr) 리다이렉션

에러 출력은 기본 출력(stdout)과 다른 스트림을 사용합니다.

 

1️⃣ 에러 출력 덮어쓰기 (2>)

$ ls abc 2> error.txt
  • 존재하지 않는 파일/디렉토리 에러를 error.txt에 저장
  • 실행할 때마다 기존 파일을 덮어씀

2️⃣ 에러 출력 이어서 쓰기 (2>>)

$ ls abc 2>> error.txt
$ ls xxxx 2>> error.txt
  • 에러 로그를 누적 기록
  • 서버 에러 로그 관리 시 가장 많이 사용

확인:

$ cat error.txt

 

3. 언제 > 대신 >>를 써야 할까?

서버 운영이나 로그 관리에서는
기존 로그가 사라지면 안 되는 경우가 대부분입니다.

따라서,

  • 일회성 결과 저장 → >
  • 로그·에러 누적 관리 → >>, 2>>

를 사용하는 것이 안전합니다.

 

4. 정리하면

  • > : 파일 덮어쓰기
  • >> : 파일 이어쓰기
  • 2> : 표준 에러(stderr) 덮어쓰기
  • 2>> : 표준 에러(stderr) 이어쓰기

기존 로그가 중요하다면 반드시 >>를 사용하자