如何使用 Bash 显示彩色文本?
a
:棕色背景上的白色文字b
: 黄色背景上的黑色文字
echo -e "bbb aaa bbb"
和
echo -e "aaa bbb aaa"
我的结果不好:-(
如何使用 Bash 显示彩色文本?
a
:棕色背景上的白色文字b
: 黄色背景上的黑色文字
echo -e "bbb aaa bbb"
和
echo -e "aaa bbb aaa"
我的结果不好:-(
# 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"
您可以在您的~/.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}"
在这里您可以找到更多颜色。
以下是使用 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
.