在Linux命令行中使用不同的颜色来提供一种按文件类型识别文件的简便方法。您可以修改这些颜色,但在做之前您应该对您所做的事情有充分的理由。如果您在Linux命令行上花费了很多时间(如果没有,那么您可能没有读到这篇文章),您无疑会注意到ls以各种不同的颜色显示文件。您可能也注意到了一些差异-目录是一种颜色,可执行文件是另一种颜色,等等。这一切是如何发生的?此外,很多人可能不知道您可以选择哪些选项来更改颜色分配。一种方法是运行dircolors命令来获取一组显示如何指定这些颜色的数据。它会显示类似:$dircolorsLS_COLORS='rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*。txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*。rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*。mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*。m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*。m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36:';exportLS_COLORS如果你擅长解析文件,那么你可能会注意到列表中有一个由冒号分隔的模式,你会看到类似这样的内容:$dircolors|tr":""\n"|head-10LS_COLORS='rs=0di=01;34ln=01;36mh=00pi=40;33so=01;35do=01;35bd=40;33;01cd=40;33;01or=40;31;01OK,这里有一个模式-一系列具有一到三个数字组件的定义。让我们看一下其中一个定义。pi=40;33有些人可能会问的第一个问题是“pi是什么?”在这里,我们正在查看颜色和文件类型,因此显然不是以3.14开头的那个有趣的数字。当然不是,“pi”代表“管道”——Linux系统上的一种特殊类型的文件,可以将数据从一个程序传递到另一个程序。所以,让我们建立一个管道。$mknod/tmp/mypipep$ls-l/tmp/mypipeprw-rw-r--1shsshs0May114:00/tmp/mypipe当我们在终端窗口中查看管道和其他几个文件时,色差非常明显。字体颜色在pi的定义中(如上所示),“40”使文件在终端(或PuTTY)窗口中显示为黑色背景,而31使字体颜色为红色。管道是特殊文件,这种特殊处理使它们在目录列表中脱颖而出。bd和cd定义相同-40;33;01,它有一个额外的设置。此设置会导致块设备(bd)和字符设备(cd)以黑色背景、橙色字体和另一种效果显示-字符将以粗体显示。下面的列表显示了文件类型指定的颜色和字体分配:settingfiletype================rs=0resettonocolordi=01;34directoryln=01;36linkmh=00multi-hardlinkpi=40;33pipeso=01;35socketdo=01;35doorbd=40;33;01blockdevicecd=40;33;01characterdeviceor=40;31;01orphan=00丢失?su=37;41setuidsg=30;43setgidca=30;41文件,capabilitytw=30;42目录,worldwritableow=34;42writablest=37;44目录,stickybitex=01;93可执行文件您可能已经注意到,在dircolors命令输出中,我们的大多数定义都以星号开头(例如,*.wav=00;36)。它们通过文件扩展名而不是文件类型来定义显示属性。这是一个例子:tr":""\n"|尾巴-10*.mpc=00;36*.ogg=00;36*.ra=00;36*.wav=00;36*。oga=00;36*.opus=00;36*.spx=00;36*.xspf=00;36';exportLS_COLORS这些设置(上面列表中的所有00;36)将使这些文件名显示为青色。下面列出了可用的颜色。所有颜色如何更改设置您必须使用ls的别名才能打开彩色显示。这通常是Linux系统的默认设置,看起来像这样:aliasls='ls--color=auto'如果你想关闭字体颜色,你可以运行unaliasls命令,然后文件列表将只以默认字体颜色显示。您可以通过修改$LS_COLORS设置并导出修改后的设置来更改文本颜色。$exportLS_COLORS='rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;...注意:上面的命令被截断了,因为它太长了.如果希望文字颜色修改永久生效,需要将修改后的$LS_COLORS定义添加到一个启动文件中,比如.bashrc。有关命令行文本的更多信息您可以在NetworkWorld2016年11月的帖子中找到有关文本颜色的更多信息。
