Redirection(리다이렉션)

리다이렉션은 프로그램의 입력 및 출력 방향을 바꾸어 주는 것을 말합니다.
STDIN(표준입력)
명령어를 입력할 때 특정 내용을 적는 것처럼 기본적인 키보드 입력을 말합니다.
기본적으로 입력은 키보드를 사용합니다.
STDOUT(표준출력)
명령어를 입력했을 때의 출력을 말합니다. 기본적인 출력은 터미널을 사용합니다.
STDERR(표준에러)
잘못된 명령어나 명령어 실행시 발생하는 에러 메시지들을 말합니다.
기본적인 출력은 터미널을 사용합니다.
리다이렉션의 종류 및 의미
| Communication Channels | Redirection characters | 의미 | |
| STDIN | 0< | 0<< | 입력을 키보드가 아닌 파일을 통해 받음 |
| STDOUT | 1> | 1>> | 표준 출력을 터미널이 아닌 파일로 출력 |
| STDERR | 2> | 2>> | 표준 에러 출력을 터미널이 아닌 파일로 출력 |
바로 예시로 보시죠
date라는 명령어를 입력하면 출력값으로 터미널에 날짜 및 시간이 출력 되게 됩니다.
만약 출력을 터미널이 아닌 특정 파일 date.txt에 저장하려면 어떻게 하면 될까요?
이때 사용하는 것이 리다이렉션입니다.
$ date 1> date.txt
date 명령의 출력 값을 1>을 통해서 date.txt에 저장할 수 있습니다.
이때 1>과 1>>의 차이점으로 >은 override(덮어 씌우기)하는 것이고 >>은 append(추가)하는 것입니다.
또 > 앞의 숫자는 생략이 가능합니다.
Pipeline(파이프 라인)
파이프 라인은 간단하게 말해서 좌측 명령문의 출력 값을 우측 명령문의 입력 값으로 전달 하는 것입니다.
이때, 좌측 명령문과 우측 명령문을 구분하는 기호가 Pipeline (" | ") 입니다.
리눅스의 명령어를 조합하여 사용하기 위해 파이프 라인을 사용합니다.
ex : 명령문2 | 명령문2 | 명령문3
아래 명령문을 실행해 봅시다.
$ ls -l | wc -l
위 명령문을 실행 했을 때, 4라는 결과 값이 나오게 됩니다. ls -l의 출력 값이 wc -l 명령문의 입력 갑으로 전달 되었기 때문이죠. 위와 같이 명령어들을 조합해서 사용하기 위해 파이프라인(" | ")을 사용합니다.
* wc -l 명령문은 총 라인 수를 출력하는 명령문입니다.
예시를 하나 더 해봅시다.
사용자 정보를 담고있는 파일 /etc/passwd의 파일 내용중 :을 구분자로 사용해서 사용자 명만 출력하고자 합니다.
$ cat /etc/passwd | cut -d: -f 1 | sort
결과는 사용자 명들이 출력 되게 됩니다.
위와 같이 파이프 라인을 사용하게 되면 명령어 조합으로 효율적인 출력 값을 얻을 수 있습니다.
| 리눅스의 모든 것을 배울 때까지 공부해봅시다. |

'Linux > Shell Programming' 카테고리의 다른 글
| 05.[Linux] 쉘(shell) Positional Parameters 란? (1) | 2023.01.31 |
|---|---|
| 04.[Linux] 쉘(shell) Script 란? (0) | 2023.01.20 |
| 02.[Linux] 쉘(shell)과 규칙들 1 (0) | 2023.01.19 |
| 01.[Linux] 쉘(shell)과 변수 (0) | 2023.01.17 |
| 00.[Linux] 쉘(shell) 이란? (1) | 2023.01.17 |