Ubuntu的ls
命令中的不同颜色是什么意思?例如,当我在我的一个文件夹中输入ls
命令时,我得到的其中一个文件是浅绿色的,另一个(是一个文件夹)是蓝色的,有绿色高亮显示。
这些颜色是什么意思,有没有关于所有颜色的手册?
供您参考。
要关闭颜色,你必须在.bashrc
中注释掉以下几行。
# 启用ls的颜色支持,同时添加方便的别名
#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颜色含义,那么在你的终端中复制/粘贴以下代码。
<!-- language: bash -->
eval $(echo "no:全局默认;fi:正常文件;di:目录;ln:符号链接;pi:命名管道;so:套接字;do:门;bd:块设备;cd:字符设备;or:孤儿符号链接;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
做
echo -e "e[${i#*=}m$( x=${i%=*}; [ "${!x}" ] && echo "${!x}" || echo "$x" )e[m"
完成
}
输出:
注意:
man dir_colors
。 你可以通过查看$LS_COLORS
变量来了解ls
使用的颜色。
此外,文件还按属性进行着色。
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。
3.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
颜色代码由三部分组成。
分号前的第一部分代表文本样式。
第二和第三部分是颜色和背景颜色。
每一部分都可以省略,假设从左边开始。即:"01"表示粗体,"01;31"表示粗体和红色。你可以通过用 "33["转义指令并以 "m "结尾来使你的终端打印成彩色。33,或十六进制的1B,是ASCII符号"ESCAPE"(ASCII字符集的一个特殊字符)。例子。
"\33[1;31mHello World\33[m"
用鲜红色打印"Hello World"。
带有参数--color=auto
的命令ls
(在Ubuntu上,ls
是ls --color=auto
的别名)会浏览所有文件名,首先尝试匹配不同的类型,如Executable、Pipe等。然后,它尝试匹配正则表达式,如*.wav,并打印出结果文件名,用这些bash的颜色变化指令括起来。
如果你在命令行中输入dircolors
(echo $LS_COLORS
也可以),你将在1行中得到许多文件类型的代码和颜色列表。dircolors --print-database
一次显示1行。这里是一个简短的列表(我试图把最重要的放在里面)。在底部有一个关于每行末尾的不同代码代表什么的解释。
NORMAL 00 # 全局默认,尽管一切都应该是这样。 FILE 00 # 正常文件 DIR 01;34 # 目录 LINK 01;36 # 象征性链接。(如果你把这个设置为'目标'而不是一个 # 而不是一个数字,那么颜色就是指向的文件的颜色)。) FIFO 40;33 # 管道 SOCK 01;35 # socket DOOR 01;35 # 门 BLK 40;33;01 # 块设备驱动器 CHR 40;33;01 # 字符设备驱动器 ORPHAN 40;31;01 # 符号链接到不存在的文件,或不存在的文件 SETUID 37;41 # 文件是 setuid (u+s) 的。 SETGID 30;43 # 文件是setgid(g+s)。 STICKY_OTHER_WRITABLE 30;42 # 粘性和其他可写的文件 (+t,o+w) OTHER_WRITABLE 34;42 # 其他可写(o+w)且不粘的dir STICKY 37;44 # 设置了粘性位的目录(+t),并且不是其他可写的目录 # 存档或压缩(亮红色 .tar 01;31 .tgz 01;31 # 图像格式 .jpg 01;35 .jpeg 01;35 .gif 01;35 .bmp 01;35 # 音频格式 .aac 00;36 .flac 00;36 .ocg 00;36
00=无 01=粗体字 04=下划线 05=闪烁 07=反转 08=隐蔽
。30=黑色 31=红色 32=绿色 33=黄色 34=蓝色 35=品红 36=青色 37=白色
。40=黑色 41=红色 42=绿色 43=黄色 44=蓝色 45=玛瑙色 46=青色 47=白色
。如果你想玩玩这个,这里有一个如何为一个文件设置颜色的例子。
export LS_COLORS=$LS_COLORS:"*.ogg=01;35":"*.mp3=01;35"
这将设置*.ogg
和.mp3
为bold magenta
。如果你把它放在你的.bashrc
文件中,它将成为永久性的。
这是对Karthick87'的回答的扩展。
ls -l
输出中的权限。)#!/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
默认设置下的输出。
[![gnome-terminal screenshot][1]][1]
我的设置的输出(自定义dircolors和自定义Solarized终端主题)。
[![gnome-terminal screenshot][2]][2]
我从 "dircolors -p "和 "man dir_colors "中得到了描述,并通过自己的研究填补了空白。
从14.04到17.10,颜色和描述都是一样的。
[1]: https://i.stack.imgur.com/6kknG.png [2]: https://i.stack.imgur.com/8Zbxl.png
这里没有一个答案包括Ubuntu最新版本中的256种颜色选项。 我'我有颜色缺陷(有些颜色让我在彼此附近有麻烦),所以黑色上默认的蓝色目录对我来说真的很难读懂。 下面是我的研究,以改变这种情况。
输入dircolors -p |less
就可以看到你当前的颜色代码。
默认的.bashrc应该已经配置好了,不仅可以利用系统的色码,还可以在~/.dircolors中配置一个,所以把dircolors的输出转储到.dircolor中,这样你就可以用这个命令开始了。
dircolors -p > ~/.dircolors
备选方案:从seebi's solarized项目中提取一个非常类似的256色dircolors。
抓取这个[colortest脚本][2],并用colortest -w
命令运行它,这样你就可以一次看到所有的颜色。
选择一种颜色。
我喜欢橙色#208。
我想让它成为文本颜色,所以利用这个扩展颜色代码的信息,我可以应用它。
所以你有了一个颜色,现在怎么办。 首先我们要创建字符串。
第一个数字将是一个属性代码,最有可能是00,但如果你想让它闪烁就用05。 选一个属性码: 选择一个属性代码 00=none 01=粗体 04=下划线 05=闪烁 07=反转 08=隐蔽
接下来挑选在该属性码上追加;38;5;
来表明你的文字颜色,得到00;38;5。
然后追加你的颜色。
我选了208,所以我得到00;38;5;208
。
如果你想在它上面也放一个背景,用colortest脚本选择另一种颜色(让我们'say 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][3]和[seebi][4]对此的注释和代码。
1:
[2]: http://www.vim.org/scripts/script.php?script_id=1349 [3]: [email protected]/msg11030.html [4]: [4]:https://github.com/seebi/dircolors-solarized