在bash

时间:2015-08-26 12:03:19

标签: bash colors

基于Bash color how-to我试图以灰色输出字符串:

printf " \[\033[1;30m\]foo\[\033[0m\]"

我得到的是:\[\]foo\[\]

根据上面的链接,任何零宽度字符都需要被\[\]包围,但似乎正在输出这些字符。

知道如何确保正确处理\[吗?

2 个答案:

答案 0 :(得分:0)

正如@chepner在评论中提到的:某些实用程序(包括PS1)使用\[序列来表示\001\002控制代码:

\[ => \x01\001

\] => \x02\002

printf和echo不要从\[\001进行此翻译。

所以解决方案是自己进行转换。而不是在\[中包装零长度字符:

echo "\[\033[1;30m\]foo\[\033[0m\]"

将输出\[foo\]

我改为输出实际的控制代码:

echo "\x01\033[1;30m\x02foo\x01\033[0m\x02"

在PS1 printf和echo上输出foo

有关具体示例,请参阅gitea (http://gitea.io)

答案 1 :(得分:-1)

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.hello"
android:versionCode="1"
android:versionName="1.0" 
android:sharedUserId="com.example"> //<-- this line

就够了。 printf "\033[1;30mfoo\033[0m" \033[)启动ANSI转义码,ESC[关闭它们。