有没有什么办法可以让通过管道传递|
到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
~/.bashrc
ls
less
head
tail
答案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