프로세스 대체
프로세스 대체(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
파일의 내용을 정렬하고, 중복된 줄을 제거합니다.