3

如何使用 Bash 显示彩色文本?

  • a:棕色背景上的白色文字
  • b: 黄色背景上的黑色文字

echo -e "bbb aaa bbb"

echo -e "aaa bbb aaa"

我的结果不好:-(

4

3 回答 3

4
# text
black='\e[0;30m'
white='\e[0;37m'
yellow='\e[0;33m'

# background
white_bg='\e[47m'

echo -e "${black}black test"
echo -e "${white_bg}white bg and black test"
echo -e "${yellow}yellow test"
于 2012-10-24T18:05:14.537 回答
3

您可以在您的~/.bashrc

txtblk='\e[0;30m' # Black - Regular
txtred='\e[0;31m' # Red
txtgrn='\e[0;32m' # Green
txtylw='\e[0;33m' # Yellow
txtblu='\e[0;34m' # Blue
txtpur='\e[0;35m' # Purple
txtcyn='\e[0;36m' # Cyan
txtwht='\e[0;37m' # White

之后您可以使用echo

echo -e "${txtred}asd${txtwht}"

在这里您可以找到更多颜色。

于 2012-10-24T18:10:21.087 回答
0

以下是使用 tput 的方法:

txtblk=$(tput setf 0) # Black - Regular
txtred=$(tput setf 4) # Red
txtgrn=$(tput setf 2) # Green
txtylw=$(tput setf 6) # Yellow
txtblu=$(tput setf 1) # Blue
txtpur=$(tput setf 5) # Purple
txtcyn=$(tput setf 3) # Cyan
txtwht=$(tput setf 7) # White

但是将其保存到的方法.bashrc是不可取的,因为在-t test失败时禁用颜色是一种很好的做法。

所以一个更好的方法是有一个像这样的文件:

[[ -t 1 ]] || export TERM=dumb
txtblk=$(tput setf 0) # Black - Regular
txtred=$(tput setf 4) # Red
txtgrn=$(tput setf 2) # Green
txtylw=$(tput setf 6) # Yellow
txtblu=$(tput setf 1) # Blue
txtpur=$(tput setf 5) # Purple
txtcyn=$(tput setf 3) # Cyan
txtwht=$(tput setf 7) # White

并在您需要颜色时获取它。tput将在哑终端上放置零长度字符串,只要标准输出不是终端。所以:

./my-script将打印颜色,但./my-script | grep foo不会将颜色代码发送到grep.

于 2021-11-14T14:24:10.673 回答