1. 配色方案原理
linux bash 配置分為兩部分:
- 命令提示符,存放在 PS1 環(huán)境變量中
- 文件類型配色方案,存放在 LS_COLORS 環(huán)境變量中
我們可以通過(guò)如下命令來(lái)查看它們。
# 查看 bash 命令提示符配置
echo $PS1
# 查看 ls 命令顏色配置
echo $LS_COLORS
centos 執(zhí)行結(jié)果如下圖
這樣,我們要修改配色方案只需要設(shè)置這兩個(gè)變量即可,下面是一個(gè)示例方案:
cd ~
vi .bashrc
# 在最后添加如下兩句腳本
PS1='[33[1;32m]u[33[00m]@h:[33[36m]w[33[1;32m]$ [33[00m]'
LS_COLORS="$LS_COLOR:di=1;4;33;40:*.c=00;31:*.JAVA=00;31:*.py=00;31:*.js=00;31:*.jar=00;32:*.sh=01;32:*.aac=00;33:*.au=00;33:*.flac=00;33:*.mid=00;33:*.midi=00;33:*.mka=00;33:*.mp3=00;33:*.mpc=00;33:*.ogg=00;33:*.ra=00;33:*.wav=00;33:*.axa=00;33:*.oga=00;33:*.spx=00;33:*.xspf=00;33:*.xls=04;34:*.xlsx=04;34:*.csv=00;34:*.doc=00;34:*.docx=00;34:*.ppt=00;34:*.pdf=00;34:*.jpg=00;35:*.jpeg=00;35:*.gif=00;35:*.bmp=00;35:*.tif=00;35:*.tiff=00;35:*.png=00;35:*.svg=00;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.webm=01;35:*.mp4=01;35:*.vob=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:*.txt=00;36:*.md=00;36"
效果示意圖如下:
2. 文本屬性和顏色值
Linux 預(yù)定義了可用于試用的文本屬性和顏色值。
2.1 文本屬性
文本屬性 |
0 - normal text |
1- bold or light text (depends on terminal) |
2 - dim text |
4 - underlined text |
5 - blinking text |
7 - reversed text |
8 - hidden text |
同時(shí)設(shè)置多個(gè)屬性時(shí),用分號(hào)分隔。
2.2 顏色值
前景 |
背景 |
30 - black |
40 - black |
31 - red |
41 - red |
32 - green |
42 - green |
33 - yellow |
43 - yellow |
34 - blue |
44 - blue |
35 - purple |
45 - purple |
36 - cyan |
46 - cyan |
37 - white |
47 - white |
可以同時(shí)配置前景色和背景色,同樣以分號(hào)分隔。比如:
# 文件夾 加粗、下劃線、黃色字體,黑色背景顯示
di=1;4;33;40
3. 配置 bash 提示符
默認(rèn)命令提示符顯示并不怎么讓人賞心悅目,顯示的內(nèi)容也不一定符合你的心意,這時(shí)我們就可以通過(guò)自定義來(lái)配置自己喜歡的樣子。
3.1 默認(rèn) bash 提示符
# 查看默認(rèn)命令提示符配置
echo $PS1
# 默認(rèn) bash 提示符
PS1=`[u@h W]$`
- u - 表示用戶名,username
- h - 表示主機(jī)名,hostname(computer name)
- w - 表示工作目錄,working directory
- $ - 表示如果是普通用戶則顯示'$',如果是 root 用戶則顯示'#'
3.2 bash 提示符自定義配色方案
在配置顏色前,首先必須知道顏色基本單元的格式:
[33[COLORm]
- 顏色必須放在 [ 和 ]之間
- 顏色必須以33[或者 e[開(kāi)頭,以m結(jié)尾,e[和33[作用相同
- 在需要清除顏色信息時(shí),使用 00,見(jiàn)下面例子
據(jù)此規(guī)則,我們就可以自己定自己的配色方案了:
PS1='[33[1;32m]u[33[00m]@h:[33[35m]W[33[1;32m]$ [33[00m]'
分段說(shuō)明如下:
- [33[1;32m]u 綠色加粗顯示用戶名
- [33[00m]@h: 使用00清除顏色信息
- [33[35m]W 紫紅色顯示工作目錄
- [33[1;32m]$ 綠色加粗顯示 $ 或 #
- [33[00m] 使用00清除顏色信息
只需把該設(shè)置放到 ~/.bashrc 文件的最后,然后執(zhí)行 source .bashrc 即可生效,效果如下圖:
可用于配置的特殊字符項(xiàng)列表:
A bell character: a |
The date, in “Weekday Month Date” format (e.g., “Tue May 26”): d |
The format is passed to strftime(3) and the result is inserted into the prompt string; an empty format results in a locale-specific time representation. The braces are required:D{format} |
An escape character: e |
The hostname, up to the first ‘.’: h |
The hostname: H |
The number of jobs currently managed by the shell: j |
The basename of the shell’s terminal device name: l |
A newline: n |
A carriage return: r |
The name of the shell, the basename of $0 (the portion following the final slash): s |
The time, in 24-hour HH:MM:SS format: t |
The time, in 12-hour HH:MM:SS format: T |
The time, in 12-hour am/pm format: @ |
The time, in 24-hour HH:MM format: A |
The username of the current user: u |
The version of Bash (e.g., 2.00): v |
The release of Bash, version + patchlevel (e.g., 2.00.0): V |
The current working directory, with $HOME abbreviated with a tilde (uses the $PROMPT_DIRTRIM variable): w |
The basename of $PWD, with $HOME abbreviated with a tilde: W |
The history number of this command: ! |
The command number of this command: # |
If the effective uid is 0, #, otherwise $: $ |
The character whose ASCII code is the octal value nnn: nnn |
A backslash: \ |
Begin a sequence of non-printing characters. This could be used to embed a terminal control sequence into the prompt: [ |
End a sequence of non-printing characters: ] |
4. 配置文件顯示方案
4.1 默認(rèn)顏色方案
# 查看默認(rèn)顏色配置
echo $LS_COLORS
在 CentOS 中的默認(rèn)設(shè)置如下:
4.2. 文件類型編碼
Linux 中一切皆文件,我們可以對(duì)每種類型的文件分別配置不同的文本顯示方案,下表列出了各種文件類型的編碼。
di - directory |
cd - character device |
fi - file |
or - orphan symbolic link (points to a file that no longer exists) |
ln - symbolic link |
mi - missing file (a missing file that an orphan symbolic link points to) |
pi - named pipe(FIFO) |
ex - executable file (has the “x” permission) |
so - socket |
*.extension - any file ending with an extension |
bd - block device |
|
使用這些編碼,可以為每一個(gè)類型都設(shè)置顯示方案,以冒號(hào)分隔。比如:
# 目錄粗體、紅色顯示
di=1;31
# 目錄粗體、下劃線、黃色顯示
di=1;4;33
# 0 - normal 是默認(rèn)值,不需要指定
di=33
# 配置目錄、.c 和 .java 文件的顏色方案
di=1;4;33;40:*.c=00;31:*.java=00;31
4.3 自定義文件顏色方案
LS_COLORS="$LS_COLORS:di=1;4;33;40:*.c=00;31:*.java=00;31:*.py=00;31:*.js=00;31:*.jar=00;32:*.sh=01;32:*.aac=00;33:*.au=00;33:*.flac=00;33:*.mid=00;33:*.midi=00;33:*.mka=00;33:*.mp3=00;33:*.mpc=00;33:*.ogg=00;33:*.ra=00;33:*.wav=00;33:*.axa=00;33:*.oga=00;33:*.spx=00;33:*.xspf=00;33:*.xls=04;34:*.xlsx=04;34:*.csv=00;34:*.doc=00;34:*.docx=00;34:*.ppt=00;34:*.pdf=00;34:*.jpg=00;35:*.jpeg=00;35:*.gif=00;35:*.bmp=00;35:*.tif=00;35:*.tiff=00;35:*.png=00;35:*.svg=00;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.webm=01;35:*.mp4=01;35:*.vob=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:*.txt=00;36:*.md=00;36"
只需把該設(shè)置放到 ~/.bashrc 文件的最后,然后執(zhí)行 source .bashrc 即可生效,效果如下圖:
5. 完整配色方案
最后附上完整的配色方案,快來(lái)試試吧
# ~/.bashrc
# source ~/.bashrc
PS1='[33[1;32m]u[33[00m]@h:[33[35m]W[33[1;32m]$ [33[00m]'
LS_COLORS="$LS_COLORS:di=1;4;33;40:*.c=00;31:*.java=00;31:*.py=00;31:*.js=00;31:*.tgz=01;31:*.taz=01;31:*.dz=01;31:*.gz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.rar=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.jar=00;32:*.sh=01;32:*.aac=00;33:*.au=00;33:*.flac=00;33:*.mid=00;33:*.midi=00;33:*.mka=00;33:*.mp3=00;33:*.mpc=00;33:*.ogg=00;33:*.ra=00;33:*.wav=00;33:*.axa=00;33:*.oga=00;33:*.spx=00;33:*.xspf=00;33:*.xls=04;34:*.xlsx=04;34:*.csv=00;34:*.doc=00;34:*.docx=00;34:*.ppt=00;34:*.pdf=00;34:*.jpg=00;35:*.jpeg=00;35:*.gif=00;35:*.bmp=00;35:*.tif=00;35:*.tiff=00;35:*.png=00;35:*.svg=00;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.webm=01;35:*.mp4=01;35:*.vob=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:*.txt=00;36:*.yml=00;36:*.cnf=00;36:*.conf=00;36:*.md=01;36:*.json=01;36"
export TERM=xterm-256color