Bash는 "대화형" 출력을 특수 파일로 리디렉션합니다.

Bash는 "대화형" 출력을 특수 파일로 리디렉션합니다.

pv예를 들어 출력, 즉 진행률 표시줄을 로 리디렉션하고 싶습니다 /dev/tty1.

 ...  | pv -perts 100G |  ... 2> /dev/tty1

하지만 내가 얻는 것은 진행률 표시줄이 업데이트될 때마다 이전 상태가 위 행에 남아 있는 동안 새 행에서 업데이트된다는 것입니다.

새로고침할 수 있는 방법이 있나요? 들어본 적은 있지만 col출력이 완료된 후에 인쇄할 줄 알았는데, 물론 시각적으로 진행 상황을 추적하는 데는 적합하지 않습니다.

답변1

나는 tty와 pty가 동일하게 동작한다고 가정합니다. 지금은 후자에만 액세스할 수 있습니다.

이 시도...

... | pv --force -perts 100G 2> /dev/tty1 | ...

/dev/tty1내 테스트에서는 다른 터미널에서 실행하더라도 관련 터미널에서 진행률 표시줄이 정상적으로 렌더링됩니다.

--force(맨 페이지에도 표준 오류가 터미널을 가리키지 않는 경우 에만 필요하다고 나와 있다는 점을 덧붙여야 합니다 pv. 저는 의사 터미널을 사용하고 있으므로 두 터미널이 동일하지 않다고 생각할 수도 있습니다. 없이 작동한다면 그, 꺼지세요.)


예제가 실행됩니다...

cat file_250M | pv --force -perts 250M 2> /dev/pty7 | wc

"로컬" 터미널:

0       0 262144000

/dev/pty7 터미널(단일 변경 라인):

0:00:06 [36.7MiB/s] [======================================================================>] 100%

관련 정보