이 명령을 실행하면 콘솔에 출력이 표시됩니다. 그러나 출력이 다른 명령으로 파이프되는 경우에는 작동하지 않습니다. 아래를 참조하세요.
(pv -F $'%t %r %e\n' /dev/nvme0n1p1 | gzip -c >/run/test.img )
0:00:01 [25.2MiB/s] ETA 0:00:18
0:00:02 [23.7MiB/s] ETA 0:00:18
0:00:03 [ 100MiB/s] ETA 0:00:07
0:00:04 [ 199MiB/s] ETA 0:00:01
이제 아래에서 동일한 명령 출력이 다른 명령으로 파이프되어 아무 것도 표시되지 않는 것을 확인하세요. stderr를 stdout으로 리디렉션하고 ":[ ]" 문자를 제거할 수 있도록 tr -d에 전달했습니다.
(pv -F $'%t %r %e\n' /dev/nvme0n1p1 | gzip -c >/run/test.img ) 2>&1 | tr -d ':[]'
아래에서 동일한 명령을 참조하세요. 그러나 stderr를 stdout으로 리디렉션하지 않습니다. 또한 위의 동일한 명령을 사용하여 stderr를 stdout으로 리디렉션하지 않으면 원하는 결과를 얻지 못합니다. 아래를 참조하세요. tr - d 제거 다음 내용 문자 ":[]"는 작동하지 않습니다. tr -d 명령이 완전히 무시되는 것을 볼 수 있습니다.
(pv -F $'%t %r %e\n' /dev/nvme0n1p1 | gzip -c >/run/test.img ) | tr -d ':[]'
0:00:01 [25.2MiB/s] ETA 0:00:18
0:00:02 [23.7MiB/s] ETA 0:00:18
0:00:03 [ 100MiB/s] ETA 0:00:07
0:00:04 [ 199MiB/s] ETA 0:00:01
나는 이 문제를 해결하려고 수많은 시간을 보냈고 stackexchange와 모든 포럼을 검색했지만 이 문제를 해결하는 방법을 알 수 없습니다.
또한 파일 설명자 2>&3을 사용해 보았지만 여전히 운이 없습니다.
답변1
사용pv -f …
~에서man 1 pv
:
-f
,--force
강제 출력. 일반적으로pv
표준 오류가 터미널이 아닌 경우 시각적 표시가 출력되지 않습니다. 이 옵션을 사용하면 강제로 그렇게 됩니다.
(pv -fF $'%t %r %e\n' /dev/nvme0n1p1 | gzip -c >/run/test.img ) 2>&1 | tr -d ':[]'