(交叉发布到 unix.stackexchange.com)
该网页很好地解释了如何将颜色添加到echo
命令的任何输出中:
> echo \\e[1\;30mBLACK\\e[0m
BLACK
> echo '\e[1;30mBLACK\e[0m'
BLACK
上例中的“BLACK”一词以黑色(或深灰色)前景色打印(取决于整体配色方案)。
现在我想把它引入[TAB]
到tcsh
. 我试过:
complete testcmd 'p/*/`echo '"'"'\e[1;30mf834fef\e[0m'"'"'`/'
我得到:
> testcmd [TAB]
> testcmd ^[\[1\;30mf834fef^[\[0m
显然,这些字符失去了它们的特殊意义。希望我只是没有得到正确的转义。但我尝试了其他几种方法。所以任何帮助表示赞赏。
真正的用例是我有一个命令完成,它提供了三种不同类型的完成,我想在视觉上区分这些类型。备选方案也由外部命令计算。这就是为什么我需要完成以使用带有外部命令的反引号,例如echo
. 我不关心这个命令的细节。tcsh
如果您使用'命令使其以任何方式工作,complete
我可能会适应(考虑perl -pe
包装器等)。
我认为这必须以某种方式起作用的原因是,如果您键入ls [TAB]
. 这在我的设置中正常工作。您也可以ls -1F
在自动完成内部使用,并且输出的颜色ls
也可以通过管道传输。一个例子是:
complete testcmd 'p/*/`ls -1F`/'
更新:正如用户 mavin 指出的那样,ls
这个例子中的着色确实没有通过管道传递。的颜色ls
会丢失,但自动补全可以根据 LS_COLOURS 变量重新应用颜色,该变量基于 ls 添加的/
和*
标记结尾等提示。这可以通过执行来验证
complete testcmd 'p/*/`ls --color -1`/'
它无法提供颜色,仅提供乱码输出。(字面意思是通过转义字符序列管道)
我在tcsh
版本 6.13.00
有任何想法吗?指针?