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
。#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上,ls
是ls --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 -p
和man 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 楼
如果您从命令行输入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
文件中,它将永久保存。评论
嘿,也许其他人会提供更好的答案。顺便说一句,你通过这次投票使我超过了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
评论
显示每种类型的输出颜色表示的评估脚本非常出色……谢谢!
–俄罗斯
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