定制 shell 提示符

PS(Prompt Sign)是指命令提示符,在 Linux 环境下 $PS1 是终端提示符,我们可以用预设的一些特殊符号来改变 $PS1 变量。首先,先看一下 $PS1 到变量,本例以 Ubuntu 18 为准:

[Linux]$ echo $PS1
\[\e]0;\u@\h:\w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\
[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$

PS1 变量中各项提示符的含义:

  • \d: 日期
  • \H: 完整的主机名称
  • \h: 仅取主机的第一个名字
  • \t: 显示时间为 24 小时格式,如:HH:MM:SS
  • \T: 显示时间为 12 小时格式
  • \A: 显示时间为 24 小时格式:HH:MM
  • \u: 当前用户的账号名称
  • \v: BASH 的版本信息
  • \w: 完整的工作路径名
  • \W: 最后一个路径名
  • \#: 下达的第几个命令
  • \$: 提示字符,root 用户为 # ,普通用户为 $

同时可以通过 PS1 变量设置提示符的颜色,在 PS1 中设置字符序列颜色的格式为: \[\e[F;Bm\] 其中“F”为字体颜色,编号30~37;“B”为背景色,编号40~47。取消设置: \[\e[0m\]

每种字体颜色对应的代码:

  • 0=重置
  • 30=黑色
  • 31=红色
  • 32=绿色
  • 33=黄色
  • 34=蓝色
  • 35=洋红
  • 36=青色
  • 37=白色

背景颜色对应的代码:

  • 0=重置
  • 40=黑色
  • 41=红色
  • 42=绿色
  • 43=黄色
  • 44=蓝色
  • 45=洋红
  • 46=青色
  • 47=白色
  • 01=高亮显示(常用)
  • 04=underline
  • 07=反白显示
  • 08=不可见

在修改提示符时,可以先临时修改,以查看效果。等满意之后在写入配置文件 ~/.bashrc 中,使效果永久生效。

提示

PS1 在赋值的时因为值中包含空格所以需要用单引号 ' 把值包起来,同时需要注意,变量与值以等号连结,而且等号两边不能直接接空格

gavin@gavin-ubuntu:~$ PS1='\[\H\]\$ '
gavin-ubuntu$ PS1='\[\H@\u\]\$ '
gavin-ubuntu@gavin$ PS1='\[\w\]\$ '
~$ cd Documents/
~/Documents$ PS1='[\u@\h \w \A #\#]\$ '
[gavin@gavin-ubuntu ~/Documents 21:17 #6]$ PS1='\u@\W\$ '

# 个人默认的修改,带颜色版本
PS1='\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\W\[\033[00m\]\$ '