OS/Bash

프로세스 대체

SciomageLAB 2024. 9. 7. 20:40
반응형

프로세스 대체(Process Substitution)는 쉘 스크립트에서 명령어의 출력을 파일처럼 사용할 수 있게 해주는 기능입니다. 이 기능을 통해 명령어의 출력을 임시 파일에 저장하지 않고도 다른 명령어의 입력으로 사용할 수 있습니다. 이는 복잡한 파이프라인을 간단하게 만들고, 파일 시스템의 사용을 줄이는 데 유용합니다.

프로세스 대체 문법

프로세스 대체에는 두 가지 주요 문법이 있습니다:

1. >(command)

표준 출력을 지정된 명령어의 입력으로 보내는 방식입니다. 이 문법은 표준 출력을 임시 파일로 사용하지 않고 명령어의 입력으로 전달합니다.

`command1 > >(command2)`    

여기서 command1의 표준 출력은 command2의 표준 입력으로 전달됩니다.

2. <(command)

지정된 명령어의 출력을 임시 파일로 사용하여 다른 명령어의 입력으로 전달합니다. 이 문법은 파일처럼 다룰 수 있는 임시 파일을 생성합니다.

`command1 <(command2)`

여기서 command2의 표준 출력은 command1의 표준 입력으로 전달됩니다.

예시와 사용 사례

1. 파일 비교

두 파일의 내용을 비교할 때, 프로세스 대체를 사용하여 두 명령어의 출력을 diff로 비교할 수 있습니다.

diff <(ls -l /dir1) <(ls -l /dir2)

이 명령어는 /dir1/dir2 디렉토리의 파일 목록을 각각 ls -l 명령어로 얻어 diff 명령어로 비교합니다.

2. 출력 필터링

grep 명령어로 특정 패턴을 검색할 때, 다른 명령어의 출력을 검색할 수 있습니다.

grep "search_term" <(find /var/log/ -name "*.log")

이 명령어는 find 명령어로 찾은 .log 파일의 목록에서 search_term을 검색합니다.

3. 프로세스 간 데이터 전달

프로세스 대체를 사용하여 명령어의 출력을 다른 명령어에 전달합니다. 예를 들어, sort 명령어로 정렬된 결과를 uniq로 필터링할 수 있습니다.

uniq < <(sort file.txt)

이 명령어는 file.txt 파일의 내용을 정렬하고, 중복된 줄을 제거합니다.

반응형