리디렉션 개요
리눅스 시스템은 모든 입출력을 파일로 취급합니다. 리디렉션은 이러한 기본 입출력 스트림(stream)의 방향을 변경하여, 명령어의 결과가 화면에 출력되는 대신 파일에 기록되거나, 파일의 내용이 명령어의 입력으로 사용되도록 합니다.
표준 입출력 스트림
모든 명령어는 기본적으로 다음과 같은 세 가지 표준 스트림을 사용합니다.
- 표준 입력 (stdin, 0): 명령어가 데이터를 읽어들이는 채널. 기본값은 키보드입니다.
- 표준 출력 (stdout, 1): 명령어의 정상적인 결과가 출력되는 채널. 기본값은 화면(터미널)입니다.
- 표준 에러 (stderr, 2): 명령어의 오류 메시지가 출력되는 채널. 기본값은 화면(터미널)입니다.
리디렉션 연산자
다양한 리디렉션 연산자를 사용하여 입출력의 방향을 제어할 수 있습니다. 아래의 생성된 명령어처럼 redirect를 직접 사용하면 에러가 발생합니다. 반드시 >, >>, < 등의 기호로 사용해야 합니다.
1. 표준 출력 리디렉션
2. 표준 에러 리디렉션
3. 표준 입력 리디렉션
생성된 명령어:
명령어를 조합해 보세요.
설명:
`redirect` 명령어를 실행합니다.
위 옵션들을 조합하여 AI와 함께 가상으로 명령어를 실행해 보세요.
자주 사용되는 예시
리디렉션을 활용한 다양한 예시들을 통해 입출력 제어 방법을 익혀보세요.
명령어 결과 파일에 저장
ls -l > file_list.txt
`ls -l` 명령어의 결과를 `file_list.txt` 파일에 저장하고, 기존 파일이 있다면 덮어씁니다.
여러 명령 결과 한 파일에 추가
echo "--- 작업 시작 ---" >> log.txt
date >> log.txt
`echo` 명령어의 결과를 `log.txt` 파일에 추가하고, 이어서 `date` 명령어의 결과를 같은 파일에 추가합니다. `>>`를 사용하여 기존 내용을 보존합니다.
에러 메시지만 별도 파일로 분리
ls non_existent_file 2> error.log
존재하지 않는 파일에 대한 `ls` 명령을 실행하고, 에러 메시지(`2>`)만 `error.log` 파일로 보냅니다. 정상적인 출력은 화면에 그대로 나타납니다.
입력 파일을 명령어에 전달
sort < numbers.txt
`sort` 명령어의 입력을 `numbers.txt` 파일로 지정하여 파일 내용을 정렬합니다. `sort`는 파일 내용을 표준 입력으로 받아 처리합니다.
출력과 에러 모두 한 파일로
ls /home non_existent_file &> output_and_error.log
정상적인 출력과 에러 메시지 모두를 `output_and_error.log` 파일에 저장합니다.