대화형 모드에서 stdout에 더 적은 버퍼를 쓰는 방법

대화형 모드에서 stdout에 더 적은 버퍼를 쓰는 방법

내 상황은 다음과 같습니다. 내가 요청할 때SQL예정\돕다, 출력을 다음으로 보냅니다.더 적은. 가끔 다음 쿼리를 작성하는 동안 도움말 내용을 유지하고 싶을 때가 있습니다. 내가 말하면 일어날 수 있을 거라 생각했는데더 적은표준 출력에 쓰기(예:할 것이다,대화형 모드에서.

한계:

\help의 내용을 본 후에 이런 일이 발생해야 하는지 결정하겠습니다. 따라서 psql에서 사용하는 호출기를 사용자 정의하는 것은 (제 생각에는) 옵션이 아닙니다. 이는 내 질문이 중복되지 않았음을 의미합니다.

https://stackoverflow.com/questions/14474138/customize-pager-in-psql

또는:

전체 파일을 한 화면에 표시할 수 있는 경우 표준 출력으로 인쇄되는 양을 줄이십시오.

내가 현재 사용하고 있는 것:

\setenv PAGER more OR \setenv PAGER 'less -X'
\help alter user
q (to exit less or more)
-- Now I can write my query while looking at the alter user syntax above

이 접근 방식에서 누락된 점은 콘텐츠를 본 후 -X 옵션을 원하는지 선택한다는 것입니다. 메인 버퍼와 백업 버퍼에 기록하면 더 적은 기능을 얻을 수 있다고 생각합니다.

답변1

출력을 저장하고 에 공급하는 자체 호출기 스크립트를 제공할 수 있습니다 less. 그런 다음 종료할 때 less출력을 다시 표시하거나 less직접 종료하도록 선택할 수 있습니다. 예를 들어, 출력 도움말이 파이프라인에 있고 less인수 없이 호출된다고 가정합니다.

#!/bin/bash
if tee /tmp/save | less -K
then    cat /tmp/save
fi

-K종료를 less켜서 반환 코드를 0 대신 2에서 2로 변경합니다 control-c. 그래서 정상적으로 종료 less하면 입력이 반복되지만, 중단하면 추가 출력을 얻지 못합니다.lesscat

관련 정보