Peter Ahn
Peter의 우아한 프로그래밍
Peter Ahn
전체 방문자
오늘
어제
  • 전체 (115)
    • 영어공부 (15)
    • 물생활 (9)
    • 독서 (2)
    • 일상 (1)
    • IT 소식 (15)
      • 최신 기술 소식 (10)
      • 보안 소식 (5)
    • 인공지능 (AI) (2)
    • OS (19)
      • Linux (19)
    • Web (0)
      • Vue.js (0)
    • 객체지향 (1)
      • 개념과 원리 (1)
      • 디자인패턴 (0)
    • 프로그래밍 (37)
      • C (14)
      • C++ (3)
      • C# (1)
      • Python (3)
      • Javascript (2)
      • Bash (4)
      • Vim (9)
    • Database (3)
      • DB2 (3)
      • MongoDB (0)
    • 프레임워크 (1)
      • Ionic (1)
    • Cloud (1)
      • AWS (1)
    • 3D Printer (2)
    • 기록보관소 (5)
    • 초대장 (2)

블로그 메뉴

  • 홈
  • 태그
  • 미디어로그
  • 위치로그
  • 방명록

공지사항

  • 프로그래밍의 세계에 오신 것을 환영합니다.

인기 글

태그

  • bash shell
  • bash
  • vim 비주얼모드
  • 프로그래밍
  • 어항
  • C++
  • call by reference
  • typescript
  • vim
  • c강좌
  • vim 강좌
  • 영어표현
  • 구피
  • 쉘 프로그래밍
  • 리눅스 명령어
  • Linux
  • 4차 산업혁명
  • 랜섬웨어
  • 생활영어
  • C언어 강좌
  • AI
  • C언어
  • 딥러닝
  • 물생활
  • 하프블랙구피
  • 리눅스
  • 영어 회화
  • 인공지능
  • 영어 표현
  • 구피어항

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Peter Ahn

Peter의 우아한 프로그래밍

[Linux] 파이프(pipe)에 대한 이해
OS/Linux

[Linux] 파이프(pipe)에 대한 이해

2018. 5. 15. 12:58
반응형

 

개요

 

안녕하세요 피터입니다.

오늘은 리눅스의 파이프(pipe)에 대해서 설명드리겠습니다.

 

파이프는 재지향(redirection)과 더불어 리눅스의 명령어들을 훨씬 강력하게 무장시켜주는 역할을 하는 핵심 기능입니다. 

 

마치 그 자체로는 특별한 맛이 나지 않지만 단맛이나 짠맛 같은 다른 맛을 훨씬 강하게 만들어주는 조미료와 같다고 할까요?

 

 

재지향은 아래 글에서 자세히 보실 수 있습니다. 

[Linux] 재지향(Redirection)에 대한 이해

 

 

여러개의 명령어를 실행할 때 이전 명령어의 결과를 다음 명령어의 입력값으로 사용하고 싶을 때가 있습니다.

 

명령어의 입력 - 실행 - 결과 의 과정을 파이프 안에 흐르는 액체로 비유한다면

첫 번째 명령어 파이프의 결과를 화면으로 출력하는 대신 다른 명령어 파이프로 흘러가도록 연결한다고 생각하시면 됩니다.

 

 

4가지 shape 가 흐르는 명령어 파이프가 있다고 가정했을 때,

아래처럼 특정 shape 를 필터링 하는 명령어 파이프에 | 를 통해서 연결하면 화면에 출력되는 최종 결과는 필터링 파이프를 통과한 결과가 되는 거죠.

 

 

 

 

 

사용법

 

cat /etc/passwd | grep mail

 

/etc/passwd 파일에는 현재 시스템의 계정정보들이 들어있습니다.

cat 명령어에 의해 각 계정 정보가 라인별로 출력이 되는데요.

그 중에서 mail 이라는 문자열이 들어간 라인만 필터링해서 출력하고 싶을 때

파이프( | )를 사용하여 cat 명령어의 결과를 grep 명령어로 전달할 수 있습니다.

 

쉘 프롬프트(Shell prompt)에서 한번에 사용 가능한 파이프의 개수는 제한이 없습니다.

 

이전 명령어의 출력값을 필터링하거나 가공할 때 주로 사용하기 때문에 awk, cut, grep, more 등의 명령어들을 조합해서 많이 사용합니다.

 

예제

 

ex) test1.txt 파일에서 abc 라는 글자가 포함된 라인만 출력

[root@peterdev test]# cat test1.txt
abc
def
qwe
poi
abc
abcdef
abcd

[root@peterdev test]# cat test1.txt | grep abc
abc
abc
abcdef
abcd
[root@peterdev test]#

 

 

ex) 현재 디렉토리에서 c 라는 글자가 들어간 파일만 출력

[root@peterdev peter]# ls
language.bash  language.delphi   language.javascript
language.c     language.english  language.korean
language.cpp   language.java     language.python
[root@peterdev peter]# ls | grep c
language.c
language.cpp
language.javascript

 

ex) 현재 디렉토리에서 c 라는 글자가 들어간 파일 중 java 가 들어간 파일을 제외하고 출력

[root@peterdev peter]# ls | grep c | grep -v java
language.c
language.cpp
[root@peterdev peter]#

 

 

 

ex) /etc 디렉토리의 파일 목록을 한 화면씩 나누어서 출력

[root@peterdev peter]# ls -l /etc | more
total 1352
-rw-r--r--  1 root root       16 Jan  5 21:14 adjtime
-rw-r--r--  1 root root     1518 Jun  7  2013 aliases
-rw-r--r--  1 root root    12288 Jan  5 21:16 aliases.db
drwxr-xr-x  2 root root     4096 Apr 17 02:00 alternatives
-rw-------  1 root root      541 Aug  3  2017 anacrontab
-rw-r--r--  1 root root       55 Mar  1  2017 asound.conf
drwxr-xr-x  2 root root     4096 Jan  5 21:12 bash_completion.d
-rw-r--r--  1 root root     2853 Nov  5  2016 bashrc
drwxr-xr-x  2 root root     4096 Mar  7 13:27 binfmt.d
-rw-r--r--  1 root root       38 Aug 30  2017 centos-release
-rw-r--r--  1 root root       51 Aug 30  2017 centos-release-upstream
drwxr-xr-x  2 root root     4096 Aug  4  2017 chkconfig.d
-rw-r--r--  1 root root     1108 Jan 31  2017 chrony.conf
-rw-r-----  1 root chrony    481 Jan 31  2017 chrony.keys
drwxr-xr-x  2 root root     4096 Jan  5 21:11 cron.d
drwxr-xr-x  2 root root     4096 Jan  5 21:12 cron.daily
-rw-------  1 root root        0 Aug  3  2017 cron.deny
drwxr-xr-x  2 root root     4096 Jan  5 21:11 cron.hourly
drwxr-xr-x  2 root root     4096 Jun  9  2014 cron.monthly
-rw-r--r--  1 root root      451 Jun  9  2014 crontab
drwxr-xr-x  2 root root     4096 Jun  9  2014 cron.weekly
-rw-------  1 root root        0 Jan  5 21:10 crypttab
-rw-r--r--  1 root root     1620 Nov  5  2016 csh.cshrc
-rw-r--r--  1 root root      841 Jun  7  2013 csh.login
drwxr-xr-x  4 root root     4096 Jan  5 21:11 dbus-1
drwxr-xr-x  2 root root     4096 May 10 07:32 default
drwxr-xr-x  2 root root     4096 Apr 17 02:00 depmod.d
drwxr-x---  4 root root     4096 Mar 13 10:23 dhcp
-rw-r--r--  1 root root     5090 Nov  4  2016 DIR_COLORS
-rw-r--r--  1 root root     5725 Nov  4  2016 DIR_COLORS.256color
-rw-r--r--  1 root root     4669 Nov  4  2016 DIR_COLORS.lightbgcolor
-rw-r--r--  1 root root     1285 Jan  5 12:47 dracut.conf
drwxr-xr-x  2 root root     4096 Jan  5 12:47 dracut.conf.d
-rw-r--r--  1 root root      112 Mar 16  2017 e2fsck.conf
-rw-r--r--  1 root root        0 Nov  5  2016 environment
-rw-r--r--  1 root root     1317 Nov  5  2016 ethertypes
--More--

 

 

ex) 실행 중인 프로세스 목록에서 bash 프로세스 목록을 출력

[root@peterdev peter]# ps -ef | grep bash
root       929   472  0 Apr18 tty1     00:00:00 -bash
root     17937 17935  0 00:23 pts/0    00:00:00 -bash
root     18009 17937  0 00:57 pts/0    00:00:00 grep --color=auto bash
[root@peterdev peter]#



 

 

 

 

-Peter의 우아한 프로그래밍

 여러분의 댓글은 저에게 크나큰 힘이 됩니다. 오류 및 의견 주시면 감사하겠습니다.

 

 

반응형
저작자표시 비영리 동일조건 (새창열림)

'OS > Linux' 카테고리의 다른 글

[Linux] ntpdate로 시간동기화 하기  (0) 2018.05.18
[Linux] rdate로 시간동기화 하기  (0) 2018.05.18
[Linux] gcc, g++ 설치하기 (CentOS)  (1) 2018.05.10
[Linux] touch 파일 생성하기  (0) 2018.05.09
[Linux] mv 파일 및 디렉토리 이동  (0) 2018.05.09
    'OS/Linux' 카테고리의 다른 글
    • [Linux] ntpdate로 시간동기화 하기
    • [Linux] rdate로 시간동기화 하기
    • [Linux] gcc, g++ 설치하기 (CentOS)
    • [Linux] touch 파일 생성하기
    Peter Ahn
    Peter Ahn
    IT 정보 공유, 프로그래밍 지식 공유

    티스토리툴바