![프로세스 대체에서 <(명령)과 >(명령)의 차이점](https://linux55.com/image/180102/%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4%20%EB%8C%80%EC%B2%B4%EC%97%90%EC%84%9C%20%26lt%3B(%EB%AA%85%EB%A0%B9)%EA%B3%BC%20%26gt%3B(%EB%AA%85%EB%A0%B9)%EC%9D%98%20%EC%B0%A8%EC%9D%B4%EC%A0%90.png)
존재하다프로세스 교체두 가지 구문을 볼 수 있습니다.
>(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