임시 파일로 출력하고 다른 프로세스로 파이프됨

임시 파일로 출력하고 다른 프로세스로 파이프됨

제가 사용하고 있는 도구는 tool_1파일로의 출력을 지원하지 않고 stdout파일로의 출력만 지원합니다. 임시 파일(그 자리에서 생성됨)로 출력하고 내용을 다른 도구로 파이프하고 싶습니다 tool_2. 배쉬에서 이것이 가능합니까?

기본적으로 두 개의 명령문을 하나로 결합하고 정리할 임시 파일을 우아하게 생성하고 싶습니다.

tool_1 ... > output
tool_2 ... < output

답변1

가능하지만 사용 시 몇 가지 주의 사항이 있습니다.프로세스 교체:

tool_1 ... >(tool_2 ...)

>(tool_2 ...)파일 이름이 필요한 위치를 지정합니다 .tool_1

프로세스 교체는 파이프를 사용하여 어떤 형태로든 구현되므로 특히 파일이 지원하는 모든 것을 지원하지 않으며 결과 "파일"을 볼 방법이 없습니다.

이것이 적절하지 않은 경우 임시 파일을 사용하십시오.

file=$(mktemp); tool_1 ... "$file" && < "$file" tool_2 ...; rm "$file"

관련 정보