我有以下命令:
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"
我该如何解决这个问题?
答案 0 :(得分:1)
也许这适用于Linux(虽然OSX通过颠倒bash
和echo
的角色来增加一个有趣的转折。
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