如何通过管道命令来显示颜色?

如何通过管道命令来显示颜色?

当我使用时:

msgattrib --untranslated pl.po

要查看 po 文件中未翻译的字符串,我有彩色字符串,但当我使用时却没有:

msgattrib --untranslated pl.po | less

答案1

msgattrib仅当从真实终端执行时才显示颜色。您可以使用unbuffer命令的一部分expect来认为msgattrib它是从真实终端执行的,然后使用-r选项来处理 ANSI 转义less

unbuffer msgattrib --untranslated pl.po | less -r

您可以在任何基于 tty 的存在生成颜色(ANSI 转义代码)的命令中执行此操作。

答案2

来自 less 手册页:

-R or --RAW-CONTROL-CHARS
          Like -r, but only ANSI "color" escape sequences are output in "raw" form.  Unlike -r, the screen appearance is maintained correctly in most  cases.

始终启用此功能的最简单方法是LESS在您的脚本中设置环境.profile变量.login。我同时使用-R-X(这可以防止当 less 退出时屏幕被清除)。

答案3

要用颜色显示 less:less -R <text-file> 或者将 less 配置为别名,就像alias less='less -R'~/.bashrc

相关内容