终端颜色代码在mac上的bash中不起作用
根据,以下内容应输出彩色字符:终端颜色代码在mac上的bash中不起作用,bash,Bash,根据,以下内容应输出彩色字符: $ B=(' ' '\E[0;31m.' '\E[0;31m:' '\E[1;31m+' '\E[0;33m+' '\E[1;33mU' '\E[1;33mW'); $ echo -e ${B[*]} 相反,对我来说,在Mac OS X(GNU bash,4.4.0)上,它只是字面上的回响: \E[0;31m. \E[0;31m: \E[1;31m+ \E[0;33m+ \E[1;33mU \E[1;33mW 我是否需要启用/禁用某些设置来实现此功能?出于许可
$ B=(' ' '\E[0;31m.' '\E[0;31m:' '\E[1;31m+' '\E[0;33m+' '\E[1;33mU' '\E[1;33mW');
$ echo -e ${B[*]}
相反,对我来说,在Mac OS X(GNU bash,4.4.0)上,它只是字面上的回响:
\E[0;31m. \E[0;31m: \E[1;31m+ \E[0;33m+ \E[1;33mU \E[1;33mW
我是否需要启用/禁用某些设置来实现此功能?出于许可的原因,macOS上默认安装的Bash版本是3版,尽管4版自2009年以来一直存在。
\E
转义序列显然是在版本4或其一个次要版本中引入的,因此它在版本3中不起作用。然而,\E
显然只是在v3中工作的\E
的同义词,因此将代码段中的\E
更改为\E
应该允许它工作。出于许可的原因,macOS上默认安装的Bash版本是版本3,尽管版本4从2009年就已经存在。\E
转义序列显然是在版本4或其一个次要版本中引入的,因此它在版本3中不起作用。然而,\E
显然只是\E
的同义词,它在v3中可以工作,因此在代码片段中将\E
更改为\E
应该可以工作。不确定真正的问题是什么,但可以使用Bash的$“…”
语法作为ESC字符:
[步骤101]#B=($'\e[0;31m.$'\e[0;31m:'$'\e[1;31m+'$'\e[0;33m+'$'\e[1;33mU'$'\e[1;33mW'))
[步骤102]#echo${B[@]}
.:+U W
[步骤103]#
另一个选项是使用更一致的printf
:
[步骤104]#printf'\e[1;31mhello\e[0m\n'
你好
[步骤105]#
不确定真正的问题是什么,但您可以使用Bash的$'…'
语法作为ESC字符:
[步骤101]#B=($'\e[0;31m.$'\e[0;31m:'$'\e[1;31m+'$'\e[0;33m+'$'\e[1;33mU'$'\e[1;33mW'))
[步骤102]#echo${B[@]}
.:+U W
[步骤103]#
另一个选项是使用更一致的printf
:
[步骤104]#printf'\e[1;31mhello\e[0m\n'
你好
[步骤105]#
这不起作用。另外,根据我的原始帖子,请注意运行bash--version
返回GNUBash,version 4.4.0(1)-发行版(x86_64-apple-darwin15.6.0)…
bash--version
可能没有使用与您使用的bash相同的bash。因此,请尝试在您正在运行的bash中使用echo$bash\u version
。@jwodder,macOS没有使用最新bash的授权原因是什么?@pynexj据我所知,苹果拒绝提供任何根据GPLv3授权的产品,因为它与bash冲突r政策和目标。您可以自行安装GPLv3软件,例如使用自制软件包管理器。除非您的目标是专门探索echo-e
在20多年后如何仍然造成可移植性问题,否则这里的核心答案应该是使用printf
,但这不起作用。另外,请注意,在我的原始帖子中运行bash--version
返回GNUBash,版本4.4.0(1)-发行版(x86_64-apple-darwin15.6.0)…
bash--version
可能没有使用与您使用的bash相同的bash。因此,请尝试在您正在运行的bash中使用echo$bash\u version
。@jwodder,macOS没有使用最新bash的授权原因是什么?@pynexj据我所知,苹果拒绝提供任何根据GPLv3授权的产品,因为它与bash冲突r政策和目标。您可以自行安装GPLv3软件,例如使用自制软件包管理器。除非您的目标是专门探索echo-e
在20多年后如何仍然造成可移植性问题,否则这里的核心答案应该是使用printf
对我有效(macOS+bash4.4)。在您的系统上,类型echo
的输出是什么?@pynexj很抱歉我之前误读了您的评论。答案是它输出echo是一个shell内置的
适合我(macOS+bash4.4)。在您的系统上,类型echo
的输出是什么?@pynexj很抱歉我之前误读了您的评论。答案是它的输出echo是一个shell内置的
注意:刚刚检查并确认,即使是旧的bash-2.05b的$”…
和printf
也支持\e
。注意:刚刚检查并确认旧的bash-2.05b的$'…'
和printf
也支持\e
。