有没有什么方法可以让传递到 head、tail、less 等处的文本保持彩色?

有没有什么方法可以让传递到 head、tail、less 等处的文本保持彩色?

有没有什么办法可以让通过管道传递|head、、tail等的文本保持彩色less

答案1

我假设您正在从 管道传输ls并希望保留终端颜色代码。您可以说ls --color=always(而不是默认的--color=auto),这将保留代码,但这不能保证您正在管道传输的东西知道如何理解它们。

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

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

答案2

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

head,,tail等并不是删除颜色的程序,而是生成数据的程序,通常检查输出是否发送到控制台(彩色),文件或管道(非彩色)

我发现另一个 SU 问答展示如何欺骗管道程序输出,就好像它们正在将输出发送到控制台一样(使用模拟控制台unbuffer

答案3

在 Mac OS X 上man ls提到了CLICOLOR_FORCE环境变量。

根据您使用的 shell,添加或可在传输到其他命令(如、和 )export CLICOLOR_FORCE=1时保留颜色。~/.zshrc~/.bashrclslessheadtail

答案4

考虑

bat

替代方案

cat

安装

brew install bat

--args --flags 类似

--language--theme

例子

head | bat --language=zsh -n -p --theme=gruvbox-dark
file.py | bat --language=py -n -p --theme=gruvbox-dark

相关内容