Linux中國

在 Linux 命令行中自定義文本顏色

如果你在 Linux 命令行上花費了大量的時間(如果沒有,那麼你可能不會讀這篇文章),你無疑注意到了 ls 以多種不同的顏色顯示文件。你可能也注意到了一些區別 —— 目錄是一種顏色,可執行文件是另一種顏色等等。

這一切是如何發生的呢?以及,你可以選擇哪些選項來改變顏色分配可能就不是很多人都知道的。

一種方法是運行 dircolors 命令得到一大堆展示了如何指定這些顏色的數據。它會顯示以下這些東西:

$ dircolors
LS_COLORS='rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do
=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg
=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01
;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01
;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=0
1;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31
:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.
xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.t
bz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.j
ar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.a
lz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.r
z=01;31:*.cab=01;31:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.
mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:
*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:
*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;3
5:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;
35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01
;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01
;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01
;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;3
5:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;3
5:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;3
6:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;
36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;
36:*.spx=00;36:*.xspf=00;36:';
export LS_COLORS

如果你擅長解析文件,那麼你可能會注意到這個列表有一種 模式 patten 。用冒號分隔開,你會看到這樣的東西:

$ dircolors | tr ":" "n" | head -10
LS_COLORS='rs=0
di=01;34
ln=01;36
mh=00
pi=40;33
so=01;35
do=01;35
bd=40;33;01
cd=40;33;01
or=40;31;01

OK,這裡有一個模式 —— 一系列定義,有一到三個數字組件。我們來看看其中的一個定義。

pi=40;33

有些人可能會問的第一個問題是「pi 是什麼?」在這裡,我們研究的是顏色和文件類型,所以這顯然不是以 3.14 開頭的那個有趣的數字。當然不是,這個 「pi」 代表 「pipe(管道)」 —— Linux 系統上的一種特殊類型的文件,它可以將數據從一個程序傳遞給另一個程序。所以,讓我們建立一個管道。

$ mknod /tmp/mypipe p
$ ls -l /tmp/mypipe
prw-rw-r-- 1 shs shs 0 May 1 14:00 /tmp/mypipe

當我們在終端窗口中查看我們的管道和其他幾個文件時,顏色差異非常明顯。

font colors

pi 的定義中(如上所示),「40」 使文件在終端(或 PuTTY)窗口中使用黑色背景顯示,31 使字體顏色變紅。管道是特殊的文件,這種特殊的處理使它們在目錄列表中突出顯示。

bdcd 定義是相同的 —— 40;33;01,它有一個額外的設置。這個設置會導致 塊設備 block device (bd)和 字元設備 character device (cd)以黑色背景,橙色字體和另一種效果顯示 —— 字元將以粗體顯示。

以下列表顯示由 文件類型 file type 所指定的顏色和字體分配:

setting         file type
=======         =========
rs=0            reset to no color
di=01;34        directory
ln=01;36        link
mh=00           multi-hard link
pi=40;33        pipe
so=01;35        socket
do=01;35        door
bd=40;33;01     block device
cd=40;33;01     character device
or=40;31;01     orphan
mi=00           missing?
su=37;41        setuid
sg=30;43        setgid
ca=30;41        file with capability
tw=30;42        directory with sticky bit and world writable
ow=34;42        directory that is world writable
st=37;44        directory with sticky bit
ex=01;93        executable

你可能已經注意到,在 dircolors 命令輸出中,我們的大多數定義都以星號開頭(例如,*.wav=00;36)。這些按 文件擴展名 file extension 而不是文件類型定義顯示屬性。這有一個示例:

$ dircolors | tr ":" "n" | tail -10
*.mpc=00;36
*.ogg=00;36
*.ra=00;36
*.wav=00;36
*.oga=00;36
*.opus=00;36
*.spx=00;36
*.xspf=00;36
';
export LS_COLORS

這些設置(上面列表中所有的 00;36)將使這些文件名以青色顯示。可用的顏色如下所示。

all colors

如何改變設置

你要使用 ls 的別名來打開顏色顯示功能。這通常是 Linux 系統上的默認設置,看起來是這樣的:

alias ls='ls --color=auto'

如果要關閉字體顏色,可以運行 unalias ls 命令,然後文件列表將僅以默認字體顏色顯示。

你可以通過修改 $LS_COLORS 設置和導出修改後的設置來更改文本顏色。

$ export LS_COLORS='rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;...

注意:上面的命令由於太長被截斷了。

如果希望文本顏色的修改是永久性的,則需要將修改後的 $LS_COLORS 定義添加到一個啟動文件中,例如 .bashrc

更多關於命令行文本

你可以在 NetworkWorld 的 2016 年 11 月的帖子中找到有關文本顏色的其他信息。

via: https://www.networkworld.com/article/3269587/linux/customizing-your-text-colors-on-the-linux-command-line.html

作者:Sandra Henry-Stocker 選題:lujun9972 譯者:MjSeven 校對:pityonline

本文由 LCTT 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的電子郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國