Bash 스크립트에서는 tput
터미널과 관계없이 더 적은 변수를 설정할 수 있습니다.
export LESS_TERMCAP_me=$(tput sgr0; )
로 같은 일을 할 수 있나요 lesskey
?
답변1
짧은 답변
예변수를 파일에 넣을 수 있지만
LESS_TERMCAP_me
소스lesskey
코드를 수정하고 자신만의less
버전을 구축해야 합니다(아래에서 설명합니다).아니요파일 에는 터미널에 구애받지 않는
lesskey
외부 명령이 포함될 수 없습니다 .tput
그러나lesskey
아래 제안된 대로 여러 파일을 사용할 수 있습니다.토마스 디키의 답변.
lesskey
문서
주문하다lesskey
사람이 읽을 수 있는 텍스트 콘텐츠를 명령으로 변환하는 데 사용되는 바이너리 구성 파일입니다 less
. 구성 파일의 이름은 다음과 같습니다.lesskey
문서일반적으로 파일 ~/.less
.
파일에는 세 부분이 포함되어 있습니다.
- 주문하다(예를 들어
:q quit
) - 라인 편집(예를 들어
^G abort
) less
환경 변수(예를 들어LESS_TERMCAP_me = \033(B\033[m
)
변수를 파일 LESS_TERMCAP_*
에 넣기lesskey
$ cat > lesskey.txt << EOF
#env
LESS = -iSrsM +Gg
LESS_TERMCAP_md = $(tput bold; tput setaf 6)
LESS_TERMCAP_me = $(tput sgr0)
LESS_TERMCAP_so = $(tput bold; tput setaf 3; tput setab 4)
LESS_TERMCAP_se = $(tput rmso; tput sgr0)
LESS_TERMCAP_us = $(tput smul; tput bold; tput setaf 7)
LESS_TERMCAP_ue = $(tput rmul; tput sgr0)
LESS_TERMCAP_mr = $(tput rev)
LESS_TERMCAP_mh = $(tput dim)
EOF
$ lesskey lesskey.txt # By default lesskey writes ~/.less
$ man bash # By default man uses less (pager)
허점
이 명령은 less
구성을 ~/.less
너무 늦게 읽습니다.
즉, 변수를 검색한 직후입니다 LESS_TERMCAP_*
.
이 오류는 영향을 미칩니다.버전 4872017년 3월 29일에 출시되었습니다(물론 이전 버전과 함께).
방금 버그 보고서와 해당 수정 사항을 관리자에게 보냈습니다. 다음 버전에 수정사항이 적용되면 이 답변을 업데이트하겠습니다 less
...
스스로 고쳐라
다음에서 소스 코드 아카이브를 다운로드하세요.
main.c
파일에서 113번째 줄 앞의 두 줄을 반대로 바꿉니다
./* * Process command line arguments and LESS environment arguments. * Command line arguments override environment arguments. */ is_tty = isatty(1); get_term(); init_cmds(); init_charset(); init_line();
뒤쪽에:
/* * Process command line arguments and LESS environment arguments. * Command line arguments override environment arguments. */ is_tty = isatty(1); init_cmds(); /* Load lesskey file before */ get_term(); /* getting variables LESS_TERMCAP_* */ init_charset(); init_line();
빌드에 필요한 종속성을 설치합니다.
./configure
./configure
실패 하면 누락된 종속성을 식별합니다. 제 경우에는 get header 를
설치했습니다 .ncurses-devel
term.h
세워
make
less
개인 디렉토리와 같은 어딘가에 자신이 컴파일한 콘텐츠를 저장하세요.~/bin
mkdir -p ~/bin cp ./less ~/bin PATH="$PATH:~/bin"
PATH
파일에 환경 변수를 설정하는 것을 잊지 마십시오 .~/.profile
다른 파일을 선호하는 경우에는~/.bashrc
...~/.login
추가 팁
TERMCAPS
사용 방법은 매뉴얼 페이지를 참조하세요.LESS_TERMCAP_DEBUG=1 man bash
TERMCAPS
인코딩을 사용하여 매뉴얼 페이지 검색MANPAGER='tee man.txt' man bash
이 두 가지 기술을 결합
MANPAGER='tee man.txt' man bash LESS_TERMCAP_DEBUG=1 less man.txt
답변2
예를 들어 쉘 초기화에서 환경을 설정(또는)하여 각 터미널 유형에 대해 less
다른 파일을 읽을 수 있습니다 . 이를 수행하는 쉬운 방법은 변수를 파일 이름의 일부로 사용 하고 변수를 설정하기 전에 이러한 터미널 관련 파일이 존재하는지 쉘에서 확인하도록 하는 것입니다 .lesskey
LESSKEY
LESSKEY_SYSTEM
TERM
LESSKEY