向所有Unix命令添加--color

问题描述:

是否可以“别名”所有命令来追加--color?或者让它为支持它的每个程序自动激活?向所有Unix命令添加--color

+0

参见http://stackoverflow.com/questions/563500/what-unix-commands-support-颜色输出 – 2009-05-03 02:08:20

shell如何自动知道哪些程序支持--color选项?你必须给它一个列表,并且只要你打算这么做,你可以给它一个alias命令列表来运行。我想这可以通过编程像这样(在bash)来完成:

for cmd in ls blah foo; do 
    alias "$cmd=$cmd --color" 
done 

实际上有支持--color选项很少有程序,而实际上,它们不是由单个组织编写。因此,他们没有提及他们选择的中心位置。哎呀,甚至没有一个统一的参数设置,所以只要--color选项结束每一个命令可能会造成很大的伤害!

恐怕你必须为每一个别名。例如,对于ls

alias ls='ls --color' 

您应该小心,特别是在链接调用时。

grep --color=yes 'foo' bar.txt | less #leads to weird ANSI stuff in output 
grep --color=yes 'foo' bar.txt | less -R #binary codes interpreted as colors 

基本上,这可以搞砸了流水线......我建议走样的事情与彩色输出到单独的命令来避免做“CMD | MYPROG”并获得由于嵌入式ANSI奇怪的结果。

+0

大多数命令都有--color = tty用于此目的 – Joshua 2009-04-19 19:25:07

+0

某些命令(如grep)支持'--color = auto',当且仅当stdout是终端时,它才会将输出着色。如果stdout是管道,则它们不会着色。 – 2009-05-03 02:19:29

,而不是试图改变每个命令

为什么不改变这样你控制台显示的颜色