less -S가 전체 화면을 차지하는 것을 방지하는 방법

less -S가 전체 화면을 차지하는 것을 방지하는 방법

내가 이것을 가지고 있다고 가정 해 봅시다 :cat new_file.txt | less -FRSX

그런 다음 오른쪽 버튼을 눌러 오른쪽으로 스크롤한다고 가정해 보겠습니다.

이렇게 하면 new_file.txt의 내용이 명령줄의 맨 위로 이동되고 new_file.txt의 내용과 현재 명령 사이에 많은 빈 공간이 있게 됩니다.

예를 들어 다음과 같습니다.

contentsofnewfile.txtyupmorecontenntsconteeentsss
~
~
~
~
~
~
~
~
.
.
.
~
(END)

오른쪽 버튼을 눌러도 파일의 내용이 맨 위로 이동하는 대신(여전히 오른쪽으로 스크롤되어야 함) 빈 줄이 없도록 하려면 어떻게 해야 합니까?

~
~
~

위에 표시된

답변1

(제가 8년 만에 같은 문제를 겪은 세계 두 번째 사람이고 유닉스/리눅스 사용 역사상 두 번째 사람이라는 게 믿기지 않습니다.)

분석하다

  • less비슷한 것이 있나요 more -c? 예 -c, 기능이 있습니다.
  • less비슷한 것이 있나요 more -20? 예 -z 20, 하지만 고장났습니다(아래 인용문 참조).
  • 효과적인가요 less --window=-5? 예, 하지만 예상과는 다르게 고장났습니다(아래 인용문 참조).
  • 예상대로 작동 합니까 LINES=5 less --window=5? 아니요, 고장났습니다(아래 인용문 참조).
  • less -c -5기능이 비슷한가요 more -c -5? (이 경우) 행이 5개 이하인 경우에만그리고아무 키도 누르지 않았습니다.
  • less -F원하는 대로 작동 합니까 ? (OP) 화면에 문자 공간이 충분합니까? 예.

-5 -z5 -z 5 --window=5모두 기능적으로 동일합니다.

그렇다면-z아니요설명서에 나와 있는 대로 작동합니다.

z일부 버전과의 호환성을 위해 생략될 수 있습니다.

...그리고 뭐하다그것은 무엇을 합니까?

결론적으로

--window=지금오직설정하다~에 따르면앞으로 스크롤/뒤로 스크롤페이지 크기--max-forw-scroll(합의 밑수 --max-back-scroll),투시창의 크기가 아님.

왜 이런 식으로 작동합니까? 글쎄, -z처음 추가되었을 때(여전히 README기능임)일을 했어요"일부 버전의 추가"와 같습니다. 그러나 거의 동시에 그들은 다음 인용문에 언급된 코드를 도입했는데, 이는 깨졌고 -z어떤 이유로 모든 사람들이 그것이 좋은 것이라고 생각했습니다(왜냐하면 그것은 결코 수정되지 않았고 심지어 마크도 없었기 때문입니다).

(긴) 매뉴얼 페이지에 단락이 있습니다바로 밑 근처.

환경 변수

COLUMNS

화면의 열 수를 설정합니다. TERM변수로 지정된 열 수 보다 우선합니다 . (그러나 TIOCGWINSZ또는 를 지원하는 윈도우 시스템이 있는 경우 WIOCGETD윈도우 시스템의 화면 크기 이해가 LINESCOLUMNS환경 변수보다 우선합니다.)

LINES문제의 변수이며 OP(및 나)에 영향을 미칩니다.

less -5에 비해 기대되는 기능은 무엇입니까 more -5? Compatibility With More설명서의 () 부분이 제안하는 것처럼 동일하게 작동해야 하며 다음 less과 같이 사용할 수 있습니다 more(저는 이 작업을 수행하는 시스템을 사용했습니다).

프로그램이 "more"라는 파일 링크를 통해 호출되면 less는 (대부분) POSIX more 명령 사양에 따라 동작합니다.

나는 POSIX 사양이 현재 구현에 -z문제가 있다고 확신합니다.

더 적은 개선 사항이 제공되므로 한 번만 작동할 것으로 예상됩니다.부정적인가치는 다음을 기반으로 작동합니다.맨 아래화면.

제 생각에는 이것이 엉망이 된 것 같아요. 당시에는 테스트와 사용 사례가 충분하지 않았고, 이를 구현한 사람이 새로운 "동적 창 값"을 구현한 사람과 동일하지 않았습니다.

최신 리소스를 열었고 내일 살펴보겠습니다.

답변2

하나를 만들어 보세요 cat new_file.txt | less -FRSXc. 그러면 첫 번째 문제가 해결됩니다.

두 번째 질문에는 물결표를 사용하세요.cat new_file.txt | less -FRSXc~

매뉴얼 페이지에서 다음을 볼 수 있습니다.

-c 또는 --clear-screen을 사용하면 맨 위 행에서 아래쪽으로 전체 화면 다시 그리기가 수행됩니다. 기본적으로 전체 화면 다시 그리기는 화면 하단에서 스크롤하여 수행됩니다.

-~ 또는 --tilde 일반적으로 파일 끝 뒤의 줄은 단일 물결표(~)로 표시됩니다. 이 옵션을 사용하면 파일 끝 뒤의 줄이 빈 줄로 표시됩니다.

관련 정보