인수로 주어진 파일에서 데이터를 읽을 것으로 예상되는 프로그램으로 데이터를 스트리밍하려면 어떻게해야합니까?


17

거대한 gzipped 파일이 있으며 프로그램 (이 경우 4s-import)을 읽으십시오. 먼저 파일을 압축 해제 한 다음 파일 경로를 인수로 사용하여 프로그램을 호출하는 데 많은 시간이 걸립니다. 다음과 같은 것을 할 수 있습니까?

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

SOME-MAGIC은 stdin을 포함하는 추상 파일의 경로와 같습니다.

내가 달리 해야하는 훨씬 느리고 더 많은 디스크 공간 소비 대안은 다음과 같습니다.

zcat huge.gz > huger
4s-import huger

답변:


32

(또는 ) 의 프로세스 대체 연산자 <()를 사용할 수 있습니다 .bashzsh

4s-import <(zcat huge.gz)

이 연산자는 임시 FIFO를 생성합니다 /dev/fd/NN및 대체 <(.)문자열로 /dev/fd/NN. 4s-import이제 /dev/fd/NN해당 fifo에서 열고 읽을 수 있으며 bashrun은 실행 zcat huge.gz되고 출력은로 전송됩니다 /dev/fd/NN.


17
  1. 많은 프로그램에는 -표준 입력이 있습니다. 그렇다면 "내장"으로 사용하십시오.

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

  3. 세 번째 옵션은 mkfifofifo 특수 파일을 만드는 데 사용 하는 것입니다. 한 쉘에서는 데이터 (예 :)를 파이프하고 다른 쉘에서는 gunzip > your_fifo_filefifo를 파일로 사용하여 프로그램을 호출합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.