다음과 같은 LESS_TERMCAP 설정이 있습니다.
# less config
export LESS=-R
export LESS_TERMCAP_mb=$'\E[01;31m' # begin blinking
export LESS_TERMCAP_md=$'\E[01;31m' # begin bold
export LESS_TERMCAP_me=$'\E[0m' # end mode
export LESS_TERMCAP_se=$'\E[0m' # end standout-mode
export LESS_TERMCAP_so=$'\E[01;44;37m' # begin standout-mode
export LESS_TERMCAP_ue=$'\E[0m' # end underline
export LESS_TERMCAP_us=$'\E[01;33m' # begin underline
export LESSOPEN='| /usr/bin/highlight -O ansi %s 2>/dev/null'
~/.profile
청중이 적어 지면 완전히 혼란스러워집니다. 반면에 를 입력하면 ~/.zshrc
작동 zsh
합니다. 왜 그렇습니까?
예를 들어 비로그인 셸 구성 파일에 환경 변수를 저장하는 방법을 배웠기 때문에 ~/.profile
이 작업을 수행하고 싶었습니다.
추가 정보:
tapyu@tapyu-ThinkPad-P73
OS: Ubuntu 20.04 focal
Kernel: x86_64 Linux 5.13.0-28-generic
Uptime: 2h 25m
Packages: 2559
Shell: zsh 5.8
Resolution: 2048x1152
DE: GNOME 3.36.5
WM: Mutter
WM Theme: Adwaita
GTK Theme: Yaru-dark [GTK2/3]
Icon Theme: Yaru
Font: Ubuntu 11
Disk: 123G / 217G (60%)
CPU: Intel Core i7-9750H @ 12x 4.5GHz [43.0°C]
GPU: Intel Corporation UHD Graphics 630 (Mobile)
NVIDIA Corporation GP107GLM [Quadro P620] (rev a1)
RAM: 4740MiB / 23681MiB
감사합니다.
답변1
변수 값을 확인하십시오 LESS_TERMCAP_xxx
.
print -lr ${(q)LESS_TERMCAP_mb}
(또는 zsh를 사용하지 않는 경우 echo "$LESS_TERMCAP_mb" | od -tx1c
:)
\$\\E\[01\;31m
Thomas Dickey가 추측 한 대로 대신 $'\033'\[01\;31m
( $ \ E [
... 대신 033 [
... ) 이 표시될 수도 있습니다 . 이는 구문(예: 대시)을 이해하지 못하는 셸에서 호출하는 경우 .profile
발생할 수 있습니다 $'…'
. /bin/sh
dash는 Ubuntu를 포함한 많은 인기 배포판에서 사용할 수 있습니다.
한 가지 해결책은 이스케이프 문자를 나타내는 다른 방법을 사용하는 것입니다. 이것을 사용하여 printf
이식 가능하게 생성할 수 있습니다.
esc=$(printf \\033)
export LESS_TERMCAP_mb="${esc}[01;31m" # begin blinking
…
또는 .zshrc
. 그런 다음 tput
이스케이프 시퀀스를 하드코딩하는 대신 호출할 수 있습니다 . (LESS_TERMCAP_* 변수에 대한 문서가 있습니까?도움이 될 수도 있습니다. )
또는 다음을 사용하여 이러한 변수를 정의하십시오.몇 가지 키, less의 구성 파일( )에 기록됩니다 ~/.less
. 항상 같은 값으로 설정하면 환경에 두는 것보다 더 의미가 있습니다.less
특수한 구성입니다. 하지만,이전 버전의 less에서는 작동하지 않습니다..