Take the 2-minute tour ×
Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems.. It's 100% free, no registration required.

Greeting all,

I am attempting to make my Linux tcsh prompt bold. However I'm failing miserably.

I know about escape codes and I can successfully make echo'ed output bold, but I can't seem to do it for my prompt.

For example, if I use the following command:

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

I correctly get an output line that has Hello and the text is bold text.

However, if I try to change my prompt using similar logic it, fails. For example, If I attempt to change the prompt using the following command:

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

I get:

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

So it seems that my prompt is not being processes the same as echo lines? Any tips on what my problem could be?

Following is a trimmed down version of my environment, which may give clues as to why I might need to use some other format for the prompt.

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

Thanks in advance.

share|improve this question

1 Answer 1

up vote 4 down vote accepted

The echo built-in performs backslash expansion on your system (this is configurable, and the default is system-dependent). The prompt variable contains the literal backslashes, and prompt expansion is a little weird.

If you want to include terminal escape sequences in your prompt, they need to be between %{%}, as in

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

But it's simpler (and in principle more portable) to use the built-in escape sequence for bold text.

set prompt="%BNEW-PROMPT%b"
share|improve this answer
    
Thank you! And a follow up question. You said to use the built-in escape sequence. I did that and it worked. Where can I find more built-in escape sequences? –  John Rocha Nov 29 '10 at 16:17
    
@John: In the tcsh man page, under “special shell variables”, “prompt”. –  Gilles Nov 29 '10 at 19:36

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.