我经常使用像read -e -p "> All good ? (y/n)" -n 1 confirm;
向用户询问确认。
我正在寻找一种颜色输出的方法,如echo -e
所做的那样:
echo -e "\033[31m"; echo "Foobar"; // will be displayed in red echo -e "\033[00m";
我正在使用xterm。
在man echo
,它说:
-e启用对反斜杠转义的解释
有read
命令做同样的事情吗? (没有在手册页:( -r
选项不起作用)
read
不会在-p
参数中处理任何特殊的转义,所以你需要从字面上指定它们。 bash
的ANSI引用的字符串对此有用:
read -p $'\e[31mFoobar\e[0m: ' foo
您还应该能够使用Control – v Escape键入文字转义字符,该字符将显示为^[
在终端中:
read -p '^[[31mFoobar^[[0m: ' foo
把你的查询分解成两个组件:
例如:
echo -e -n "\e[0;31mAll good (y/n)? " # Display prompt in red echo -e -n '\e[0;0m' # Turn off coloured output read # Collect the user input
echo -n选项禁止尾随的换行符。
我有另一个解决方案,允许你使用变量来改变文本的格式。 我echo -e
输出我想进入read
命令的-p
参数。
这是一个例子:
RESET="\033[0m" BOLD="\033[1m" YELLOW="\033[38;5;11m" read -p "$(echo -e $BOLD$YELLOW"foo bar "$RESET)" INPUT_VARIABLE
这个工作对我来说:
BC=$'\e[4m' EC=$'\e[0m' while true; do read -p "Do you wish to copy table from ${BC}$HOST $PORT${EC} to ${BC}$LOCAL_HOST $LOCAL_PORT${EC}? (y or n)" yn case $yn in .... done
结果如下:
更多的例子,看看案例,链接是:
mysqlis