Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
1.0k views
in Technique[技术] by (71.8m points)

bash - Read Command : Display the prompt in color (or enable interpretation of backslash escapes)

I often use something like read -e -p "> All good ? (y/n)" -n 1 confirm; to ask a confirm to the user.

I'm looking for a way to colorize the output, as the command echo -e does :

echo -e "33[31m";
echo "Foobar";       // will be displayed in red
echo -e "33[00m";

I'm using xterm.

In man echo, it says :

-e enable interpretation of backslash escapes

Is there a way to do the same thing with the read command ? (nothing in the man page :( -r option doesn't work)

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

read won't process any special escapes in the argument to -p, so you need to specify them literally. bash's ANSI-quoted strings are useful for this:

read -p $'e[31mFoobare[0m: ' foo

You should also be able to type a literal escape character with Control-v Escape, which will show up as ^[ in the terminal:

read -p '^[[31mFoobar^[[0m: ' foo

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...