问题描述
Ubuntu的ls
命令中的不同颜色是什么意思?例如,当我在其中一个文件夹中键入ls
命令时,其中一个文件显示为浅绿色,另一个(文件夹)显示为蓝色,并显示绿色突出显示。
这些颜色是什么意思,并且有关于所有颜色的手册?
最佳解决思路
-
蓝色:目录
-
绿色:可执行或可识别的数据文件
-
天蓝色:符号链接文件
-
黄色与黑色背景:设备
-
粉红色:图形图像文件
-
红色:存档文件
-
红色与黑色背景:断开的链接
供你参考:
-
要关闭颜色,您必须在
.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
。
次佳解决思路
您可以通过查看$LS_COLORS
变量来了解ls
使用的颜色:
-
绿松石:音频文件1
-
鲜艳的红色:档案和压缩文件2
-
紫色:图片和视频3
另外,文件通过属性着色:
-
aac,au,flac,mid,midi,mka,mp3,mpc,ogg,ra,wav,axa,oga,spx,xspf。
-
tar,tzz,arj,taz,lz,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
的输出中,但其格式不可读。
以下是对发生的事情的技术解释:
例:
CHR 40;33;01
颜色代码由三部分组成:
-
分号前的第一部分代表文本样式。
-
00 =无,01 =粗体,04 =下划线,05 =眨眼,07 =反向,08 =隐藏。
-
-
第二和第三部分是颜色和背景颜色:
-
30 =黑色,31 =红色,32 =绿色,33 =黄色,34 =蓝色,35 =品红,36 =青色,37 =白色。
-
假设从左边开始,每个部分都可以省略。即”01″表示粗体,”01;31″表示粗体和红色。您可以通过\33[
转义指令并使用m
结束,让您的终端以彩色打印。 33或1B(十六进制)是ASCII标记”ESCAPE”(ASCII字符集中的特殊字符)。例:
"\33[1;31mHello World\33[m"
以鲜红色打印”Hello World”。
带有参数--color=auto
(在Ubuntu上为ls
是ls --color=auto
的别名)的命令ls
遍历所有文件名,并首先尝试匹配不同类型,如可执行文件,管道等。然后它会尝试匹配正则表达式(如* .wav)并打印结果文件名,这些文件名位于这些用于bash的colour-changing指令中。
第三种解决思路
如果从命令行键入dircolors
(echo $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
文件中,它将变成永久的。
第四种思路
这里的答案都不包括最新版本的Ubuntu中的256种颜色选项。我颜色不足(一些颜色给我附近的麻烦),所以黑色的默认蓝色目录是真的很难让我读。接下来是我的研究来改变这一点。
键入dircolors -p |less
以查看您当前的颜色代码。
默认的.bashrc应该已经被配置,不仅要利用系统颜色代码,还要配置〜/.dircolors中的一个,以便将dircolors输出转储为.dircolor,以便您可以使用此命令启动。 dircolors -p > ~/.dircolors
选择:从seebi’s solarized项目中选取一个非常类似的256色dircolors。
抓住colortest script并使用colortest -w
命令运行它,以便一次看到所有颜色。选择一种颜色。我喜欢橙色#208。我希望这是文字颜色,所以在扩展颜色代码上使用这些信息,我可以应用它。
所以你有一种颜色,现在是什么。首先,我们必须创建字符串。
第一个数字是一个属性代码,最有可能是00,但如果你想让它闪烁05:
Pick an attribute code: 00=none 01=bold 04=underscore 05=blink 07=reverse 08=concealed
接下来选择将;38;5;
附加到该属性代码以指示您的文本颜色以获得00; 38; 5;然后追加你的颜色。我选了208,所以我得到00;38;5;208
。
如果你还想在背景上添加背景,请使用colortest脚本和附加的;48;5;
选择另一种颜色(比方说56)作为背景,使用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东西。只需将数字投入字符串并享受简单。
第五种思路
这扩展了Karthick87’s answer。
使用默认设置
-
无色(白色):文件或non-filename文本(例如,
ls -l
输出中的权限) -
大胆的蓝色:目录
-
粗体青色:符号链接
-
粗体绿色:可执行文件
-
粗体红色:存档文件
-
大胆洋红色:图像文件,视频,图形等或门或插座
-
青色:音频文件
-
黄色与黑色背景:管(AKA FIFO)
-
带黑色背景的粗体黄色:块设备或字符设备
-
带黑色背景的粗体红色:孤立符号链接或缺少文件
-
无色红色背景:set-user-ID文件
-
黑色和黄色背景:set-group-ID文件
-
黑色与红色背景:文件与能力
-
白色与蓝色背景:粘滞目录
-
蓝色与绿色背景:other-writable目录
-
黑色与绿色背景:粘性和other-writable目录
显示颜色的脚本
#!/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相同。