使用环境变量 PS1 设置 Bash 提示符的样式.
文章目录
-
-
- 1. 内容模式
- 2. 格式与颜色
- 3. 配置文件设置
-
1. 内容模式
在常用环境变量中已经已经介绍过 PS1 变量,主要由下表的转义字符组成:
\d |
代表日期,格式为weekday month date,例如:“Mon Aug 1” |
\H |
完整的主机名称。例如:我的机器名称为:fc4.linux,则这个名称就是fc4.linux |
\h |
仅取主机的第一个名字,如上例,则为fc4,.linux则被省略 |
\t |
显示时间为24小时格式,如:HH:MM:SS |
\T |
显示时间为12小时格式 |
\A |
显示时间为24小时格式:HH:MM |
\u |
当前用户的账号名称 |
\v |
BASH的版本信息 |
\l |
显示登陆的终端号 |
\w |
完整的工作目录名称。家目录会以 ~代替 |
\W |
利用basename取得工作目录名称,所以只会列出最后一个目录 |
/! |
命令行动态统计历史命令次数 |
\# |
下达的第几个命令 |
\$ |
提示字符,如果是root时,提示符为:# ,普通用户则为:$ |
例如
CentOS 中默认
PS1="[\u@\h \W]\$ "
Ubuntu 中默认
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
等效于
PS1='\u@\h:\w\$ '
下面内容用于在终端标题处显示当前目录
${debian_chroot:+($debian_chroot)}
2. 格式与颜色
PS1 控制格式与颜色的方法与《控制 Bash 输出的格式与颜色》中类似,但是需要用 \[
和\]
将 \033[控制字符m......\033[0m
包裹起来,避免出现格式混乱.
”\[\033[控制字符m......\033[0m\]“
将下面代码用 ;
连接排列放在上面控制字符
的部分. 不区分先后,可多种效果叠加:
- 格式代码:
F
,F
∈{1,2,3,4,5,7,8} - 前景 8/16 色彩代码:
FgC16
,FgC16
∈{30,…,37,39,90,…,97} - 背景 8/16 色彩代码:
BgC16
,BgC16
∈{40,…,47,49,100,…,107} - 前景 88/256 色彩代码:
38;5;C256
,C256
∈{0,1,…,255} - 背景 88/256 色彩代码:
48;5;C256
,C256
∈{0,1,…,255}
具体效果参看《控制 Bash 输出的格式与颜色》.
例如:
Ubuntu16.04 中彩色提示符设置如下:
PS1='\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
3. 配置文件设置
设置 Ubuntu 格式的命令提示符. 如《环境变量配置文件》所述,在 ~/.bashrc
文件末尾添加以下内容:
# self-defined PS1
PS1='\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
最好在以下内容之前添加内容
# If this is an xterm set the title to user@host:dir
case "$TERM" in
xterm*|rxvt*)PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1";;
*);;
esac
添加
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
如下
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '# If this is an xterm set the title to user@host:dir
case "$TERM" in
xterm*|rxvt*)PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1";;
*);;
esac
设置 CentOS 格式的命令提示符:
export PS1="\[\033[01;35m\][\[\033[00m\]\[\033[01;32m\]\u@\h\[\033[00m\] \[\033[01;34m\]\w\[\033[00m\]\[\033[01;35m\]]\[\033[00m\]\$ "