존재하다프로세스 교체두 가지 구문을 볼 수 있습니다.
>(command_list)
그리고
<(command_list)
나는 종종 두 번째 구문을 사용합니다. 그런데 둘의 차이점이 뭔지 모르겠네요? 검색해본 결과 특별한 결과는 나오지 않았습니다.
답변1
너는 사용한다:
consumer <(feeder)
~을 위한산출of는 stdin에서 입력을 얻을 수 없는 경우 (이 경우에는 를 사용함 ) feeder
에 공급되지만 인수로 주어진 파일 이름에서만 입력을 얻을 수 있습니다.consumer
consumer
feeder | cousumer
이 경우 feeder
출력은 파이프의 쓰기 끝이고 확장자는 <(feeder)
파일 이름( /dev/fd/<x>
지원되지 않는 시스템에서는 명명된 파이프일 수 있지만 일반적으로 ) 이며 /dev/fd/<n>
일단 열리면(에 의해)consumer
읽다튜브의 끝입니다.
대칭적으로 다음을 사용합니다.
feeder >(consumer)
feeder
출력을 stdout(다시 수행할 수 있음)으로 보내지 않고 feeder | consumer
이름을 인수로 전달해야 하는 파일로 보내는 명령의 경우 .
consumer
그럼입력하다는 파이프의 읽기 끝이며 파이프의 쓰기 끝에 도달하기 위해 >(consumer)
열리면(를 통해 전달된) 파일 이름으로 확장됩니다 .feeder
<(...)
다음과 같이 여러 입력이 필요한 명령에 유용하기 때문에 더 일반적으로 사용됩니다 .
diff -u <(cmd1) <(cmd2)
명령이 여러 출력을 생성하거나 명령이 출력을 stdout으로 보낼 수 없는 경우는 흔하지 않습니다. 일반적인 예외는 다음과 같습니다.
feeder | tee >(consumer1) >(consumer2) | consumer3
그 중에는 tee
일부 출력을 여러 파일(stdout 외에도)에 병렬로 보내는 일반적인 명령이 있습니다.
다음과 같은 내용을 본 적이 있을 것입니다.
tar cf - somedir |
gzip -9 |
tee >(shasum > dir.tgz.shasum) >(md5sum > dir.tgz.md5sum) > dir.tgz
체크섬을 생성 하고 저장하는 동안 출력 gzip
(여기서는 압축된 tar 아카이브)을 출력 파일로 보냅니다.shasum
md5sum