OS/Linux

[Linux] 파이프(pipe)란

장일규 2025. 2. 1. 02:12



리눅스 명령어를 사용하다 보면, 여러 명령어를 조합하여 복잡한 작업을 수행해야 할 때가 많다.

이때 유용하게 사용할 수 있는 기능이 바로 파이프(pipe)이다.

이 글에서는 파이프의 개념부터 실제 사용법까지 알아보고자 한다.

 

파이프(pipe)는 프로세스 간 통신을 가능하게 하는 중요한 기술 중 하나이다.

 

1.  파이프(pipe)란 무엇인가?

  • 파이프는 두 개의 프로세스가 서로 통신할 수 있도록 해주는 리눅스 기능이다.
  • 한 프로세스의 표준 출력(stdout)을 다른 프로세스의 표준 입력(stdin)으로 연결해준다.
  • 파이프는 기호로 표현되며, 명령어를 조합하여 복잡한 작업을 간단하게 처리할 수 있다.

2.  프로세스 간 통신이란?

  • 프로세스(Process): 컴퓨터에서 실행 중인 프로그램을 프로세스라고 한다. 터미널에서 ls 명령어를 실행할 때마다 새로운 프로세스가 생성된다.
  • 통신(Communication) : 두 개 이상의 프로세스가 서로 데이터를 주고받는 것
  • 프로세스 간 통신의 필요성 : 프로그램이 복잡해지면 하나의 프로세스로 모든 작업을 처리하기 어렵다. 대신, 여러 프로세스가 각자 맡은 일을 하고, 서로 데이터를 주고받으며 협력하면 더 효율적으로 작업을 수행할 수 있다.
  • 리눅스 파이프의 역할 : 파이프(|)는 한 프로세스의 출력을 다른 프로세스의 입력으로 연결해준다.
    • 예를 들어, ls -l | grep ".txt"에서: ls -l은 파일 목록을 출력하는 프로세스이다.
    • grep ".txt"는 입력으로 받은 데이터에서 .txt 파일만 찾는 프로세스이다.
    • 파이프(|)ls -l의 출력을 grep ".txt"의 입력으로 전달한다.
    • 이렇게 두 프로세스가 파이프를 통해 데이터를 주고받는 것이 프로세스 간 통신이다.

3.  파이프(pipe)의 장점

  • 간결성 : 여러 명령어를 조합하여 한 줄로 복잡한 작업을 수행할 수 있다.
  • 효율성 : 중간 결과를 파일에 저장하지 않고도 프로세스 간 데이터를 전달할 수 있다.
  • 확장성 : 여러 개의 파이프를 연결하여 더 복잡한 작업 흐름을 만들 수 있다.

4.  파이프(pipe)의 단점 및 주의사항

  • 파이프는 단방향 통신만 지원한다. 즉, 데이터는 한 방향으로만 흐른다.
  • 파이프를 과도하게 사용하면 명령어가 복잡해져 가독성이 떨어질 수 있으니, 적절히 사용하는 것이 중요.

5.  파이프(pipe)의 기본 사용법

예시1)

command1 | command2

 command1의 출력이 command2의 입력으로 전달된다.

 

예시2)

ls -l | grep ".txt"

 ls -l 명령어로 디렉토리의 파일 목록을 출력하고, 그 결과에서 .txt 파일만 필터링한다.

 

예시3)

cat logfile.txt | grep "error" | sort

logfile.txt에서 "error"라는 단어가 포함된 줄을 찾고, 그 결과를 정렬한다.

 

예시4)

ps aux | grep "nginx"

실행 중인 프로세스 중에서 nginx와 관련된 프로세스만 필터링한다.

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

[Linux] tee  (0) 2025.02.02
[Linux] 커널이란?  (0) 2025.02.02
[Linux] alias  (0) 2025.02.02
[Linux] systemd란?  (0) 2025.02.01
[Linux] 리다이렉션(Redirection)  (0) 2025.02.01