안녕하세요. RTLog입니다.
오늘은 "Redirection"이라는 개념에 대해 작성해보겠습니다.
Redirection
Linux에서 Redirection은 명령어의 표준 입출력 스트림을 제어할 수 있는 기능입니다.
"표준 입출력 스트림"이라는 용어를 한 번쯤은 들어보셨을텐데요.
Linux 및 Unix 계열 운영 체제에서 표준 입력(stdin), 표준 출력(stdout) 및 표준 오류(stderr) 스트림은 프로그램과 해당 환경 간의 세 가지 기본 통신 채널입니다. 기본적으로 표준 입력 스트림은 키보드와 연결되어 있고, 표준 출력/오류 스트림는은 모니터와 연결되어 있습니다. 따라서, 저희가 입력하는 내용이 키보드를 통해 입력되고, 출력을 모니터로 확인할 수 있는 것이죠. ( *표준 입력은 0번, 표준 출력은 1번, 표준 오류는 2번 스트림으로 분류됩니다.)
그렇다면, 프로세스의 입력을 키보드가 아닌 파일로 전달하거나, 프로세스의 출력을 파일로 전달하려면 어떻게 해야할까요? 바로 "Redirection"을 활용하면 됩니다.
* Linux 시스템에서 I/O Device는 File로 취급하여 처리됩니다. I/O Device(File)의 역할을 다른 파일이 대신하도록 제어하는 것이 바로 Redirection 입니다.
표준 출력 재지정
출력을 모니터(터미널)이 아닌, 파일로 재지정해보겠습니다.
- `>' 연산자
- 명령의 출력을 파일로 Redirection 하는 데 사용됩니다.
- 파일이 존재하더라도, 지우고 다시 작성하는 것에 유의해야 합니다.
- '>>' 연산자
- '>'와 유사하지만 출력을 덮어쓰는 대신 이어서 작성합니다.
- 파일이 존재하지 않으면 생성합니다.
아래는 예시입니다. 이를 활용하여 특정 조건마다 date를 기록한다면, log를 관리할 수 있겠죠?
파일 내용을 다른 텍스트 파일에 복사하는 추가 예제입니다.
표준 오류 재지정
오류 출력 결과를 터미널이 아닌, 파일로 재지정할 수 있습니다.
표준 오류 스트림을 나타내는 2번을 활용하여 '2>' or '2>>' 형태로 명령어를 작성합니다. (공백 없이 작성)
c.f) 표준 출력 스트림과 오류 스트림을 묶어 하나의 파일에 작성하는 방법도 있습니다. '&>' or '&>>' 형태로 작성합니다.
표준 입력 재지정
표준 입력 재지정을 위해서, 반대 방향의 기호를 사용합니다.
- `<' 연산자
- 명령의 입력을 파일 내용으로 Redirection 하는 데 사용됩니다.
- '<<' 연산자
- 특정 입력이 입력되면, 입력을 종료하고 입력된 내용을 다시 출력합니다.
- 어떤 명령어에, 한 번에 값을 전달하기 위한 방법으로 사용합니다.
추가 응용
아래와 같은 활용법도 존재합니다.
# 표준 출력을 'output.txt'로, 표준 오류를 'error.txt'로 Redirction
command > output.txt 2> error.txt
# 관심 없는 출력 버리기
command > /dev/null
command 2> /dev/null
감사합니다.
'Linux' 카테고리의 다른 글
[Linux] Permission (0) | 2024.03.15 |
---|---|
[Linux] Pipe (0) | 2024.03.14 |
[Linux] 인용과 확장 - 인용 (0) | 2024.03.14 |
[Linux] 인용과 확장 - 확장 (0) | 2024.03.14 |
[Linux] 기본 정규 표현식 & Wild Card (0) | 2024.03.13 |