如何关闭特定命令的颜色?

如何关闭特定命令的颜色?

是否可以关闭特定命令(如 )的颜色ls,但不使用命令本身的 api?是否有一种 env 变量之类的东西可以关闭像 do 这样的命令的着色COLOR=off ls?任何解决方案都将受到高度赞赏。

编辑:我想要一个适用于所有命令的通用解决方案。喜欢COLOR=off command_name

答案1

如果您愿意允许对格式进行一些更改,您也可以直接通过管道传递cat

 ls | cat

没有颜色,但每个条目都有换行符。


编辑:

通过 shell 设置关闭颜色

检查 shell 的 rc 文件并查看颜色设置的位置,然后.<shell>rc_mono在删除这些设置的位置创建一个新文件,获取它并完成。例如对于 bash:

$cat ~/.bashrc_mono
export TERM=xterm-mono
. ~/.bashrc
alias ls='ls --color=none'
alias grep='grep --color=none'

请注意,必须位于和. ~/.bashrc的新别名之前,因为它们的颜色通常在 中设置。所以你需要做的就是lsgrep~/.bashrc

. ~/bashrc_mono ; ls 

因此,“重做颜色”-rc 可能会很好:

$cat ~/.bashrc_recolorize
export TERM=xterm-256color
. ~/.bashrc

使用eg htop,你会看到区别。

答案2

一种选择是将TERM变量设置为不支持颜色的终端类型。

例子:

TERM=dumb ls
TERM=dumb command_name
echo foo | TERM=dumb grep --color o

告诉程序使用哑终端还可能会产生其他(不需要的)效果,具体取决于您运行的命令,例如vi可能不再识别光标键。

正如建议的费利克斯JN你也可以尝试TERM=xterm-mono,但在我的测试系统(Windows 上的 Git bash)上,与TERM=dumb.

相关内容