종료 시 화면이 지워지는 것을 방지하는 방법은 무엇입니까? [복사]

종료 시 화면이 지워지는 것을 방지하는 방법은 무엇입니까? [복사]

나는 종종 less출력(예: 컴파일러 오류)을 읽기 위해 명령을 파이프합니다.

MyCommand | less

이는 많은 양의 출력을 쉽게 트롤링할 수 있기 때문에 훌륭하지만 종료하면 less출력이 사라집니다. less를 종료한 후에도 출력을 계속 표시하는 방법은 무엇입니까?

이 질문은 다음과 다릅니다.프로그램의 출력을 리디렉션하고 표준 출력으로 보내는 방법이 있습니까?이 질문은 를 통해 텍스트 파일로 출력하는 것과 관련되어 있기 때문에 tee내가 아는 한 less출력을 stdout.

답변1

사용less -X:

termcap 초기화 ​​및 초기화 해제 문자열을 터미널로 보내는 것을 비활성화합니다.

이렇게 하면 페이지 나누기 전후에 화면에 텍스트가 남게 됩니다. 그래서:

command | less -X

원하는 효과를 얻으실 수 있을 것입니다. 위로 스크롤하면 이 출력은 여전히 ​​잘못된 것입니다(중복 줄). 이는 파일이 기록되지 않으면 피할 수 없는 일입니다.

모든 호출에서 기본적으로 이 작업을 수행하는 LESS값을 포함하도록 환경 변수를 설정할 수도 있습니다 .Xless

파일을 사용하지 않고 파일에 쓰려면 또는 옵션을 tee사용할 수 있습니다 .less -o filename--log-file=filename

답변2

당신은 그것을 사용할 수 있습니다 :

 command | tee filename.out | less

less 명령을 실행한 후에도 여전히 출력을 확인해야 하는 경우 편집기를 통해 filename.out을 확인하세요.

또 다른 아이디어는 멍청한 터미널 유형을 사용하도록 용어 설정을 변경하는 것입니다. 이것을 시도해야합니다.

답변3

문제가 종료 시 "화면 지우기"보다 덜한 경우라면 시작 및 중지 시 터미널/termcap init/de-init 문자열을 전송하지 않도록 less에 지시하여 이 동작을 방지할 수 있습니다. 를 사용하여 이를 수행할 수 있습니다 -X. 그러니 한번 시도해 보세요 command | less -X.

이러한 문자열이 실제로 필요한 작업을 수행하면 다른 부작용이 있을 수 있지만 그런 일이 발생하지 않기를 바랍니다.

답변4

more대신 해당 명령을 사용해 볼 수도 있습니다 less. 여전히 출력을 페이징하고 보기 좋게 스크롤할 수 있지만 결국 터미널은 마치 아무것도 파이프되지 않은 것처럼 출력을 유지하게 됩니다.

관련 정보