Linux tcsh 프롬프트를 굵게 표시하려면 어떻게 해야 합니까?

Linux tcsh 프롬프트를 굵게 표시하려면 어떻게 해야 합니까?

안녕하세요 여러분,

Linux tcsh 프롬프트를 굵게 표시하려고 합니다. 그러나 나는 비참하게 실패했습니다.

이스케이프 코드에 대해 알고 있으며 에코 출력을 굵게 표시하는 데 성공했지만 프롬프트에서는 그렇게 할 수 없는 것 같습니다.

예를 들어, 다음 명령을 사용하면:

echo "\033[1m Hello \033[0m"

굵은 텍스트로 Hello가 포함된 출력 줄이 올바르게 표시됩니다.

그러나 유사한 논리를 사용하여 프롬프트를 변경하려고 하면 실패합니다. 예를 들어, 다음을 사용하여 프롬프트를 변경하려고 하면:

set prompt="\033[1m NEW-PROMPT \033[0m"

나는 얻다:

^[[1m NEW-PROMPT ^[[0m

내 프롬프트가 에코 라인과 다르게 처리되는 것 같나요? 내 문제가 무엇인지에 대한 힌트가 있습니까?

다음은 내 환경의 요약 버전으로, 프롬프트에 다른 형식을 사용해야 하는 이유에 대한 단서를 제공할 수 있습니다.

LANG=POSIX
LC_CTYPE=en_US.UTF-8
SHELL=/bin/csh
SSH_CLIENT=127.0.0.1 49757 22
SSH_CONNECTION=127.0.0.1 49757 127.0.0.1 22
SSH_TTY=/dev/pts/4
TERM=xterm
HOSTTYPE=i586-linux
VENDOR=suse
OSTYPE=linux
MACHTYPE=i586
SHLVL=7
HOST=psbu-jrr-lnx
CSHEDIT=emacs
CPU=i686
LESS=-M -I
LESSOPEN=lessopen.sh %s
LESSCLOSE=lessclose.sh %s %s
LESS_ADVANCED_PREPROCESSOR=no
LESSKEY=/etc/lesskey.bin
PAGER=less
MORE=-sl
MINICOM=-c on
COLORTERM=1
SSH_SENDS_LOCALE=yes
CVS_RSH=ssh
WINDOWMANAGER=/usr/bin/X11/kde
ENV=/etc/bash.bashrc
CSHRCREAD=true
LS_COLORS=no=00:fi=00:di=01;34:ln=00;36:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=41;33;01:ex=00;32:*.cmd=00;32:*.exe=01;32:*.com=01;32:*.bat=01;32:*.btm=01;32:*.dll=01;32:*.tar=00;31:*.tbz=00;31:*.tgz=00;31:*.rpm=00;31:*.deb=00;31:*.arj=00;31:*.taz=00;31:*.lzh=00;31:*.zip=00;31:*.zoo=00;31:*.z=00;31:*.Z=00;31:*.gz=00;31:*.bz2=00;31:*.tb2=00;31:*.tz2=00;31:*.tbz2=00;31:*.avi=01;35:*.bmp=01;35:*.fli=01;35:*.gif=01;35:*.jpg=01;35:*.jpeg=01;35:*.mng=01;35:*.mov=01;35:*.mpg=01;35:*.pcx=01;35:*.pbm=01;35:*.pgm=01;35:*.png=01;35:*.ppm=01;35:*.tga=01;35:*.tif=01;35:*.xbm=01;35:*.xpm=01;35:*.dl=01;35:*.gl=01;35:*.wmv=01;35:*.aiff=00;32:*.au=00;32:*.mid=00;32:*.mp3=00;32:*.ogg=00;32:*.voc=00;32:*.wav=00;32:
LS_OPTIONS=-N --color=tty -T 0
FULLENV=false
VISUAL=vi
SSH_AUTH_SOCK=/tmp/ssh-lkJkR5043/agent.5043
SSH_AGENT_PID=5044
WINDOWID=60817426
XTERM_VERSION=XTerm(208)
XTERM_SHELL=/bin/csh

답변1

내장 기능은 echo시스템에서 백슬래시 확장을 수행합니다(이는 구성 가능하며 기본값은 시스템에 따라 다릅니다). 변수 prompt에는 리터럴 백슬래시가 포함되어 있으며 프롬프트 확장이 약간 이상합니다.

프롬프트에 터미널 이스케이프 시퀀스를 포함하려면 %{... %}like 사이에 있어야 합니다.

set prompt="%{\e[1m%}NEW-PROMPT%{\e[0m%}"

그러나 굵은 텍스트에 내장된 이스케이프 시퀀스를 사용하는 것이 더 간단하고 원칙적으로 더 이식성이 뛰어납니다.

set prompt="%BNEW-PROMPT%b"

관련 정보