公众号

ls 自定义不同文件显示不同颜色

一种方法:linux

1
2
3
4
5
6
7
8
9
10
因为经常使用终端(iTerm|Terminal)ssh到服务器上去,所以整日盯着黑乎乎的屏幕很头痛,还不利于眼睛,所谓“工欲善其事,必先利其器”,所以今天就想让终端也色彩缤纷起来,让我们锻炼眼睛识别颜色的能力吧.在git上找到了SOLARIZED这个项目,可以配置很多很多程序的颜色主体哦,哈哈,很是激动,就配额了一下,下面具体讲讲配置过程。
我本机呢,主要是用到了iTerm2颜色配置,而服务器因为是CentOS,所以主要还是ls命令的颜色,那就是它的dircolors-solarized子项目啦。
首先讲一下,CentOS下的ls配置Solarized Color Theme for GNU ls (as setup by GNU dircolors).
Linux下的ls --color=auto
命令,其实是根据两个文件来显示颜色的,/etc/DIR_COLORS 或者 ~/.dir_colors,一个是系统级别的配置文件,一个用户级别的配置文件。
Solarized Color Theme for GNU ls项目就是提供了配置好了的颜色配置文件,并且可以根据文件类型来展示不同的颜色,可以看看我上面的实例图片,色彩缤纷吧.我就不讲Terminal的 16-色 和 256-色 的差别了,因为我也一知半解.不过这个项目的dircolors.ansi-universal配置文件可以工作在两种形式的终端下,而dircolors.256dark只能工作在265色的终端下,所以除非你知道自己的终端是支持265色的,不然还是下载dircolors.ansi-universal(https://link.jianshu.com/?t=https://github.com/seebi/dircolors-solarized/raw/master/dircolors.ansi-universal)吧.
下面是具体命令
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
cd ~
wget --no-check-certificate https://github.com/seebi/dircolors-solarized/raw/master/dircolors.ansi-universal
#or
#wget http://download.bbkanba.com/dircolors
mv dircolors.ansi-universal ~/.dir_colors
eval `dircolors ~/.dir_colors`
cat >> ~/.bashrc
<<ALLEND########################################
if [ -x /usr/bin/dircolors ]; then
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'
alias tree='tree -C'
fi
########################################ALLEND
source ~/.bashrcls
1
2
3
4
5
6
7
8
iTerm2的配置
iTerm2的配置配置更简单一点,进入到iTerm2的配置子项目下,下载配置文件Solarized Dark.itermcolors或者Solarized Light.itermcolors,双击导入,然后更改首选项选择主题就可以。具体可以查看ReadMe文件。
这里需要补充一点的是,mac 下的ls命令不是gun ls,所以即使iterm2安装了颜色主题,敲入ls命令以后,显示的文件颜色还是有问题的,这里有一个补救办法,运行下面这行,之后再看ls命令的颜色是不是变了
export LSCOLORS=gxfxbEaEBxxEhEhBaDaCaD
但是,这种补救办法也不完美,比如不能根据文件类型来显示颜色。
如果你想追求完美的话,还有另外一种办法,就是用 brew install coreutils
,安装 gun ls命令到mac下,到时你还需要跟上面在linux下操作的一样,下载配置文件,放入到~/.dir_colors

二另一种方法:mac系统

Mac终端terminal颜色实在太单调了,安装Linux使用的GNU Coreutils替换Mac的ls命令:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
1、使用 Homebrew 工具安装Coreutils。
Homebrew类似于Centos下的Yum工具,安装软件自动解决依赖关系,非常不错。Homebrew工具的安装见Homebrew官方首页安装说明。
由于Coreutils安装包是xz压缩格式,因此需要同时安装xz工具:
brew install xz coreutils
2、生成颜色配置文件:
gdircolors --print-database > ~/.dir_colors
3、在~/.bash_profile配置文件中加入以下代码:
if brew list | grep coreutils > /dev/null ; then
PATH="$(brew --prefix coreutils)/libexec/gnubin:$PATH"
alias ls='ls --show-control-chars --color=auto'
eval `gdircolors -b $HOME/.dir_colors`
fi
或者:
if [ "$TERM" != "dumb" ]; then
export LS_OPTIONS='--color=auto'
test -r ~/.dir_colors && eval "$(gdircolors -b ~/.dir_colors)" || eval "$(gdircolors -b)"
eval `gdircolors ~/.dir_colors`
fi
# Useful aliases
alias ls='ls $LS_OPTIONS'
alias ll='ls -al'
alias grep='grep $LS_OPTIONS'
alias fgrep='fgrep $LS_OPTIONS'
alias egrep='egrep $LS_OPTIONS'
gdircolor的作用就是设置ls命令使用的环境变量LS_COLORS(BSD是LSCOLORS),我们可以修改~/.dir_colors自定义文件的颜色,此文件中的注释已经包含各种颜色取值的说明。

最后想说:Star me on GitHub 欢迎 Star

  • 本文作者:Hunter-Zack
  • 本文链接: 2018/08/mac+ls/
  • 版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 CN 许可协议。转载请注明出处!
🙈坚持原创技术分享,您的支持将鼓励我继续创作🙈
显示 Gitment 评论