⬅️ 이전: 8.2 파이프(Pipe)와 필터     🏠 분류 목차     다음: 8.1 문서 에디터 종류 (vi/nano) ➡️

3 REDIRECT 개념도

8.3 표준 입출력의 방향 전환, 리다이렉션 (Redirection)

리눅스와 같은 유닉스 기반 시스템은 단순히 화면에 글씨를 뿌리고 키보드로 명령을 내리는 기본 흐름(데이터 흐름)의 방향을 완전히 다른 곳으로 강제 전환시키는 작업이 가능합니다. 이 프로세스를 리다이렉션(Redirection) 이라고 부릅니다.

동작 원리: 명령어의 결과물(Standard Output)은 원래 모니터 방향으로 흘러가야 정상입니다. 하지만 출력 기호(>)를 사용하여 그 결과물이 향하는 방향 화살표를 꺾어서 모니터가 아닌 텍스트 파일이나 다른 외곽 시스템 쪽으로 데이터가 흘러 들어가도록 강제 방향 지시를 할 수 있습니다.


1. 운영체제의 3대 표준 식별 핸들 (번호)

컴퓨터 내부적으로는 입출력을 구분하기 위해 다음과 같이 0번부터 2번까지의 고유 핸들(File Descriptor) 번호표 체계를 사용합니다.

핸들 번호 영문 명칭 기호 매핑 세부 의미 설명
0 STDIN (입력) < 키보드에서 보내지는 표준 인간의 문자 입력 신호
1 STDOUT (출력) > 명령어가 정상적으로 연산되어 모니터 쉘 창으로 보내지는 정답 출력
2 STDERR (에러) 2> 치명적인 버그나 없는 명령어를 쳐서 화면에 시뻘겋게 뜨는 에러 출력

(기존 작성된 표준 입출력의 도해 자료입니다.)


2. 방향 지시 기호 사용법 및 덮어쓰기

원하는 대로 방향성을 바꾸려면 화살표와 비슷한 아래 기호들을 명령어 뒤에 이어 붙여 타이핑합니다.

2.1 덮어쓰기 (>)

결과를 화면에 보여주는 대신 텍스트 파일 하나를 아예 새로 창조해서 데이터를 그 안에 통째로 쑤셔넣는 기능입니다.

  • 예시: ls > dir_list.txt (디렉터리 파일 목록을 모니터 대신 저 파일 안에 텍스트로 저장)
  • 주의: 만약 저 파일이 이미 존재하는 상태라면 원래 있던 내용을 모조리 날려버리고 완전히 덮어써집니다.

2.2 밑에 추가하기 (>>)

원래 저장되어 있던 중요한 텍스트 파일의 내용이 지워지지 않도록 보호하되, 그 파일의 맨 아랫단에서부터 데이터를 조용히 끼워 넣어 내용을 누적 추가(Append)해 줍니다. 시스템 로그(Log) 백업을 만들 때 주로 씁니다.

2.3 표준 입력을 파일에서 땡겨오기 (<)

키보드로 직접 엔터를 치면서 타이핑 치는 대신에, 누가 적어놓은 장문의 텍스트 파일 안으로 들어가 그 안쪽 내용을 명령창 구멍 안으로 억지로 쑤셔 밀어넣어 컴퓨터가 읽도록 명령합니다.

  • 예시: grep "apple" < text.txt

2.4 오류 출력 리다이렉션 (2> / 2>>)

프로그램의 에러 로그(2번 핸들)만을 빼내어 저장하고 싶을 때 2라는 숫자와 화살표를 붙여서 씁니다.

  • 예시: ls /root 2> error.txt (접근이 거부된 에러 로그만 분리되어 에러 파일에 적힙니다.)
  • 최고의 꿀조합: command > file.txt 2>&1 (정상 명령과 에러 로그를 한 번에 묶어다가 한 파일에 사이좋게 몰아넣는 기술로 실무에서 매우 자주 쓰입니다.)

3. [실습] 출력 방향을 비틀어 문서 저장하기

내가 쳤던 명령어들이 화면 대신 조용히 파일에 영구 기록되는 동작을 눈으로 직접 확인하는 실습입니다.

실습 1. > 를 활용해 달력을 텍스트 파일로 저장

# 지금 컴퓨터 화면에 당장 이번 달력을 출력해봅니다. (모니터 출력)
cal

# 방향을 꺾겠습니다. 모니터에는 아무것도 안 뜹니다.
# 대신 my_cal.txt 라는 텍스트 파일에 아까 그 달력 그림이 이식되어 저장됩니다.
cal > my_cal.txt

# 저장된 달력 파일을 까서 확인해봅니다.
cat my_cal.txt

실습 2. >> 를 활용해 달력 밑에 내 이름 누적해서 박아넣기

# 무언가 글씨를 뱉어내는 echo 명령어를 쓰되 꺾쇠 2개를 줍니다.
echo "작성자: 리눅스 학생" >> my_cal.txt

# 다시 달력 파일을 까보면, 달력 밑동 가장 아래에 내 이름이 지워지지 않고 추가되어 있습니다.
cat my_cal.txt

⬅️ 이전: 8.2 파이프(Pipe)와 필터     🏠 분류 목차     다음: 8.1 문서 에디터 종류 (vi/nano) ➡️
서브목차