我正在尝试将颜色输出添加到我在 Mac 上运行的 bash 脚本中的错误。 问题是颜色不起作用。 我创建了最简单的脚本来证明它不起作用:
#!/bin/bash
echo -e "\e[1;31m This is red text \e[0m"
但是,当我运行它时,我根本看不到任何颜色,如下图所示。 然而 ls 命令的颜色输出工作正常。
使用
\033
或 \x1B
代替 \e
来表示 <Esc>
字符。
echo -e "\033[1;31m This is red text \033[0m"
OSX 附带旧版本的 Bash,不支持
\e
转义字符。使用 \x1B
或更新 Bash (brew install bash
)。
更好的是,使用
tput
。
在脚本文件中
printf
可能是另一种选择,但您必须添加尾随 "\n"
。
#!/bin/bash
echo -e "\e[31mOutput as is.\e[m"
printf "\e[32mThis is green line.\e[m\n"
printf "\e[33;1m%s\n" 'This is yellow bold line.'
在 macOS High Sierra 10.13.6 上测试:
% /bin/bash --version
GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin17)
Copyright (C) 2007 Free Software Foundation, Inc.
另一种选择是使用 zsh,它遵循
\e
符号。
#!/bin/zsh
如何更改文本颜色的快速示例。它正在与许多人合作 不同版本的 bash(Mac OS Ready 也在 fedora 33 KDE 和 ubuntu jellyfish gnome 上进行了测试)。
在这个例子中向您展示它是如何工作的,我使用
echo
带有 -e
选项的命令可启用解释反斜杠转义,然后使用
这部分\x1B[HX;Ym
开始文本修改。
H for Highlight option
H = 3 --> Color text H = 4 --> Highlight text
X for the color
X = 1 --> Red X = 2 --> Green
X = 3 --> Yellow/orange X = 4 --> Blue light
X = 5 --> Purple X = 6 --> Blue dark
Y for the format
Y = 1 --> Bold Y = 2 --> Normal
Y = 3 --> Italic Y = 4 --> Underline
完成文本修改后,使用
\x1B[0m
在您的终端上尝试:
echo -e "Hello my name is \x1B[34;2mVictor\x1B[0m I'm a \x1B[33;2msys-admin\x1B[0m \!\n"
https://github.com/victor-sys-admin/MODIFY_TEXT_OUTPUT_COLOR_BASH