Control Sequence Introducer (CSI) 在ANSI转义序列中用两字符序列ESC [
表示, 这个序列是由控制字符ESC
(通常用^[
或<ESC>
表示) , 加上左方括号字符[
组成, 即^[[
。
在bash中, 控制字符ESC也支持\e
、\033
或\x1b
三种转义字符的写法, 大写字母也行 (\E
和\x1B
) 。
转义序列代码中没有空格
转义序列代码在实际使用时中间没有空格, 下面示例中用空格隔开只是方便阅读。
要控制显示格式, 须使用Set Graphic Rendition (SGR) 转义序列: ESC [ parameters m
。
parameters
是控制代码, 使用多个代码时中间用分号;
隔开, 比如1;31
。- 如果不指定控制代码, 即
ESC [ m
, 相当于ESC [ 0 m
(重置所有显示控制属性为默认设置) 。 m
表示SGR
序列。
显示控制代码有3类:
- 效果控制代码
- 前景色控制代码 (即字体颜色)
- 背景色控制代码
代码 | 代码 | 效果 |
---|
00 | 0 | 重置所有显示属性为默认设置 |
01 | 1 | 字体加粗 |
04 | 4 | 字体加下划线 |
05 | 5 | 字体闪烁 |
07 | 7 | 前景色与背景色调转 |
00
与0
效果相同, 其他数字也类似。
前景色代码 | 背景色代码 | 颜色 |
---|
30 | 40 | 黑色 |
31 | 41 | 红色 |
32 | 42 | 绿色 |
33 | 43 | 黄色 |
34 | 44 | 蓝色 |
35 | 45 | 紫色 |
36 | 46 | 青色 |
37 | 47 | 白色 |
在环境变量配置文件中添加:
1
| export PS1='${debian_chroot:+($debian_chroot)}\[\e[1;37m\]\t \[\e[1;31m\]\u\[\e[1;37m\]@\[\e[1;31m\]\h \[\e[1;36m\]$PWD\[\e[1;31m\]\n\$\[\e[0m\]'
|
其他Linux发行版自行注意chroot
的写法。如果觉得自己用不到chroot
, 也可以这样:
1
| export PS1='\[\e[1;37m\]\t \[\e[1;31m\]\u\[\e[1;37m\]@\[\e[1;31m\]\h \[\e[1;36m\]$PWD\[\e[1;31m\]\n\$\[\e[0m\]'
|
\[
和\]
这两个转义字符通知bash, 被括起来的字符不占用命令行上的任何空间, 这样就使自动换行能够继续正常工作。如果没有这两个转义字符, 当用户键入的命令到达终端的最右端时, 或者查看历史命令时, 就会出现显示错乱的情况。\e[1;37m
即SGR转义序列ESC [ parameters m
, 定义后续字符的颜色, 这里是加粗的白色。\t
以HH:MM:SS格式显示24小时制时间。\u
显示当前用户名。\h
显示当前host机器名称。$PWD
显示完整路径。\n
表示换行。\$
当用户为root
时, 显示为#
。\e[0m
重置后续字符的显示控制属性为默认设置。
普通用户:
20:34:50 zhyoch@Debian /home/zhyoch$ root用户:
20:34:50 root@Debian /root# 修改C:\Program Files\Git\etc\profile.d\git-prompt.sh
, 参考使用以下内容:
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
| if test -f /etc/profile.d/git-sdk.sh
then
TITLEPREFIX=SDK-${MSYSTEM#MINGW}
else
TITLEPREFIX=$MSYSTEM
fi
if test -f ~/.config/git/git-prompt.sh
then
. ~/.config/git/git-prompt.sh
else
PS1='\[\e]0;$TITLEPREFIX:$PWD\007\]' # set window title
PS1="$PS1"'\n' # new line
PS1="$PS1"'\[\e[1;37m\]' # change to white
PS1="$PS1"'\t ' # show time
PS1="$PS1"'\[\e[1;31m\]' # change to red
PS1="$PS1"'\u' # show user
PS1="$PS1"'\[\e[1;37m\]' # change to white
PS1="$PS1"'@' # show @
PS1="$PS1"'\[\e[1;31m\]' # change to red
PS1="$PS1"'\h ' # show host<space>
PS1="$PS1"'\[\e[1;36m\]' # change to cyan
PS1="$PS1"'$PWD' # current working directory
if test -z "$WINELOADERNOEXEC"
then
GIT_EXEC_PATH="$(git --exec-path 2>/dev/null)"
COMPLETION_PATH="${GIT_EXEC_PATH%/libexec/git-core}"
COMPLETION_PATH="${COMPLETION_PATH%/lib/git-core}"
COMPLETION_PATH="$COMPLETION_PATH/share/git/completion"
if test -f "$COMPLETION_PATH/git-prompt.sh"
then
. "$COMPLETION_PATH/git-completion.bash"
. "$COMPLETION_PATH/git-prompt.sh"
PS1="$PS1"'\[\e[1;36m\]' # change color to cyan
PS1="$PS1"'`__git_ps1`' # bash function
fi
fi
PS1="$PS1"'\n' # new line
PS1="$PS1"'\[\e[1;31m\]' # change to red
PS1="$PS1"'$' # prompt: always $
PS1="$PS1"'\[\e[0m\]' # change color to unset
fi
MSYS2_PS1="$PS1"
# Evaluate all user-specific Bash completion scripts (if any)
if test -z "$WINELOADERNOEXEC"
then
for c in "$HOME"/bash_completion.d/*.bash
do
# Handle absence of any scripts (or the folder) gracefully
test ! -f "$c" ||
. "$c"
done
fi
|
要想效果和上面一样, 需要更改GitBash的设置: Options
→Text
→Show blod
→as font & as colour