3

在我的脚本中,我几乎总是使用转义序列来表示颜色:

R='\e[0m'
g='\e[0;32m'
echo -e "${g}green text${R}"

我想做-e默认行为,所以我可以省略它。如何?

4

2 回答 2

5

您可以设置一个alias

alias echo='echo -e'

激活后,您可以省略-e

echo "${g}green text${R}"
于 2013-07-05T06:52:01.443 回答
1

通常你会为此使用别名,它适用于许多 shell。但是bash别名不会在非交互式 shell 中扩展,您希望它用于非交互式脚本。

引用man bash

对于几乎所有用途,别名都被 shell 函数所取代

所以你可以使用函数,但我会用不同的方式来称呼它,以避免错误或无限递归:

myecho()
{
    echo -e "$@"
}

如果你在上面,你可以做得更好:

green_echo()
{
    echo -e "${g}$@${R}"
}

或者更好的是,您可以将颜色作为第一个参数,将其移出$@并使用开关选择正确的转义序列。没有限制,记住 shell 是一门完整的编程语言。

于 2013-07-05T08:32:17.940 回答