如何从bash脚本中显示颜色消息?

时间:2011-11-29 07:56:06

标签: bash colors

我找到了这个例子:

echo -e "This is red->\e[00;31mRED\e[00m"

如果直接从命令行执行,则可行,如果创建文件,则执行bu:

#! /usr/bin/sh
echo -e "This is red->\e[00;31mRED\e[00m"

不起作用。怎么修?或者可能以粗体输出? 请不要使用Lua它没有安装。

2 个答案:

答案 0 :(得分:7)

修改这可能是您的问题(可能):

#!/bin/bash
echo -e "This is red->\e[00;31mRED\e[00m"

原因是sh没有内置echo命令,它支持转义。

或者你可以调用你的脚本,如

bash ./myscript.sh

<子>

背景资料

ANSI escape sequences由终端解释。

如果您在管道中运行/重定向IO,则输出将不会到终端,因此转义不会被解释。

提示:

  • 请参阅ansifilter了解可以过滤ANSI转义序列的工具(并可选择转换为HTML等)
  • 使用GNU less,例如让ANSI转义在寻呼机中工作:

    grep something --colour=always files.* | less -R
    

或者简单地说,就像我一样

# also prevent wrapping long lines
alias less='less -SR'

答案 1 :(得分:1)

使用echo程序,而不是echo内置命令:

#!/bin/sh
MYECHO="`which echo`"
if <test-whether-MYECHO-empty-and-act-accordingly> ...
...
$MYCHO -e "This is red->\e[00;31mRED\e[00m"