티 파이프 및 pnmtools - 파일 자르기

티 파이프 및 pnmtools - 파일 자르기

다음 명령 순서는 잘 작동합니다.

pngtopnm file.png 2> /dev/null > dump1
pnmfile < dump1
stdin:  PPM raw, 1920 by 1080  maxval 255
ls -l dump1
-rw-r----- 1 cmb 6220817 Sep 15 14:26 dump1

하지만 "티"를 사용하도록 파이프를 다시 실행하세요.출력 자르기덤프 파일에서:

pngtopnm file.png 2> /dev/null | tee dump2 | pnmfile
stdin:  PPM raw, 1920 by 1080  maxval 255
ls -l dump2
-rw-r----- 1 cmb   49152 Sep 15 14:34 dump2

"tee"가 표준 입력을 보내는 것과 덤프 파일에 저장된 것 사이의 차이점이 무엇인지 명확하지 않습니다. "dump2"가 잘리고 "dump1"과 다른 이유는 무엇입니까?

cmp dump[12]
cmp: EOF on dump2 after byte 49152, in line 4

파이프 끝에 다른 것을 넣는 것이 작동하는 것 같기 때문에 "pnmfile"과 관련이 있는 것으로 의심됩니다. "dump3"은 dump1과 동일한 크기/내용을 가지며 파이프의 끝("fmt")에서 작업을 수행합니다. 파일에..:

pngtopnm file.png 2> /dev/null  | tee dump3 |fmt -10 > dump4
ls -l dump[34]
-rw-r----- 1 cmb 6220817 Sep 15 14:41 dump3
-rw-r----- 1 cmb 6224311 Sep 15 14:41 dump4

(XUbuntu 20.04, diffutils 3.7, Netpbm 10.0, coreutils 8.30)

답변1

pngtopnm file.png 2> /dev/null | tee dump2 | pnmfile

pnmfile파일 정보를 출력하기에 충분한 정보가 나올 때까지 읽은 다음 파이프를 닫습니다. 이 시점에서 tee가 파이프를 닫고 dump2도 닫힙니다.

노력하다 tee -p dump2.

관련 정보