강좌
클라우드/리눅스에 관한 강좌입니다.
자격증 분류

리눅스마스터1급 : 파이프라인(pipe line)

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

리눅스마스터1: 파이프라인(pipe line)

 




1) 개념 및 형식

 

 

쉘의 강력한 특징 중 하나가 파이프라인을 사용하는 것이다.

 

 

 

 

우선, 파이프는 한 명령의 출력을 다른 입력으로 보내는 툴이며, 파이프를 만드는 심볼은 |(Vertical bar)이다.

 

 

 

 

그리고 파이프라인이란 ‘|’ 문자로 구분된 한 개 이상의 명령이 연속되어 나오는 것을 말한다.

 

 

 

 

이러한 파이프라인의 명령의 형식은 다음과 같다.

 

 

 

 

 

[ ! ] 명령 [ |명령2 ... ]

 

 

 

 

 

명령의 표준 출력은 명령2의 표준 입력으로 연결된다.

 

 

 

 

이에 따른 파이프라인의 일반적인 형식은 다음과 같다.

 

 

 

 

command1의 결과 출력이 command2의 입력이 되며 또 command2의 결과가 command3의 표준 입력이 되고 3개뿐만 아니라 여러 개의 명령어가 가능하다.

 

 

 

 

 

 

 

 

 

 

$ command1 | command2 | command3

 

 

 

 

 

그리고 파이프라인 연결은 명령에서 명시한 리다이렉션보다 먼저 수행된다.

 

 

 

 

예약어인 ‘!’ 가 파이프라인 앞에 나오면 파이프라인의 종료 상태 값을 마지막 명령의 종료 상태에 대한 논리적인 NOT으로 설정한다.

 

 

 

 

그렇지 않은 일반적인 경우에는 마지막 명령의 종료 상태 값이 파이프라인의 종료 상태 값으로 된다.

 

 

 

 

 

 

쉘은 값을 반환하기 전에 파이프라인에 연결되어 있는 모든 명령이 종료하기를 기다린다.

 

 

 

 

파이프라인의 각 명령은 개별적인 프로세스로 실행된다.

 

 

 

 

다시 말해 각자의 서브 쉘 안에서 실행되는 것이다.

 

 

 

 

그리고 쉘은 파이프라인의 각각의 작업을 연관시킨다.

 

 

 

2) 예제

 

다음 예는 우선 현재 시스템을 사용중인 사용자들을 찾고 그 다음으로 그것들을 정렬시켜서 출력하는 것이다.

 

 

 

 

이 과정은 내부적으로 처리되며, 결국 정렬된 사용자 목록만이 현재 사용자의 터미널 화면에 출력된다.

 

 

 

 

 

 

 

 

$ who | sort

 

 

 

 

 

 

 

 

다음의 예는 ls -al이라는 명령어를 사용하여 보여지는 파일이나 디렉토리들이 화면 전체를 넘어가는 경우 이를 메타 문자 ‘|’과 파일을 단말기의 화면에서 목록이 한 화면씩 쉽게 볼 수 있게 하는 명령어 more의 상관 관계를 보여주는 예이다

 

 

(다음 화면으로 넘어가려면 <스페이스 바> 버튼을 누르고 빠져나오려면 <q> 버튼을 누른다).

 

 

 

 

 

 

 

$ ls -al | more

합계 9624

drwx--x--x 9 freekgb sulinux 4096 1112 03:35 .

drwxr-xr-x 42 root root 4096 523 2012 ..

-rw------- 1 freekgb sulinux 126 1021 2010 .Xauthority

-rw------- 1 freekgb sulinux 463 1111 01:42 .bash_history

-rw-r--r-- 1 freekgb sulinux 24 1021 2010 .bash_logout

-rw-r--r-- 1 freekgb sulinux 216 810 15:54 .bash_profile

-rw-r--r-- 1 freekgb sulinux 124 1021 2010 .bashrc

-rw------- 1 freekgb sulinux 57 1021 2010 .cvspass

-rw-r--r-- 1 freekgb sulinux 237 1021 2010 .emacs

drwx------ 2 freekgb sulinux 4096 1020 2010 .gconf

drwx------ 2 freekgb sulinux 4096 1020 2010 .gconfd

-rw-r--r-- 1 freekgb sulinux 835 1021 2010 .grmail

-rw------- 1 freekgb sulinux 35 1021 2010 .lesshst

--More--

 

 

 

 

 

 

 

 

 

리스트(Lists)

리스트란 한 개 이상의 파이프라인이 ;, &, &&, || 연산자 중 하나에 의해 구분되고 ;, &, <개행문자> 중 하나로 끝나는 연속된 문자열을 말한다.

 

 

 

 

이 연산자들 중에서 && ||는 같은 우선권을 가지고 있고, 그 다음으로 ; & 가 같은 우선권을 가지고 있다.

 

명령이 제어 연산자인 & 로 끝나면 쉘은 그 명령을 서브쉘에서 백그라운드로 실행하며, 쉘이 명령의 종료를 기다리지 않으면 반환값은 0이다.

 

 

 

 

그리고 ;로 구분된 명령들은 순차적으로 실행되며, 쉘은 차례대로 각 명령이 종료하기를 기다린다.

 

 

 

 

반환 상태값은 마지막으로 실행한 명령의 종료 상태값을 따른다.

 

이에 대해, 제어 연산자 && ||는 각각 AND 리스트와 OR 리스트를 나타낸다.

 

 

 

 

AND 리스트는 명령1 && 명령2”와 같은 형태를 가지는데, 명령2는 명령10이라는 종료 상태값을 반환할 때에만 실행된다.

 

 

 

 

그리고 OR 리스트는 명령1 || 명령2”와 같은 형태를 가지는데, 명령2는 명령1의 종료 상태값이 0이 아닌 값일 때에만 실행된다.

 

 

 

 

ANDOR 리스트의 반환 상태값은 리스트에서 마지막으로 실행된 명령의 종료 상태값을 따른다.

 

 

 

 

 

 

 

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,291 명
  • 현재 강좌수 :  36,952 개
  • 현재 접속자 :  525 명