한 화면 만 텍스트로 가득차면 고양이처럼 일하게하십시오.


6

여기 내 데비안 시스템에서, less 언제나 대체 화면을 열어 물건을 보여줍니다.

표시 할 라인이 2 ~ 3 개 밖에 없다면 이는 성가신 일입니다. 내가 좋아하는 것 less 에:

  • 정보가 충분하지 않은 경우 호출기로 작동합니다.

  • 같이 작동하고 cat, 그렇지 않으면.

분명히, less ~을 가지고있다. -F "단일 화면"사례에 대한 플래그 :

-F 또는 - if-one-one-screen

첫 번째 화면에 전체 파일을 표시 할 수있는 경우 자동 종료 기능을 줄입니다.

그러나 제 경우에는 단지 다시 나옵니다. 정보는 표시되지 않습니다. 더 좋아해. cat /dev/null 따라서별로 유용하지 않습니다.

누구든지 아이디어를 얻었습니다. 어떻게 달성 할 수 있습니까? less 행동?

답변:


4

결합 할 수 있습니다. -F-X이 명령은 terminfo 초기화 순서를 비활성화합니다.

export LESS=-FX

이것은 이점을 가진다. less 파일이 얼마나 오래 있었는지에 상관없이 종료시 표시된 텍스트를 지우지 않습니다.


멋지군, 그게 내가 원하는 것을 말한거야. 화면이 지워지지 않았다는 것은 사소한 단점 일뿐입니다.
Boldewyn

2

다음과 같이 작은 래퍼 스크립트를 만들 수 있습니다.

#!/bin/bash
if (( $(wc -l < "$1") < ${LINES:-20} ))
then
        cat "$1"
else
        less "$1"
fi

당신이 그것을 창조한다면 /usr/local/bin 또는 ~/bin 다음과 같은 파일로 less2 (매우 짧은 이름을 사용하는 것이 좋습니다. l 쉬운 타이핑을 위해서), 그리고 그것이 실행 파일인지 확인하십시오. chmod a+x /usr/local/bin/less2, 대신에 사용할 수 있습니다. less 형식 명령 less 파일 이름 , 즉, less2 파일 이름 (또는 l 파일 이름 ).

다른 명령의 출력을 통해 다음 명령을 파이프하는 경우에는 작동하지 않습니다. less, 또는 옵션 또는 여러 파일 이름을 지정하는 경우.

추가 스크립트 파일없이 동일한 작업을 수행하는 것은 의심의 여지가 없습니다. 별명 원하는 경우 함수.


1
s/an alias/a function/ 벼락치기 시도 if 사용하는 진술 $1 별칭으로 미치광이로가는 길입니다. 반면에 함수를 정의하는 것은 less() { if ...; then cat "$1"; else command less "$1"; fi; }
grawity

다음을 사용하여 스크립트를 업데이트 할 수 있습니다. HEIGHT=$(stty size | awk '{ print $1 }'). 그렇다면 네, 유용한 확장이 될 것입니다. 이 옵션을 이용해 주셔서 감사합니다.
Boldewyn

@ 볼드윈 : bash 있다 $LINES (과 $COLUMNS )를 수신하면 자동으로 업데이트됩니다. SIGWINCH. (그리고 if checkwinsize 프롬프트가 표시 될 때마다 켜져 있습니다.)
grawity

나는이 코드를 사용한다. github.com/mpapis/home_dotfiles/blob/master/.functions#L3-30 파일 이름이 짧을 경우 cat으로 끝나고 파일 이름이 다음과 같이 끝날 때 줄 번호를 사용합니다. {line}
mpapis

2

같이 말하는 으로 자부심 , 당신은 패스 할 수 있습니다. -F -X 이것을 달성하기 위해, 그러나 그것은 의미한다. less 터미널 스크롤 백에 많은 텍스트를 남겨 둡니다 (그리고 순서가 맞지 않을 수도 있습니다. less ). less 네가 지나갈 때 아무것도 출력하지 않는다. -F ~이다. 알려진 문제 # 303 .

대신 래퍼 스크립트를 사용할 수 있습니다. 느린 입력의 경우 git log -Gregex, 원하십니까 :

A) 주 화면이 나타날 때 줄을 표시 한 다음 스크롤이 필요할 때 대체 화면으로 전환하십시오 (따라서 첫 번째 $LINES 출력 결과는 항상 스크롤바에 나타납니다.); 그렇다면 2 번째 Gilles의 비슷한 질문에 대한 답변 .

B) 줄이 대체 화면에 나타나지 만 스크롤이 불필요한 것으로 판명되면 대체 화면을 종료하고 줄을 기본 화면에 인쇄합니다 (따라서 스크롤이 필요하면 스크롤백에 아무런 출력도 나타나지 않습니다). 그렇다면 비슷한 질문에 대한 내 대답 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.