有什么办法可以使传递到头,尾,少等地方的文本保持彩色?


26

有什么办法让文字的着色通过管道传送|headtailless,等?


任何特定的输出程序?这取决于程序通过管道发送数据。head,,tail等不是消除颜色的方法,它是生成数据的程序,通常会检查输出是否将输出到控制台(彩色),文件或管道(未彩色)。
KurzedMetal

Answers:


15

ls想您是管道制造商,并且想要保留端子颜色代码。您可以说ls --color=always(而不是使用的默认值--color=auto),它会保留代码,但这不能保证您要传递的内容知道如何理解它们。

如果您使用glark而不是grep它将尝试显示颜色。

如果less-R它一起使用,将尝试显示颜色。


6
我是从git。我发现它具有类似的配置(例如git config color.diff always),可以保持着色。
Timofey Gorshkov

1
@Errandir该配置的问题是它将破坏使用git diff输出作为输入的任何脚本或命令,因为它将始终输出ANSI转义码。
KurzedMetal 2012年

@Errandir,谢谢!我没有任何脚本依赖git diff的干净输出,因此对我有用!谢谢 !
阿舒托什·金达尔

我将其用于grep:grep "string" file.txt | head为确保grep的结果是彩色的,我将其更改为grep "string" file.txt --color=always | head
EmilStenström17年

13

这取决于在管道中生成输出的程序。

head,,tail等不是消除颜色的工具,而是生成数据的程序,该程序通常检查输出是否将输出到控制台(彩色),文件或管道(未彩色)

我发现了另一个SU Q&A,展示了如何撒谎以管道方式输出程序,就像它们将输出发送到控制台一样(使用来模拟控制台unbuffer


有什么方法可以保持color=auto模式的着色(使程序认为输出进入控制台而不是管道)?
Timofey Gorshkov

@KurzedMetal程序(例如headtail等如何检测到它正在通过管道传递到另一个程序(以便它可以生成没有颜色等的数据)。
Jorge Bucaran '16

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.