본문 바로가기
linux

파이프라인 , IO Redirection

by 왜 안되지 2022. 3. 15.

파이프라인

두 프로그램이나 프로세스에서 한 프로그램의 입력이 다른 프로그램의 출력이 될 때 파이프라인이 쓰인다.

예를들면 

ls --help | grep sort 

에서 enter 와 backspace 사이에 잇는 " | " 가 파이프라인의 표현이다.

ls --help | grep sort 는 ls --help 의 출력중 'sort' 를 찾아 출력한다.

 

IO Redirection

io 는 각각 input, output의 줄임말이고 redirection 은 어딘가로 우회 한다는 뜻이니 "인풋을 아웃풋으로 주는데 우회해서 준다" 는 뜻이 된다.

좀 더 자세히 설명하기 위해 그림을 보자.

이 자료에서 Unix process 라는 것은 ls, grep, mkdir 같은 명령어 프로세스

command-line arguments 는 명령어의 옵션,

standard output 은 표준출력,

standard Error 는 표준에러 를 뜻한다.

 

우리가 잘 아는 ls 의 명령어로 예를 들어보자

ls -l 

이라는 명령어는 현재 위치한 곳의 파일이나 디렉토리들을 출력해준다.

redirection 을 해줄때는 ' > '을 쓰는데

 

ls -l > result.txt

라고 명령을 내린 후 쉘을 보면

 

 

쉘이 아무 말이 없다.

그럼 그 출력은 어디로 갔을까.

짠 !

출력이 result.txt 로 들어갔스빈다.

 

쉘에 나와야 될 출력을 result.txt로 redirection 했네요 ~

 

이런게 io redirection 입니당.

 

근데 사실은 > 얘는 1> 에서 1이 생략 되있는 겁니다.

아까 출력에 standard output 이랑 standard error 가 있댔져 ?

 

1> 은 standard output 으로 redirection

2> 은 standard error 로 redirection

 

그래서 

cp new 1> result.txt 2> error.log

이런식으로 일부러 에러를 내고 결과를 확인해보면 

error.log 에 에러의 출력이 들어가있다.

 

참고로  > 은 출력을 계속 덮어쓰게 되고

>> 은 append 된다.

<< 은 입력을 받는다.

 

참고로 하나 더

ls -al > /dev/null  에서 /dev/null 은 유닉스 계열에서 휴지통같은 존재임

ls -al > /dev/null 하면 ls -al 의 출력을 그냥 휴지통으로 보내는 것

 

 

 

'linux' 카테고리의 다른 글

Daemon introduction - 데몬 개요  (0) 2022.03.17
Linux Background Execute - 백그라운드 실행  (0) 2022.03.16
Linux - Ubuntu 디렉토리 구조  (0) 2022.03.16
apt-get 명령어 정리  (0) 2022.03.14
linux 기본 명령어 정리  (0) 2022.03.11

댓글