인수로 제공된 파일에서 데이터를 읽으려는 프로그램에 데이터를 어떻게 스트리밍합니까?

인수로 제공된 파일에서 데이터를 읽으려는 프로그램에 데이터를 어떻게 스트리밍합니까?

나는 거대한 gzip 압축 파일을 가지고 있고 이를 읽을 수 있는 프로그램(이 경우 4s-import)을 원합니다. 먼저 파일의 압축을 푼 다음 파일 경로를 인수로 사용하여 프로그램을 호출하는 데 많은 시간이 걸립니다. 다음과 같은 작업을 수행할 수 있습니까?

zcat huge.gz | 4s-import <SOME MAGIC>

SOME-MAGIC이 stdin을 포함하는 추상 파일의 경로와 같은 경우는 어디입니까?

그렇지 않으면 더 느리고 더 많은 디스크 공간을 소비하는 대안은 다음과 같습니다.

zcat huge.gz > huger
4s-import huger

답변1

(또는) 절차적 대체 연산자를 사용할 수 있습니다 <().bashzsh

4s-import <(zcat huge.gz)

이 연산자는 임시 fifo를 생성 /dev/fd/NN하고 이를 <(.)string으로 대체합니다 /dev/fd/NN. 4s-import이제 /dev/fd/NNfifo를 열고 읽을 수 있으며, bash실행은 zcat huge.gz출력을 /dev/fd/NN.

답변2

  1. 많은 프로그램에는 -표준 입력이 있습니다. 당신의 것이 이것을한다면 "내장"되어 있으므로 사용하십시오.

  2. /dev/stdin또는 /dev/fd/0파일로 사용해 볼 수도 있습니다 .

  3. 세 번째 옵션은 mkfifofifo 특수 파일을 생성하는 것입니다. 한 셸에서는 데이터(예 gunzip > your_fifo_file: )를 파이프로 연결하고, 다른 셸에서는 fifo를 파일로 사용하여 프로그램을 호출합니다.

관련 정보