基于Bash color how-to我试图以灰色输出字符串:
printf " \[\033[1;30m\]foo\[\033[0m\]"
我得到的是:\[\]foo\[\]
根据上面的链接,任何零宽度字符都需要被\[
和\]
包围,但似乎正在输出这些字符。
知道如何确保正确处理\[
吗?
答案 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[
关闭它们。