是否可以关闭特定命令(如 )的颜色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
的新别名之前,因为它们的颜色通常在 中设置。所以你需要做的就是ls
grep
~/.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
.