Linux 终端提示符信息与 $PS1 变量有关
echo $PS1
直接 echo 变量可以看到以下输出,下面详细分析一个这个变量
| 字符 | 含义 |
|---|---|
| \a | 以ASCII格式编码的铃声,当遇到这个字符的时候,计算机会发出嗡嗡文的响声 |
| \d | 以日,月,天的格式显示当前日期,例如:Sat Oct 17 |
| \h | 本地主机名,不带末尾的域名 |
| \H | 完整的主机名称 |
| \j | 运行在当前shell会话中的工作数量 |
| \I | 当前终端的设备名称 |
| \n | 换行符 |
| \r | 回车符 |
| \s | shell程序名称 |
| \t | 以hours:minutes:seconds的格式显示当前时间,24小时制 |
| \T | 同上,12小时制 |
| @ | 以AM/PM的格式显示当前时间 |
| \A | 以hours:minutes的格式显示当前时间,24小时制 |
| \u | 当前用户名 |
| \v | shell程序的版本号 |
| \V | shell程序的版本和版本号 |
| \w | 当前的工作路径 |
| \W | 当前工作路径的最后部分 |
| ! | 当前命令的历史号 |
| # | 当前shell会话中的命令数量 |
| $ | 显示一个‘$’符号,在超级用户登录的情况下会显示一个‘#’字符 |
| \[ | 表示一个或多个非打印字符的开始,意思就是这个符号后面的内容不会在终端中显示,一般用来更改文本的颜色 |
| \] | 非打印字符序列结束 |
对照上面的表格仔细分析一下这个输出结果。
\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$
因为 [] 中的都是非显示字符,直接忽视,简化过后的结果如下,可以看到与输出正好对应。
\u@\h:\w\$
明白原理之后就可以自定义一些好看的终端提示符,例如加上好看的颜文字
$PS1="\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\W: (〃ω〃)\[\033[00m\]\$"
参考资料: