ls中不同颜色的含义是什么?
Ubuntu的ls
命令中的不同颜色是什么意思? 例如,当我在我的一个文件夹中键入ls
命令时,我得到一个浅绿色文件,另一个(蓝色文件夹)绿色突出显示。
这些颜色是什么意思,有关于所有颜色的手册?
- 蓝色 :目录
- 绿色 :可执行或已识别的数据文件
- azure色 :符号链接文件
- 黄色与黑色背景 :设备
- 粉红色 :图形图像文件
- 红色 :存档文件
- 红色与黑色背景 :断开的链接
供您参考:
-
要关闭颜色,您必须在
.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
在终端输入man dir_colors
。
你可以通过查看$LS_COLORS
变量找出ls
使用的颜色:
- 绿松石:音频文件1
- 鲜红色:档案和压缩文件2
- 紫色:图像和video3
此外,文件按属性着色:
-
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,动物园,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
的输出中,但其格式却相当dircolors --print-database
。
以下是对正在发生的事情的技术解释:
例:
CHR 40;33;01
颜色代码由三部分组成:
-
分号前面的第一部分代表文本样式。
- 00 =无,01 =粗体,04 =下划线,05 =闪烁,07 =反向,08 =隐藏。
-
第二部分和第三部分是颜色和背景颜色:
- 30 =黑色,31 =红色,32 =绿色,33 =黄色,34 =蓝色,35 =品红色,36 =青色,37 =白色。
假设从左侧开始,可以省略每个部分。 即“01”表示粗体,“01; 31”表示粗体和红色。 并且你可以通过使用\33[
转义指令使你的终端以彩色打印\33[
并以m
结尾。 33或hex的1B是ASCII符号“ESCAPE”(ASCII字符集中的特殊字符)。 例:
"\33[1;31mHello World\33[m"
用鲜红色打印“Hello World”。
命令ls
带有参数--color=auto
(在Ubuntu上, ls
是ls --color=auto
的别名)遍历所有文件名并首先尝试匹配不同的类型,如Executable,Pipe等。 然后它尝试匹配正则表达式,如* .wav,并打印生成的文件名,包含在bash的这些颜色更改说明中。
如果dircolors
键入dircolors
( echo $LS_COLORS
也可以),您将获得1行中许多文件类型的代码和颜色列表。 dircolors --print-database
显示1行。 这是一个简短的清单(我试图放入最重要的清单)。 在底部有一个解释,说明每行末尾的不同代码代表什么:
正常00#全局默认,虽然一切都应该是什么。 FILE 00#普通文件 DIR 01; 34#目录 LINK 01; 36#符号链接。 (如果将其设置为'target'而不是a #数值,颜色与指向的文件相同。) FIFO 40; 33#管道 SOCK 01; 35#sockets DOOR 01; 35#门 BLK 40; 33; 01#阻止设备驱动程序 CHR 40; 33; 01#字符设备驱动程序 ORPHAN 40; 31; 01#符号链接到不存在的文件或非stat'able文件 SETUID 37; 41#文件是setuid(u + s) SETGID 30; 43#文件setgid(g + s) STICKY_OTHER_WRITABLE 30; 42#dir是粘性和其他可写的(+ t,o + w) OTHER_WRITABLE 34; 42#dir是其他可写(o + w)且不粘 STICKY 37; 44#dir,粘滞位设置(+ t)而不是其他可写的 #archives或压缩(鲜红色) .tar 01; 31 .tgz 01; 31 #image格式 .jpg 01; 35 .jpeg 01; 35 .gif 01; 35 .bmp 01; 35 #音频格式 .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
文件中,它将成为永久性的。
这里的答案都不包括最新版本的Ubuntu中的256色选项。 我的颜色不足(有些颜色给我带来了麻烦)所以黑色的默认蓝色目录对我来说真的很难读。 以下是我改变这种情况的研究。
键入dircolors -p |less
可以查看当前的颜色代码。
默认的.bashrc应该已经配置好了,不仅要利用系统颜色代码,还要使用〜/ .dircolors中的一个。所以将dircolors输出转储到.dircolor,这样你就可以使用这个命令开始了。 dircolors -p > ~/.dircolors
替代方案:从seebi的日晒项目中选择一种非常相似的256色dircolors。
抓取这个colortest脚本并使用命令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变量。 您可以将其粘贴到终端会话中,也可以关闭终端并重新打开终端。 您还可以将其传输到文件中并将其作为shell脚本运行。
您可以使用16种颜色执行相同的过程。 你不需要特殊的; 38; 5或; 48; 5的东西。 只需将数字投入字符串即可享受简单性。
感谢Dan和seebi的笔记和代码。
这扩展了Karthick87的答案 。
使用默认设置
- 未着色(白色) :文件或非文件名文本(例如
ls -l
输出中的权限) - 大胆的蓝色 :目录
- 粗体青色 :符号链接
- 粗体绿色 :可执行文件
- 粗体红色 :存档文件
- 粗体洋红色 :图像文件,video,图形等或门或sockets
- 青色 :音频文件
- 黄色与黑色背景 :管(AKA FIFO)
- 大胆的黄色与黑色背景 :块设备或字符设备
- 大胆的红色与黑色背景 :孤立符号链接或丢失文件
- 未着色的红色背景 :set-user-ID文件
- 黑色与黄色背景 :set-group-ID文件
- 黑色与红色背景 :文件与function
- 白色与蓝色背景 :粘滞的目录
- 蓝色与绿色背景 :其他可写目录
- 黑色与绿色背景 :粘性和其他可写目录
用于显示颜色的脚本
#!/bin/bash # For LS_COLORS, print type and description in the relevant color. IFS=: for ls_color in $LS_COLORS; do color="${ls_color#*=}" type="${ls_color%=*}" # Add descriptions for named types. case "$type" in bd) type+=" (block device)" ;; ca) type+=" (file with capability)" ;; cd) type+=" (character device)" ;; di) type+=" (directory)" ;; do) type+=" (door)" ;; ex) type+=" (executable file)" ;; fi) type+=" (regular file)" ;; ln) type+=" (symbolic link)" ;; mh) type+=" (multi-hardlink)" ;; mi) type+=" (missing file)" ;; no) type+=" (normal non-filename text)" ;; or) type+=" (orphan symlink)" ;; ow) type+=" (other-writable directory)" ;; pi) type+=" (named pipe, AKA FIFO)" ;; rs) type+=" (reset to no color)" ;; sg) type+=" (set-group-ID)" ;; so) type+=" (socket)" ;; st) type+=" (sticky directory)" ;; su) type+=" (set-user-ID)" ;; tw) type+=" (sticky and other-writable directory)" ;; esac # Separate each color with a newline. if [[ $color_prev ]] && [[ $color != $color_prev ]]; then echo fi printf "\e[%sm%s\e[m " "$color" "$type" # For next loop color_prev="$color" done echo
默认设置输出:
使用我的设置输出(自定义dircolors和自定义Solarized终端主题):
我从dircolors -p
和man dir_colors
那里得到了描述,并用我自己的研究填补了空白。
颜色和描述从14.04到17.10是相同的。