리눅스 파이프
파이프
두 개 이상의 프로세스 간 통신을 가능하게하는 기능.
‘|
’기호로 나타내며, 앞의 명령어의 실행 결과(표준 출력)를 뒤의 명령어의 입력(표준 입력)으로 전달하여 여러 명령어를 연결하여 하나의 명령어처럼 사용
입출력 스트림
파이프(‘|
’)를 통해 이전의 명령어의 결과를 다음 명령어의 입력값으로 사용
파이프 특징
- 파이프는 단방향 통신
- 한 프로세스의 출력을 다른 프로세스의 입력으로 전달하는 단방향 통신 방식
- 메모리 기반 (IPC Inter-Process Communication)
- 메모리를 사용하여 프로세스간 데이터 전송
- Shell에서 직접 사용 가능
- Shell에서 제공하는 기능이므로, 명령어를 조합하여 사용 가능
파이프의 장점
- 복잡한 명령어를 간단하게 만들 수 있음
- 명령을 연결함으로써 파이프를 통해 동시에 작동하고 개별 기능을 배가할 수 있다
- 명령들 사이에 지속적인 데이터 전송을 가능하게 하여 임시 텍스트 파일이나 디스플레이 화면을 통해 정보를 전달할 필요가 없음
- 재사용성이 높다
- 파이프로 연결한 명령어들은 조합을 바꾸거나 순서를 바꿔 재사용 가능
- 유연성이 높다
- 명령어를 조합하면, 각 명령어의 출력 결과를 중간에 확인할 수 있어서, 중간 단계의 결과를 바탕으로 새로운 명령어를 추가하거나 조합을 변경할 수 있음
파이프 명령어
- grep - 패턴과 일치하는 라인 출력
ls -l | grep ".txt"
현재 디렉토리에서 txt확장자를 가진 파일 검색
- sort - 데이터 정렬
cat file.txt | sort
파일 내용을 알파벳 순으로 정렬
- head - 파일의 처음 일부분 출력
ls -l head -n 5
현재 디렉토리에서 상위 5개 파일 출력
- tail - 파일의 마지막 일부분 출력
ls -l | tail -n 3
현재 디렉토리에서 하위 3개 파일 출력
- cut - 텍스트 파일에서 원하는 부분만 추출
cat file.txt | cut -d "," -f 2 ','
구분자로 구분된 파일에서 두 번째 필드만 추출
- awk - 텍스트 파일을 가공하여 출력
cat file.txt | awk '{print $2, $1}'
파일에서 두 번째 필드와 첫 번째 필드를 순서대로 출력
서브목차