다음 명령 순서는 잘 작동합니다.
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
.