Ubuntu的ls命令中的不同颜色是什么意思?例如,当我在其中一个文件夹中键入ls命令时,其中一个文件显示为浅绿色,另一个文件(即文件夹)显示为蓝色,并带有绿色突出显示。

这些颜色是什么意思,所有颜色都有手册吗?

#1 楼



蓝色:目录

绿色:可执行或可识别的数据文件

青色(天蓝色):符号链接文件

黑色背景黄色:设备

品红色(粉红色):图形图像文件

红色:存档文件

红色黑色背景:断开的链接

供您参考:


要关闭颜色,必须在.bashrc中注释掉以下几行。
 # 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颜色含义,请在终端中复制/粘贴以下代码。
 eval $(echo "no:global default;fi:normal file;di:directory;ln:symbolic link;pi:named pipe;so:socket;do:door;bd:block device;cd:character device;or:orphan symlink;mi:missing file;su:set uid;sg:set gid;tw:sticky other writable;ow:other writable;st:sticky;ex:executable;"|sed -e 's/:/="/g; s/\;/"\n/g')           
{      
  IFS=:     
  for i in $LS_COLORS     
  do        
    echo -e "\e[${i#*=}m$( x=${i%=*}; [ "${!x}" ] && echo "${!x}" || echo "$x" )\e[m" 
  done       
} 
 



输出:
注:

用于有关更多信息,请在终端中键入man dir_colors


评论


显示每种类型的输出颜色表示的评估脚本非常出色……谢谢!

–俄罗斯
11年7月27日在22:00

纯资源;)

– Ho
15年8月4日在13:30

该评估脚本的可读性更高的版本位于:github.com/gkotian/gautam_linux/blob/master/scripts/colours.sh

–乔塔姆
16年4月4日在17:41

红色也是无效的符号链接。

–托马斯·沃德♦
17年5月6日在16:17

普通白色文本的文件呢?

– S ..
17年7月15日在8:42

#2 楼

您可以通过查看ls变量来找出$LS_COLORS使用的颜色:
紫色:图像和视频3


此外,文件还按属性着色:




>
aac,au,flac,mid,midi,mka,mp3,mpc,ogg,ra,wav,axa,oga,spx,xspf。
tar,tgz,arj,taz,lzh,lzma ,tlz,txz,zip,z,Z,dz,gz,lz,xz,bz2,bz,tbz,tbz2,tz,deb,rpm,jar,rar,ace,zoo,cpio,7z,rz。
jpg,jpeg,gif,bmp,pbm,pgm,ppm,tga,xbm,xpm,tif,tiff,png,svg,svgz,mng,pcx,mov,mpg,mpeg,m2v,mkv,ogm,mp4,m4v ,mp4v,vob,qt,nuv,wmv,asf,rm,rmvb,flc,avi,fli,flv,gl,dl,xcf,xwd,yuv,cgm,emf,axv,anx,ogv,ogx。


所有这些信息都包含在dircolors --print-database的输出中,但是其格式相当不可读。

以下是发生的情况的技术说明:

示例:

CHR 40;33;01


颜色代码由三部分组成:



分号前的第一部分表示文本样式。


00 =无,01 =粗体,04 =下划线,05 =闪烁,07 =反向,08 =隐藏。



第二和第三部分是颜色和背景色:


30 =黑色,31 =红色,32 =绿色,33 =黄色,34 =蓝色,35 =洋红色,36 =青色,37 =白色。



假设从左边开始,每个部分都可以省略。即“ 01”表示粗体,“ 01; 31”表示粗体和红色。通过使用[转义指令并以m结尾,可以使终端彩色打印。 33(即十六进制的1B)是ASCII符号“ ESCAPE”(ASCII字符集中的特殊字符)。示例:

"[1;31mHello World[m"


用亮红色打印“ Hello World”。

带有参数ls的命令--color=auto(在Ubuntu上,lsls --color=auto的别名)会遍历所有文件名,并首先尝试匹配不同的类型,例如Executable,Pipe等。然后,它尝试匹配* .wav之类的正则表达式,并打印结果文件名,这些文件名包含在bash的这些变色说明中。

评论


谢谢!我当时在看一个Git拓扑可视化问题,想知道为什么要打印一些字符。

–pdp
15年7月4日在8:11

#3 楼

这将扩展Karthick87的答案。

完整列表,默认设置为


无色(白色):文件或非文件名文本(例如,输出中的权限) ls -l的名称)或多硬链接文件

蓝色粗体:目录

蓝色粗体:符号链接

绿色粗体:可执行文件

粗体红色:存档文件

品红色粗体:图像文件,视频,图形等,或门或插座

青色:音频文件

黑色背景为黄色:管道(AKA FIFO)

黑色背景为黄色的粗体:块设备或字符设备

黑色背景为红色的粗体红色:孤立的符号链接或丢失文件

不带红色背景的彩色:设置用户ID文件

带黄色背景的黑色:设置组ID文件

带红色的黑色背景:具有功能的文件

白色,蓝色背景:粘性目录

蓝色,绿色背景:其他可写目录

黑色,绿色黑色圆形:粘稠且可写的目录

请注意,粗体红色看起来是橙色,黑色看起来是深灰色,青色看起来是蓝色/绿色,而粗体洋红色看起来是紫色/粉色/淡紫色。
脚本到显示颜色
 #!/bin/bash
# For LS_COLORS, print type and description in the relevant color.

declare -A descriptions=(
    [bd]="block device"
    [ca]="file with capability"
    [cd]="character device"
    [di]="directory"
    [do]="door"
    [ex]="executable file"
    [fi]="regular file"
    [ln]="symbolic link"
    [mh]="multi-hardlink"
    [mi]="missing file"
    [no]="normal non-filename text"
    [or]="orphan symlink"
    [ow]="other-writable directory"
    [pi]="named pipe, AKA FIFO"
    [rs]="reset to no color"
    [sg]="set-group-ID"
    [so]="socket"
    [st]="sticky directory"
    [su]="set-user-ID"
    [tw]="sticky and other-writable directory"
)

IFS=:
for ls_color in $LS_COLORS; do
    color="${ls_color#*=}"
    type="${ls_color%=*}"

    # Add description for named types.
    desc="${descriptions[$type]}"

    # Separate each color with a newline.
    if [[ $color_prev ]] && [[ $color != "$color_prev" ]]; then
        echo
    fi

    printf "\e[%sm%s%s\e[m " "$color" "$type" "${desc:+ ($desc)}"

    # For next loop
    color_prev="$color"
done
echo
 

使用默认设置输出:

使用我的设置输出(自定义dircolors和自定义的太阳能终端主题):

我从dircolors -pman dir_colors得到了描述,并通过自己的研究填补了空白。
颜色和描述在14.04到17.10之间是相同的。

评论


您怎么知道rs表示RESET,mh表示MULTIHARDLINK,ca表示CAPABILITY等?

–弗雷德里克·高斯(Fredrick Gauss)
17-10-4在8:36

@FredrickGauss如我在答案中所写,我从运行dircolors -p得到了描述。

– wjandrea
17-10-4在16:04

dircolors -p不说rs是RESET 0#重置为“正常”颜色。

–弗雷德里克·高斯(Fredrick Gauss)
17-10-4在16:38

@FredrickGauss没有明确说明,但是“ RESET”是唯一可以缩写为“ rs”的名称,并且颜色(0)匹配。

– wjandrea
17-10-4在16:45

这在zsh中有效吗?

–警报
20-11-26在22:40

#4 楼

如果您从命令行输入dircolorsecho $LS_COLORS也可以),您将在1行中获得许多文件类型的代码和颜色列表。 dircolors --print-database一次显示1行。这是一份简短的清单(我尝试输入最重要的清单)。底部有每行末尾不同代码代表什么的解释:

NORMAL 00 # global default, although everything should be something.
FILE 00 # normal file
DIR 01;34 # directory
LINK 01;36 # symbolic link. (If you set this to 'target' instead of a
 # numerical value, the color is as for the file pointed to.)
FIFO 40;33 # pipe
SOCK 01;35 # socket
DOOR 01;35 # door
BLK 40;33;01 # block device driver
CHR 40;33;01 # character device driver
ORPHAN 40;31;01 # symlink to nonexistent file, or non-stat'able file
SETUID 37;41 # file that is setuid (u+s)
SETGID 30;43 # file that is setgid (g+s)
STICKY_OTHER_WRITABLE 30;42 # dir that is sticky and other-writable (+t,o+w)
OTHER_WRITABLE 34;42 # dir that is other-writable (o+w) and not sticky
STICKY 37;44 # dir with the sticky bit set (+t) and not other-writable
# archives or compressed (bright red)
.tar 01;31
.tgz 01;31
# image formats
.jpg 01;35
.jpeg 01;35
.gif 01;35
.bmp 01;35
# audio formats
.aac 00;36
.flac 00;36
.ogg 00;36



属性代码:00=none 01=bold 04=underscore 05=blink 07=reverse 08=concealed

文本颜色代码:30=black 31=red 32=green 33=yellow 34=blue 35=magenta 36=cyan 37=white

背景颜色代码:40=black 41=red 42=green 43=yellow 44=blue 45=magenta 46=cyan 47=white


如果您想使用此颜色,请参阅以下示例文件颜色:

export LS_COLORS=$LS_COLORS:"*.ogg=01;35":"*.mp3=01;35"  


这会将*.ogg.mp3设置为bold magenta。如果将它放在.bashrc文件中,它将永久保存。

评论


嘿,也许其他人会提供更好的答案。顺便说一句,你通过这次投票使我超过了15k;)

–灵风
2011-09-14 8:29

继续前进!你到了那里……不过,再次感谢,我做了一个“ /”字串来搜索一些我不确定的颜色

–user784637
2011-09-14 8:38

如果您想知道日期,可以合并这个(出色的)答案。 :-)

– Stefano Palazzo
2011-09-14 10:06



@Rinzwind,所以要为pdf文件设置颜色,过程是使用导出吗?是否可以在默认的LS_COLORS变量中简单地添加一个扩展名?

– Sigur
16年1月28日在18:14

#5 楼

这里没有答案包括最新版本的Ubuntu中的256种颜色选项。我的色彩不足(有些色彩使我彼此麻烦),所以我很难读懂黑色的默认蓝色目录。接下来是我的研究,以对此进行更改。

键入dircolors -p |less以查看您当前的颜色代码。

默认的.bashrc应该已经配置好,不仅可以利用系统颜色代码,还可以配置〜/ .dircolors中的一个,因此可以将dircolors输出转储到.dircolor中,这样您就可以使用此命令。
dircolors -p > ~/.dircolors

替代方法:从seebi的solarized项目中拾取非常相似的256种颜色dircolors。

使用此颜色测试脚本并使用命令colortest -w运行这样您就可以一次看到所有颜色。选择一种颜色。我喜欢橙色的#208。我希望将其用作文本颜色,因此可以使用有关扩展颜色代码的信息来应用该颜色。

所以您有了颜色,现在是什么。首先,我们必须创建字符串。

第一个数字将是一个属性代码,最有可能是00,但是如果您希望它闪烁,请使用05:


选择一个属性代码:00 =无01 =加粗04 =下划线05 =闪烁07 =反向08 =隐藏


接下来选择将;38;5;附加到该属性代码以指示文本颜色得到00; 38; 5;然后附加您的颜色。我选择了208,所以得到00;38;5;208

如果您还希望在其上放置背景,请使用colortest脚本选择另一种颜色(例如56),并为背景添加;48;5;,并为背景添加56。颜色以获取总字符串00;38;5;208;48;5;56

所以现在有了它,您将如何处理?

vim ~/.dircolors并找到要更改为我们确定的字符串的部分(对我来说就是DIR)高于“ 00; 38; 5; 208”。

这不会立即生效,您需要加载配置。使用dircolors ~/.dircolors作为获取代码来设置LS_COLORS变量。您可以将其粘贴到终端会话中,也可以关闭终端然后重新打开。您还可以将其通过管道传输到文件中,然后作为外壳脚本运行。

您可以使用16种颜色执行相同的步骤。您不需要特殊的; 38; 5或; 48; 5东西。只需将数字扔进字符串中即可享受简单性。

感谢Dan和seebi对此提供的注释和代码。

评论


请检查256色是否仅在xterm兼容终端中可用。因此,256色不适用于Konsole,但不适用于xterm和rxvt-unicode。

–DK Bose
19年3月14日在12:59

Konsole做自己的事。请查看draculatheme.com/konsole或techoverflow.net/2013/11/08/installing-konsole-solarized-theme,以获得不错的配色方案。

– flickerfly
19年3月14日在16:38