less가 입력을 한 줄씩 버퍼링하는 것을 강제로 중지하려면 어떻게 해야 합니까?

less가 입력을 한 줄씩 버퍼링하는 것을 강제로 중지하려면 어떻게 해야 합니까?

stdin에서 읽을 때 less전체 행을 읽을 때까지 출력이 표시되지 않습니다.

나는 개행을 인쇄하지 않고 줄의 진행 상황을 인쇄하는 스크립트를 사용하고 있으며, less.

내 문제를 보여주는 몇 가지 샘플 bash 코드는 다음과 같습니다.

while true ; do echo -n zzz ; sleep 1s ; done | less

수집한 입력을 강제로 표시하기 위해 누를 수 있는 버튼이 있습니까 less, 아니면 이 버퍼링을 비활성화하는 옵션이 있습니까?

답변1

나는 이것이 불가능하다고 생각한다.

대신 입력을 필터링하여 줄 바꿈을 삽입할 수 있습니다. 이것은 줄 바꿈 위치를 신경 쓰지 않는 매우 간단한 필터입니다. 확실히 개선될 수 있지만 적어도 거의 실시간으로 출력을 볼 수 있습니다.

perl -e '$| = 1; while (sysread STDIN, $_, 80) {print; /\n/ or print "\n"}

또는 다른 뷰어로 전환할 수도 있습니다. Emacs를 사용하지 않는다면 Emacs의 쉘 모드가 헤비급 솔루션입니다. *shell*(다음을 사용하여 생성된) 버퍼에서 스크립트를 실행 합니다 M-x shell. 다른 인터페이스 외에도 출력 표시를 포함하여 덜 할 수 있는 모든 작업과 더 많은 작업을 수행할 수 있습니다.

관련 정보