답변:
파이프 뷰어 pv를 사용하십시오 . 훌륭한 도구입니다. 일단 당신이 그것에 대해 알면 당신은 그것없이 어떻게 살았는지 결코 알 수 없습니다.
또한 진행률 표시 줄과 전송 속도를 표시 할 수 있습니다.
cat file | pv -b
파일 크기를 반환합니다.
process_a | tee >(process_b) | wc --bytes
작동 할 수 있습니다. 그런 다음 wc
의 수를 필요한 곳으로 리디렉션 할 수 있습니다 . 경우 process_b
에 출력 아무것도 stdout
/ stderr
당신은 아마 만, 어딘가이 리디렉션해야합니다 /dev/null
.
약간 고안된 예 :
filestore:~# cat document.odt | tee >(dd of=/dev/null 2>/dev/null) | wc --bytes
4295
설명을 tee
통해 : 출력을 여러 파일 (+ stdout)로 보낼 수 있으며 >()
구성은 bash의 "프로세스 대체"입니다.이 경우 프로세스는 쓰기 전용 파일처럼 보이기 때문에 파일뿐만 아니라 프로세스로 리디렉션 할 수 있습니다 ( 여러 프로세스에 출력을 보내는 데 사용하는 예는 여기 또는 이 질문 + 답 을 참조 하십시오tee
.
나는 파티에 늦었다는 것을 알고 있지만이 유용한 스레드를 향상시킬 수있는 좋은 대답이 있다고 생각합니다.
이것은 @Phil P와 @David Spillett 답변의 혼합이지만 다음과 같습니다.
바이트 수는 process_b의 출력과 함께 stdout에 인쇄됩니다.
접두사를 사용하여 출력으로 작업 할 때 바이트를 포함하는 행을 식별 할 수 있습니다 ( Bytes:
예제에서).
exec 3>&1
process_a | tee >({ echo -n 'Bytes:'; wc -c; } >&3) | process_b
exec 3>&-
경고 :
출력에서 행 순서에 의존하지 마십시오
. 순서는 예측할 수 없으며 동일한 매개 변수로 동일한 스크립트를 호출 할 때도 항상 다를 수 있습니다!
exec
파일로 직접 출력 할 수 없습니까?input-command | dd 2>~/fred | output-command