侧边栏壁纸
Linux入门自学网博主等级

每日学一条Linux命令,终成Linux大神

  • 累计撰写 725 篇文章
  • 累计创建 143 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Linux dircolors命令详解:如何自定义ls命令的颜色显示(附实例教程和注意事项)

Linux dircolors命令介绍

dircolors是一个Linux命令,它用于设置ls命令在显示文件和目录时所用的颜色方案。dircolors可以根据色彩配置文件来设置LS_COLORS环境变量或是显示设置LS_COLORS环境变量的命令。dircolors的全称是Directory Colors,意思是目录颜色。

Linux dircolors命令适用的Linux版本

dircolors命令是GNU coreutils包的一部分,因此它适用于大多数Linux发行版,如Ubuntu, Debian, CentOS, Fedora等。要查看你的系统是否安装了coreutils包,可以使用以下命令:

[linux@bashcommandnotfound.cn ~]$ rpm -q coreutils # 对于基于RPM的发行版
[linux@bashcommandnotfound.cn ~]$ dpkg -l coreutils # 对于基于Debian的发行版

如果没有安装coreutils包,可以使用以下命令进行安装:

[linux@bashcommandnotfound.cn ~]$ sudo yum install coreutils # 对于基于RPM的发行版
[linux@bashcommandnotfound.cn ~]$ sudo apt install coreutils # 对于基于Debian的发行版

Linux dircolors命令的基本语法

dircolors命令的基本语法格式如下:

dircolors [选项]... [文件]...

其中,文件参数是一个色彩配置文件,如果不指定,则使用内置的默认配置。选项参数用于控制dircolors的行为,常用的选项有:

  • -b, --sh, --bourne-shell:输出Bourne shell(如bash, sh, ksh等)中,将LS_COLORS设为目前预设的shell指令。
  • -c, --csh, --c-shell:输出C shell(如csh, tcsh等)中,将LS_COLORS设为目前预设的shell指令。
  • -p, --print-database:输出内置的默认色彩配置数据库,该输出本身也是一个有效的配置文件,可以重定向到一个文件中进行修改。
  • --help:显示帮助信息。
  • --version:显示版本信息。

Linux dircolors命令的常用选项说明

dircolors命令的常用选项及其说明如下表所示:

选项说明
-b, --sh, --bourne-shell输出Bourne shell中,将LS_COLORS设为目前预设的shell指令
-c, --csh, --c-shell输出C shell中,将LS_COLORS设为目前预设的shell指令
-p, --print-database输出内置的默认色彩配置数据库
--help显示帮助信息
--version显示版本信息

Linux dircolors命令的实例

以下是一些使用dircolors命令的实例:

  • 显示Bourne shell中,将LS_COLORS设为目前预设的shell指令:
[linux@bashcommandnotfound.cn ~]$ dircolors -b
LS_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:*.wim=01;31:*.swm=01;31:*.dwm=01;31:*.esd=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:';
export LS_COLORS
  • 显示C shell中,将LS_COLORS设为目前预设的shell指令:
[linux@bashcommandnotfound.cn ~]$ dircolors -c
setenv LS_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:*.wim=01;31:*.swm=01;31:*.dwm=01;31:*.esd=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:'
  • 输出内置的默认色彩配置数据库:
[linux@bashcommandnotfound.cn ~]$ dircolors -p
# Configuration file for dircolors, a utility to help you set the
# LS_COLORS environment variable used by GNU ls with the --color option.
# Copying and distribution of this file, with or without modification,
# are permitted in any medium without royalty provided the copyright
# notice and this notice are preserved.  This file is offered as-is,
# without warranty of any kind.

# The keywords COLOR, OPTIONS, and EIGHTBIT (honored by the
# slackware version of dircolors) are recognized but ignored.

# Below, there should be one TERM entry for each termtype that is colorizable
TERM Eterm
TERM ansi
TERM color-xterm

...

.xml 00;33
.json 00;33
.yaml 00;33
# end of the file

这是dircolors命令的一些基本用法,你可以通过修改色彩配置文件来自定义ls命令的颜色显示,或者使用其他工具来实现更多的效果,如colortail, grc, ccat等。如果你想了解更多关于dircolors命令的信息,你可以使用以下命令查看其手册页:

[linux@bashcommandnotfound.cn ~]$ man dircolors

Linux dircolors命令的注意事项

使用dircolors命令时,有以下几点需要注意:

  • dircolors命令只能设置ls命令的颜色方案,如果要让ls命令显示颜色,还需要使用--color选项,或者给ls命令设置别名,如alias ls='ls --color=auto'。
  • dircolors命令只能输出设置LS_COLORS环境变量的命令,而不是直接设置LS_COLORS环境变量,因此需要使用eval命令来执行dircolors命令的输出,如eval $(dircolors -b)。
  • dircolors命令的输出会根据终端类型(TERM环境变量)的不同而不同,因此如果你在不同的终端中使用dircolors命令,可能会得到不同的结果。
  • 如果你使用的是bash shell,你可以在你的~/.bashrc文件中添加以下内容,来自动设置ls命令的颜色显示:
# enable color support of ls and also add handy aliases
if [ -x /usr/bin/dircolors ]; then
    test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
    alias ls='ls --color=auto'
    #alias dir='dir --color=auto'
    #alias vdir='vdir --color=auto'

    alias grep='grep --color=auto'
    alias fgrep='fgrep --color=auto'
    alias egrep='egrep --color=auto'
fi
  • 如果你遇到bash: dircolors: command not found的错误,说明你的系统没有安装coreutils包,你可以使用上面提到的命令来安装它。
0

评论区