![有没有什么方法可以让传递到 head、tail、less 等处的文本保持彩色?](https://linux22.com/image/1312767/%E6%9C%89%E6%B2%A1%E6%9C%89%E4%BB%80%E4%B9%88%E6%96%B9%E6%B3%95%E5%8F%AF%E4%BB%A5%E8%AE%A9%E4%BC%A0%E9%80%92%E5%88%B0%20head%E3%80%81tail%E3%80%81less%20%E7%AD%89%E5%A4%84%E7%9A%84%E6%96%87%E6%9C%AC%E4%BF%9D%E6%8C%81%E5%BD%A9%E8%89%B2%EF%BC%9F.png)
有没有什么办法可以让通过管道传递|
到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