xargs回显彩色输出

时间:2015-06-16 13:19:17

标签: terminal xargs

我有以下命令:

somethingRegex | xargs -I {} sh -c 'echo -e "found \e[34m{}\e[39m";dummy {}'

回声的颜色部分不起作用,例如输出:

-e found \e[34mresult\e[39m
dummy output
repeat

普通回声适用于 {} 为漂亮的蓝色

echo -e "found \e[34m{}\e[39m"

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

也许这适用于Linux(虽然OSX通过颠倒bashecho的角色来增加一个有趣的转折。

Linux /bin/echo有一个-e选项可以扩展你显示的排序的转义,而某些shell(例如在Debian中使用的dash)跟随{{3}更密切地,不要这样做。 find程序就像运行/bin/sh一样,可能不是您的实际shell。 Debian使用dash作为/bin/sh

同样,旧版本的bash(我的本地OSX服务器有3.2.53)不支持-e选项,而较新版本(用4.1.5检查我的本地Debian)支持{{1}选项。

由于所有这些行为都是非标准的,通常的建议是使用POSIX实用程序,该实用程序还在Linux上提供非标准功能,但您需要的部分足够便携:

-e