如何获取 osx shell 脚本以在 echo 中显示颜色

How to get osx shell script to show colors in echo

我正在尝试为 bash 脚本中的错误添加颜色输出,我在 mac 上安装了 运行ning。问题是颜色不起作用。我创建了最简单的脚本来证明它不起作用:

#!/bin/bash

echo -e "\e[1;31m This is red text \e[0m"

但是,当我 运行 它时,我根本看不到任何颜色,如图所示。然而,ls 命令的颜色输出工作正常。

OSX 附带不支持 \e 转义字符的旧版本 Bash。使用 \x1B 或更新 Bash (brew install bash).

不过,更好的方法是使用 tput.

另一种选择是使用 zsh,它遵循 \e 表示法。

#!/bin/zsh

使用3\x1B代替\e来表示<Esc>字符。

echo -e "3[1;31m This is red text 3[0m"

http://misc.flogisoft.com/bash/tip_colors_and_formatting

在脚本文件中 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.