Answers:
ls
如今,大多数发行版中通常通过别名启用的颜色输出。
$ alias ls
alias ls='ls --color=auto'
您始终可以通过为别名加上反斜杠前缀来暂时禁用它。
$ \ls
进行上述操作会使此调用的别名短路。您可以随时使用它来禁用任何别名。
command ls
当然也可以使用,但这要快一些。
使用GNU ls
,您可以指定ls --color=never
显式禁用颜色输出。(即使您有alias ls='ls --color=auto'
,当您运行时ls --color=never
,它也会扩展为ls --color=auto --color=never
,并且后面的选项优先。)
alias ls=ls
要么
unalias ls
这将永久禁用着色。
ls
别名的所有其他选项,并且在整个会话中丢失了它们,而不仅仅是一个命令。
可能还有其他情况。ls
除非它认为它与交互式内容有关,否则不应使用颜色。当您通过管道传输到另一个程序时,它不应使事物着色。
别名通常是一个坏主意,因为您永远都不会摆脱该选项,并且习惯了一些个人设置,而这些设置可能无法随身携带到您必须使用的其他计算机上。如果您需要关闭它以将其通过管道输送到其他地方,请使用该管道中的开关。但是,管道中不应该有颜色。
对于ls
,请查看您是否支持LS_COLORS
环境变量。该trapd00r / LS_COLORS告诉您如何谓作品。dircolors使您可以根据文件类型仔细调整颜色。如果您未设置LS_COLORS
但已打开颜色,ls
则将进行一堆系统调用以找出文件类型和属性,以便确定要为事物着色的颜色。Sherlock背后的人们发现,设置LS_COLORS
可以避免所有这些情况,并将速度提高40倍。阅读他们的血腥细节,看看他们发现了什么。
我使所有文件类型都使用默认颜色:
$ export LS_COLORS='bd=0:ca=0:cd=0:di=0:do=0:ex=0:pi=0:fi=0:ln=0:mh=0:no=0:or=0:ow=0:sg=0:su=0:so=0:st=0:tw=0:'
这是我输入到dircolors的LS_COLORS文件:
BLK 0
CAPABILITY 0
CHR 0
DIR 0
DOOR 0
EXEC 0
FIFO 0
FILE 0
LINK 0
MULTIHARDLINK 0
NORMAL 0
ORPHAN 0
OTHER_WRITABLE 0
SETGID 0
SETUID 0
SOCK 0
STICKY 0
STICKY_OTHER_WRITABLE 0
对于grep
,请查看您的支持GREP_COLORS
还是GREP_OPTIONS
。
ls
输出所选颜色的转义序列。比较器的输出ls --color=always | od -a
与的ls --color=never | od -a
与此设置LS_COLORS
。
ls | od -a
不发出转义符,这就是我想要的。的ls
时,它的输出发送到一个终端应该只发射的那些序列。如果您告诉它,请确保它将执行此操作。所以,不要那样做。
加上@ brian-d-foy的答案,大多数情况下,您会喜欢一种简单的讨厌的颜色,例如您要更改实例的颜色,例如目录的不可见蓝色或“ OTHER_WRITABLE”的绿色,所以我们使用24位显示:)
export LS_COLORS='di=04;01;38;5;33:ow=04;01;38;5;33;48;2;60;10;0'
重新定义仅目录颜色及其其他可写颜色
04: underline;
01: bold/brighter;
38;5;33: redifined-blue;
48;2;60;10;0: dark red background
了解有关ANSI标准代码的更多信息
ls
,而不是如何更改单个颜色。
ls
和grep
管道,您不需要做任何事情,因为--color=auto
当它的输出是管道时,或者实际上除了tty之外,就已经关闭了着色;这就是“自动”的意思。同样,ls -G
如果没有将输出定向到终端,除非... CLICOLOR_FORCE ...,否则禁用FreeBSD 或'CLICOLOR'。