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"

おすすめ記事