Answers:
供你参考:
要关闭颜色,您必须在中注释掉以下几行.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
终端。 eval
脚本的更具可读性的版本在这里:github.com/gkotian/gautam_linux/blob/master/scripts/colours.sh
您可以ls
通过查看$LS_COLORS
变量来找出颜色的用途:
另外,文件按属性着色:
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
,但是其格式相当不可读。
这是正在发生的情况的技术说明:
例:
CHR 40;33;01
颜色代码由三部分组成:
分号之前的第一部分表示文本样式。
第二部分和第三部分是颜色和背景色:
假设从左侧开始,则可以省略每个部分。即“ 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的这些变色指令中。
如果您从命令行键入dircolors
(echo $LS_COLORS
也可以使用),您将在1行中获得许多文件类型的代码和颜色列表。dircolors --print-database
一次显示1行。这是一份简短的清单(我尝试输入最重要的清单)。底部有每行末尾不同代码代表什么的解释:
NORMAL 00#全局默认值,尽管一切都应该是某些东西。 FILE 00#普通文件 DIR 01; 34#目录 LINK 01; 36#符号链接。(如果将其设置为“ target”而不是 #数值,颜色与指向的文件相同。) FIFO 40; 33#管道 SOCK 01; 35#插座 门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)且不粘的目录 STICKY 37; 44#dir,其粘性位已设置(+ 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 .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
文件中,它将成为永久文件。
pdf
文件设置颜色,过程是使用export
?是否可以在默认LS_COLORS
变量中简单地添加一个扩展名?
这扩展了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
默认设置输出:
使用我的设置输出(自定义dircolors和自定义Solarized终端主题):
我从dircolors -p
和获得了描述man dir_colors
,并用自己的研究填补了空白。
颜色和说明在14.04至17.10中相同。
rs
手段RESET
,mh
手段MULTIHARDLINK
,ca
手段CAPABILITY
等?
dircolors -p
。
dircolors -p
不说rs是RESET 0#重置为“正常”颜色。
这里没有答案包括最新版本的Ubuntu中的256种颜色选项。我的颜色不足(有些颜色使我彼此麻烦),所以我很难读懂黑色的默认蓝色目录。接下来是我的研究以改变这一点。
键入dircolors -p |less
以查看您当前的颜色代码。
默认的.bashrc应该已经配置好,不仅可以利用系统颜色代码,而且还可以配置〜/ .dircolors中的一个,因此可以将dircolors输出转储到.dircolor中,以便可以使用此命令开始。
dircolors -p > ~/.dircolors
替代方案:从seebi的solarized项目中拾取非常相似的256种颜色dircolor 。
抓取此colortest脚本并使用命令运行它,colortest -w
以便您可以一次查看所有颜色。选择一种颜色。我喜欢橙色的#208。我希望将其作为文本颜色,因此可以在扩展颜色代码上使用此信息,然后将其应用。
所以你有颜色,现在呢。首先,我们必须创建字符串。
第一个数字将是一个属性代码,最有可能是00,但是如果您希望它闪烁,请使用05:
选择一个属性代码:00 =无01 =加粗04 =下划线05 =闪烁07 =反向08 =隐藏
接下来,选择附加;38;5;
到该属性代码的后面,以指示您的文本颜色为00; 38; 5;。然后附加您的颜色。我选了208,所以我得到了00;38;5;208
。
如果您还想在其上放置背景,请使用colortest脚本和;48;5;
背景附加项选择另一种颜色(例如56),并为该颜色附加56以得到总的字符串00;38;5;208;48;5;56
。
那么,现在您拥有了,您将如何处理?
vim ~/.dircolors
并找到您要更改为我们在“ 00; 38; 5; 208”上方确定的字符串的部分(对我来说就是DIR)。
这不会立即生效,您需要加载配置。使用dircolors ~/.dircolors
获取代码来设置LS_COLORS变量。您可以将其粘贴到终端会话中,也可以关闭终端然后重新打开。您还可以将其通过管道传输到文件中,然后作为外壳脚本运行。
您可以使用16种颜色执行相同的步骤。您不需要特殊的; 38; 5或; 48; 5东西。只需将数字扔进字符串中即可享受简单性。
eval
显示了每种类型的输出色彩表现脚本是辉煌...谢谢!