我找到了这个例子:

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

如果直接从命令行执行,则可以工作,如果创建文件,则为:
#! /usr/bin/sh
echo -e "This is red->\e[00;31mRED\e[00m"

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

最佳答案

编辑 这可能是你的问题(可能):

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

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

或者,您可以像这样调用脚本
bash ./myscript.sh



背景资料

ANSI escape sequences 由终端解释。

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

提示:
  • 有关可以过滤 ANSI 转义序列(并可选择转换为 HTML 和其他)的工具,请参阅 ansifilter
  • 少使用 GNU,例如使 ANSI 转义符在寻呼机中工作:
    grep something --colour=always files.* | less -R
    

  • 或者简单地说,就像我一样
    # also prevent wrapping long lines
    alias less='less -SR'
    

    关于bash - 如何显示来自 bash 脚本的颜色信息?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8307470/

    10-15 00:00