[Linux] 표준 입출력, 리다이렉션 실습

mommers·2026년 1월 30일

Linux

목록 보기
12/59

표준 입출력과 리다이렉션 (>, >>, <, |)

  • 학습: 리눅스 철학(모든 것은 파일이다)의 핵심.
  • 실습:
    • 명령어 결과를 파일로 저장(>), 기존 파일 뒤에 덧붙이기(>>).
mkdir ~/redirect_practice
cd ~/redirect_practice

에러 메시지만 따로 파일로 저장하기 (2> error.log)

시스템의 모든 로그가 아니라, "에러 메시지(Standard Error)"만 콕 집어서 파일로 저장하는 것임.

리눅스는 프로그램이 뱉는 말을 두 가지 채널(수도꼭지)로 분리해서 관리함.

1. 숫자의 의미 (File Descriptor)

  • 1번 (Standard Output): 정상적인 실행 결과. (생략 가능, 그냥 > 하면 1번임)
  • 2번 (Standard Error): 에러, 경고 메시지.
  • 결과: 2> error.log를 하면, 정상 결과는 화면에 나오고 에러만 파일에 저장됨.

2. 동작 방식 (덮어쓰기 vs 이어쓰기)

  • 2> error.log (덮어쓰기):
    • 파일이 없으면 새로 만듦.
    • 파일이 이미 있으면 기존 내용을 싹 지우고 새로 씀. (주의!)
  • 2>> error.log (이어쓰기):
    • 기존 내용 끝에 에러를 추가(Append)함. 로그 남길 땐 이게 정석.

3. 실무 필수 조합

가장 많이 쓰는 패턴 3가지.

  1. 에러만 버리기 (침묵 모드):Bash

    make 2> /dev/null
    • 설명: 에러 메시지는 꼴 보기 싫으니 휴지통(/dev/null)에 버림.

  1. 분리 수거 (정상 따로, 에러 따로):Bash

    ./server > output.log 2> error.log
    • 설명: 1번은 output.log에, 2번은 error.log에 각각 저장.
  2. 합쳐서 저장 (몽땅 저장):Bash

    ./server > all.log 2>&1
    • 설명: 2>&1은 "2번(에러)을 1번(정상)이 가는 곳으로 같이 보내라"는 뜻. 즉, 순서대로 all.log에 다 들어감.

  • cat file.txt | grep "error" | sort | uniq 처럼 3단 파이프라인 구성해보기.
profile
임베디드 개발자가 되기 위해 공부중입니다!

0개의 댓글