- Today
- Total
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Link
- 재능이의 돈버는 일기
- StresslessLife
- K_JIN2SM
- 소소한 일상
- My Life Style & Memory a Box
- Blog's generation
- 공감 스토리
- 취객의 프로그래밍 연구실
- Love Me
- Dream Archive
- 세상에 발자취를 남기다 by kongmingu
- hanglesoul
- 카마의 IT 초행길
- 느리게.
- 미친듯이 즐겨보자..
- Joo studio
- Gonna be insane
- 악 다 날아갔어!! 갇대밋! 왓더...
- xopowo05
- 맑은공기희망운동
- 엔지니어 독립운동
- 혁준 블로그
- Simple in Complex with Simple
- 무의식이 의식을 지배한다
드럼치는 프로그래머
[Linux] Pipes(파이프) 명령 본문
Pipes 명령
-----------------------------------------------------------------------------
Pipes(파이프)에 대해서 알아보자. 아래에서는 그냥 파이프라고 하겠다.
파이프는 유닉스 시스템의 융통성을 보여주는 명령으로
명령들을 서로 링크하는 기능이다.
그럼 시작해보자
------------------------------------------------------------------------------
1.파이프 라인을 사용하는 이유!
:: 하나의 Command 를 다른 Command의 입력이나 출력으로 지정할 수 있다.
다시말해 여러명령을 하나의 Command라인에서 처리할 수있다.
이것은 유닉스의 파워풀한 면을 보여주는 부분중 하나이다.
2."|" Structure.
:: 파이프라인 기호 "|"의 왼쪽명령의 표준 출력(stdout)을 오른쪽 명령의
표준 입력(stdin)으로 사용된다.
[syntax]
$ 명령어A | 명령어B | 명령어C
:: 명령어A 의 표준출력(stdout)이 명령어 B에 표준입력(stdin)으로 되는 형식
명령어 B는 표준입력을 받아 들일수 있는 명령어, 즉 필터(filter)이어야 한다.
필터에는 grep,sort,cut 등등이 있다.
[예제]
$ who | tr -s " " |cut -f3 -d" "
$ ps -ef | more
2.파이프라인의 리다이렉션
:: Command마다 3가지 가능한 스트림이 있다. 표준입력(stdin),표준출력(stdout)
표준에러(stderr)이 있다. 이것은 각 명령의 어떠한 스트림을 확보한다.
각각을 숫자로 표현하면 아래와 같다.
stdin => 0
stdout => 1
stderr => 2
대부분 파이프의 리다이렉션은 명령라인의 끝에서 출력방향을 다시 지정하여
파이프 라인의 필터된 출력을 파일이나 화면상에 출력한다.
[예제]
$ grep user /etc/passwd | sort > sort.out
:: /etc/passwd 파일중에서 user가 포함된 줄을 sort.out파일에 저장하라!
이경우 화면상에는 출력되지 않는다.
$ grep user < /etc/passwd 2> grep.err |sort >sortd.users 2> sort.err
:: 약간 난이도가 있다. grep할때 에러가 발생하면 grep.err파일로 저장하고
sort한 경과를 sortd.users파일로 저장하는데 에러가 발생하면 sort.err파일로 저장한다.
자세한 것은 각 명령어를 참고바란다.
이제까지 필터에 해당하는 명령어를 두개 보았다. grep 과 sort가 바로 그것이다.
3. 파이프라인에서 함께 사용되는 몇가지 필터들
:: cut,tr,tee,pr이 그것이다.
위 4개의 필터에 대한 사용법을 여기서 소개하는것은 파이프라인에서 grep.sort와 같이 많이 사용되기 때문이다.
- cut 명령어 -
:: stdin이 가능하다. 표준입력이나 어떤 파일로 부터 원하는 필드나 지정된 칸을 추출이 가능하다.
[Syntax]
cut -f(원하는 필드숫자) -d(필드구분자) 파일명
[option]
-c ==> 왼쪽부터 지정된 칸을 추출한다.
-f ==> 왼쪽부터 필드구분자로 구분된 공백이 아닌 필드를 추출한다.
-s ==>필드 구분자가 매치되지 않을 경우 해당 필드를 출력하지 않는다.
[예제]
$ cut -f1 -d":" /etc/passwd
:: /etc/passwd 파일에서 콜론(":")으로 구분된 첫번째 필드를 추출
$ cut -f1,3,5 -d":" /etc/passwd
:: /etc/passwd 파일에서 콜론으로 구분된 첫번째,세번째, 다섯번째 필드를 출력
$ cut -c1-5 /etc/passwd
:: /etc/passwd 파일에서 첫번째(공백도 포함된다.)문자부터 5번째 문자까지 추출
$ date
토 4월 6 23:35:52 KST 2002
$ echo $(date) | cut -f3 -d" "
- tr 명령어 -
:: 중복된 문자를 하나로 나타내어준다.
대문자를 소문자로 소문자를 대문자로 변경하는것도 가능하다.
[Syntax]
:: tr [-s] string1 string2
[예제]
$ who | tr -s " "
$ date | cut -c1-3 | tr "[[:lower:]]" "[[:upper:]]"
:: 세개의 문자를 모두 소문자를 대문자로 치환한다. lower와 upper 변경가능
- tee 명령어 -
:: 파이프 라인의 중간 결과를 화면출력이나 원하는파일명으로 출력이 가능하다.
중간 처리결과를 확인할 수 있고, 파일로도 출력할수 있다.
[Syntax]
tee -a file file
[예제]
$ who | tee who_tee | sort
:: 현재 로그인한 사용자를 who_tee파일로 저정하고, 그리고 sort해서 화면출력
- pr 명령어 -
:: 화면상에 원하는 포맷을 지정할수 있다.
[Syntax]
pr [-option] file명
[예제]
$ pr -n3 yunisj
:: yunisj파일을 세개의 단으로 구분된 형식으로 출력
$ grep home /etc/passwd | pr -h "pr head print part"
:: grep된 결과의 화면출력시 타이틀을 붙여준다.
[option]
-숫자 ==> 다단을출력한다. 왼쪽부터 아래로 그리고 오른쪽으로 출력
-a ==> 다단출력, 위에서 왼쪽에서 오른쪽으로 그리고 다음줄로 출력
-t ==> 머릿말 꼬리말 삭제
-h ==> 타이틀출력
...이하생략
- lp 명령어 -
:: 파이프라인을 통한 결과물을 프린팅한다.흔히 명령의 맨 마지막에 주로 사용
[예제]
$ ls-F $HOME | pr -3 | tee home_files | lp
'★─Programing > ☆─Linux' 카테고리의 다른 글
[Linux] ls 명령의 요긴한 Tip (0) | 2007.08.06 |
---|---|
[Linux] 리눅스 명령어 총집합 (1) | 2007.08.06 |
[Linux] 파일시스템의 종류 (0) | 2007.08.06 |
[Linux] 손쉬운 리눅스 관리 (0) | 2007.08.06 |
[Linux] 리눅스 Booting 및 init 와 shutdown (0) | 2007.08.06 |
Comments