用户进入 Bash 以后,Bash 会显示一个命令提示符,用来提示用户在该位置后面输入命令。
命令提示符通常是美元符号$,对于根用户则是井号#。这个符号是环境变量PS1决定的,执行下面的命令,可以看到当前命令提示符的定义。
$
#
PS1
$ echo $PS1
Bash 允许用户自定义命令提示符,只要改写这个变量即可。改写后的PS1,可以放在用户的 Bash 配置文件.bashrc里面,以后新建 Bash 对话时,新的提示符就会生效。要在当前窗口看到修改后的提示符,可以执行下面的命令。
.bashrc
$ source ~/.bashrc
命令提示符的定义,可以包含特殊的转义字符,表示特定内容。
\a
\d
\h
\H
\j
\l
\n
\r
\s
\t
hours:minutes:seconds
\T
\@
AM/PM
\A
hours:minutes
\u
\v
\V
\w
\W
\!
\#
\$
\[
\]
举例来说,[\u@\h \W]\$这个提示符定义,显示出来就是[user@host ~]$(具体的显示内容取决于你的系统)。
[\u@\h \W]\$
[user@host ~]$
[user@host ~]$ echo $PS1 [\u@\h \W]\$
改写PS1变量,就可以改变这个命令提示符。
$ PS1="\A \h \$ " 17:33 host $
注意,$后面最好跟一个空格,这样的话,用户的输入与提示符就不会连在一起。
默认情况下,命令提示符是显示终端预定义的颜色。Bash 允许自定义提示符颜色。
使用下面的代码,可以设定其后文本的颜色。
\033[0;30m
\033[1;30m
\033[0;31m
\033[1;31m
\033[0;32m
\033[1;32m
\033[0;33m
\033[1;33m
\033[0;34m
\033[1;34m
\033[0;35m
\033[1;35m
\033[0;36m
\033[1;36m
\033[0;37m
\033[1;37m
举例来说,如果要将提示符设为红色,可以将PS1设成下面的代码。
PS1='\[\033[0;31m\]<\u@\h \W>\$'
但是,上面这样设置以后,用户在提示符后面输入的文本也是红色的。为了解决这个问题, 可以在结尾添加另一个特殊代码\[\033[00m\],表示将其后的文本恢复到默认颜色。
\[\033[00m\]
PS1='\[\033[0;31m\]<\u@\h \W>\$\[\033[00m\]'
除了设置前景颜色,Bash 还允许设置背景颜色。
\033[0;40m
\033[1;44m
\033[0;41m
\033[1;45m
\033[0;42m
\033[1;46m
\033[0;43m
\033[1;47m
下面是一个带有红色背景的提示符。
PS1='\[\033[0;41m\]<\u@\h \W>\$\[\033[0m\] '
除了PS1,Bash 还提供了提示符相关的另外三个环境变量。
环境变量PS2是命令行折行输入时系统的提示符,默认为>。
PS2
>
$ echo "hello > world"
上面命令中,输入hello以后按下回车键,系统会提示继续输入。这时,第二行显示的提示符就是PS2定义的>。
hello
环境变量PS3是使用select命令时,系统输入菜单的提示符。
PS3
select
环境变量PS4默认为+。它是使用 Bash 的-x参数执行脚本时,每一行命令在执行前都会先打印出来,并且在行首出现的那个提示符。
PS4
+
-x
比如下面是脚本test.sh。
test.sh
#!/bin/bash echo "hello world"
使用-x参数执行这个脚本。
$ bash -x test.sh + echo 'hello world' hello world
上面例子中,输出的第一行前面有一个+,这就是变量PS4定义的。
Copyright© 2013-2020
All Rights Reserved 京ICP备2023019179号-8