xargs 回显彩色输出
xargs echo colored output
我有以下命令:
somethingRegex | xargs -I {} sh -c 'echo -e "found \e[34m{}\e[39m";dummy {}'
echo 的颜色部分不起作用,示例输出:
-e found \e[34mresult\e[39m
dummy output
repeat
普通回声确实适用于 {} 是漂亮的蓝色
echo -e "found \e[34m{}\e[39m"
我该如何解决这个问题?
也许这是为了 Linux(尽管 OSX 通过颠倒 bash
和 echo
的角色添加了一个有趣的转折)。
Linux的/bin/echo
has a -e
option which expands escapes of the sort you show, while some shells (such as dash
, used in Debian) follow POSIX更紧密,不要这样做。 find
程序的行为就好像它在运行 /bin/sh
,这可能不是您实际的 shell。 Debian 使用 dash
作为 /bin/sh
.
同样,旧版本的 bash(我本地的 OSX 服务器有 3.2.53)不支持 -e
选项,而较新的版本(用 4.1 检查我本地的 Debian .5) 支持 -e
选项。
由于所有这些行为都是非标准的,通常的建议是使用 printf
实用程序,它也在 Linux 上提供非标准功能,但是您 需要足够便携:
somethingRegex | xargs -I {} sh -c 'printf "found 3[34m{}3[39m";dummy {}'
我有以下命令:
somethingRegex | xargs -I {} sh -c 'echo -e "found \e[34m{}\e[39m";dummy {}'
echo 的颜色部分不起作用,示例输出:
-e found \e[34mresult\e[39m
dummy output
repeat
普通回声确实适用于 {} 是漂亮的蓝色
echo -e "found \e[34m{}\e[39m"
我该如何解决这个问题?
也许这是为了 Linux(尽管 OSX 通过颠倒 bash
和 echo
的角色添加了一个有趣的转折)。
Linux的/bin/echo
has a -e
option which expands escapes of the sort you show, while some shells (such as dash
, used in Debian) follow POSIX更紧密,不要这样做。 find
程序的行为就好像它在运行 /bin/sh
,这可能不是您实际的 shell。 Debian 使用 dash
作为 /bin/sh
.
同样,旧版本的 bash(我本地的 OSX 服务器有 3.2.53)不支持 -e
选项,而较新的版本(用 4.1 检查我本地的 Debian .5) 支持 -e
选项。
由于所有这些行为都是非标准的,通常的建议是使用 printf
实用程序,它也在 Linux 上提供非标准功能,但是您 需要足够便携:
somethingRegex | xargs -I {} sh -c 'printf "found 3[34m{}3[39m";dummy {}'