2줄 쉘 프롬프트에서 `less -FX'가 잘 작동하도록 만드는 방법

2줄 쉘 프롬프트에서 `less -FX'가 잘 작동하도록 만드는 방법

내 쉘 프롬프트는 두 줄 길이입니다( 의 고급 버전입니다 [%n@%m %~]'$'\n''%#. $LESS를 로 설정했습니다 -FX. less를 종료하면 화면 끝에 줄이 남고 프롬프트가 두 줄 길이이므로 더 적은 출력이 바깥쪽으로 스크롤됩니다. 터미널 창.

차라리 출력의 마지막 줄을 잃은 다음 첫 번째 줄을 잃어버리고 싶습니다.

이 문제에 대한 해결책이 있습니까?

답변1

less 출력의 맨 위 줄은 맨 아래에 한 줄을 인쇄하여 한 줄 스크롤하기 때문에 맨 위에서 스크롤됩니다. 그것이 \n당신의 팁에 있는 내용입니다.

이 문제를 피하고 여전히 두 줄이 있는 경우 어떻게 해야 합니까?

프롬프트의 일부를 작성할 수 있습니다.이상두 줄 프롬프트를 사용하는 대신 일반 명령줄을 사용합니다. 어떤 의미에서 이는 일반 줄이며 일반 프롬프트 영역 외부 위에 인쇄됩니다(커서 제어를 위해 터미널 이스케이프 시퀀스가 ​​필요함).

제안한 대로 less마지막 출력 행을 덮어쓰면 이 경우가 처리됩니다.
하지만 다른 명령의 출력도 덮어쓰게 됩니다. 그 중 다수는 이 줄보다 더 많은 출력을 갖지 않습니다.

따라서 케이스가 아닌 경우 추가 개행 문자를 인쇄하는 등 이 두 가지 케이스를 명시적으로 처리해야 합니다 less.

확실히 가능하지만 매일 사용할 수 있을 만큼 원활하게 사용하려면 많은 수동 조정이 필요합니다...

터미널 스크롤 영역을 덜 변경하는 등 다른 가능한 방법도 있지만 이는 더 혼란스럽습니다.

답변2

3년 늦었다는 건 알지만 인터넷 검색을 통해 여기까지 왔으니 공유해야겠다는 생각이 들었습니다.

파일에 페이지를 매기려면:

(printf '\n'; cat file.txt) | less -FX

다른 명령(예: git log)의 출력에 페이지를 매기려면:

git log | (printf '\n'; cat) | less -FX

출력은 빈 줄로 시작됩니다. 그런 다음 less를 종료하면 해당 빈 줄이 사라지고 파일의 첫 번째 줄만 남습니다.

나는 그것을 git log 별칭으로 사용합니다.

관련 정보