Ubuntuls
命令中的不同颜色代表什么?例如,当我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
:
- 绿松石:音频文件1
- 亮红色:档案和压缩文件2
- 紫色:图片和视频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”表示粗体和红色。并且,您可以通过用转义指令\33[
并以结尾来使终端以彩色打印m
。33(十六进制中的 1B)是 ASCII 符号“ESCAPE”(ASCII 字符集中的特殊字符)。示例:
"\33[1;31mHello World\33[m"
用鲜红色打印“Hello World”。
ls
带有参数的命令--color=auto
(在 Ubuntu 上ls
是 的别名ls --color=auto
)会遍历所有文件名,并首先尝试匹配不同类型,如可执行文件、管道等。然后,它会尝试匹配正则表达式,如 *.wav,并打印结果文件名,这些文件名包含在 bash 的变色指令中。
答案3
[这扩展了Karthick87 的回答。
完整列表,采用默认设置
- 无色(白色):
- 文件
- 非文件名文本(例如输出中的权限
ls -l
) - 多重硬链接文件
- 大胆的蓝色: 目录
- 粗体青色:符号链接
- 大胆的绿色:可执行文件
- 大胆的红色:存档文件
- 大胆洋红色:
- 图像文件、视频、图形等
- 门
- 插座
- 青色:音频文件
- 黄色与黑色背景:管道(又称 FIFO)
- 粗黄色,黑色背景:
- 块设备
- 字符设备
- 大胆红色搭配黑色背景:
- 孤儿符号链接
- 缺少文件
- 无色,红色背景:设置用户 ID 文件
- 黑色带黄色背景:设置组 ID 文件
- 黑色带红色背景:具有功能的文件
- 白色带蓝色背景:粘性目录
- 蓝色与绿色背景:其他可写目录
- 黑色与绿色背景:粘性目录和其他可写目录
请注意,粗红色看起来是橙色,黑色看起来是深灰色,青色看起来是蓝色/绿色,粗洋红色看起来是紫色/粉红色/淡紫色。
显示颜色的脚本
#!/bin/bash
# For each entry in LS_COLORS, print the type, and description if available,
# in the relevant color.
# If two adjacent colors are the same, keep them on one line.
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
采用默认设置的输出:
使用我的设置输出(自定义目录颜色和自定义 Solarized 终端主题):
dircolors -p
我从和中获得了描述man dir_colors
,并用自己的研究填补了空白。
至少从 14.04 到 17.10,颜色和描述都是相同的。
答案4
这里的所有答案都不包括最新版本的 Ubuntu 中的 256 种颜色选项。我色盲(有些颜色彼此相邻时会给我带来麻烦),所以黑色上的默认蓝色目录对我来说很难阅读。接下来是我为改变这种情况所做的研究。
键入dircolors -p |less
以查看当前的颜色代码。
默认的 .bashrc 应该已经配置好了,不仅可以利用系统颜色代码,还可以利用 ~/.dircolors 中的颜色代码,因此将 dircolors 输出转储到 .dircolor,以便您可以使用此命令开始使用。
dircolors -p > ~/.dircolors
选择:从中挑选一个非常相似的 256 色 dircolorsseebi 的 solarized项目。
抓住这个颜色测试脚本并使用命令运行它,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 东西。只需将数字放入字符串中并享受简单性。