注:本文中终端均以bash shell为例,其他终端仅供参考。
简介
PS1是linux下的shell提示行环境变量,通过对其定制,可以得到非常漂亮的提示行。 而且在linux的终端下控制色彩是非常简单的一件事,用控制字符就可以做得到,所以提示行也可以变成彩色的。
更改PS1环境变量很简单,只需执行
export PS1="bash" #将bash替换为自己想要的内容即可。
一般distro默认的是"\u@\h:\w$"之类的,我们可以在此基础上进行定制。
提示符
可以在bash的man page中找到以下内容:
提示符(PROMPTING)
在交互执行时,bash在准备好读入一条命令时显示主提示符PS1,在需要更多的输入来完成一条命令时显示PS2。Bash
允许通过插入一些反斜杠转义的特殊字符来定制这些提示字符串,这些字符被如下解释:
\a 一个 ASCII 响铃字符 (07)
\d 日期,格式是 "星期 月份 日" (例如,"Tue May 26")
\D{format}
format被传递给strftime(3),结果被插入到提示字符串中;
空的format将使用语言环境特定的时间格式,花括号是必需的。
\e 一个 ASCII 转义字符 (033)
\h 主机名,第一个 `.' 之前的部分
\H 主机名
\j shell 当前管理的作业数量
\l shell 的终端设备名的基本部分
\n 新行符
\r 回车
\s shell 的名称, $0 的基本部分 (最后一个斜杠后面的部分)
\t 当前时间,采用 24小时制的 HH:MM:SS 格式
\T 当前时间,采用 12小时制的 HH:MM:SS 格式
\@ 当前时间,采用 12小时制上午/下午 (am/pm) 格式
\A 当前时间,采用 24小时制上午/下午格式
\u 当前用户的用户名 the username of the current user
\v bash 的版本 (例如,2.00)
\V bash 的发行编号,版本号加补丁级别 (例如,2.00.0)
\w 当前工作目录
\W 当前工作目录的基本部分
\! 此命令的历史编号
\# 此命令的命令编号
\$ 如果有效 UID 是 0,就是 #, 其他情况下是 $
\nnn 对应八进制数 nnn 的字符
\\ 一个反斜杠
\ 一个不可打印字符序列的开始,可以用于在提示符中嵌入终端控制序列
\] 一个不可打印字符序列的结束
以上提示符均可用在PS1中。
色彩控制
颜色设置的格式如下
\\033[C;F;Bm\]
\\e[C;F;Bm\]
\^[C;F;Bm\] #^是一个字符,按下C-v后安Esc即可,单独输入^与无效
以上三种方式皆可,但要切记加\和],否则终端显示会乱掉的
其中F是前景色,B是背景色,C是代码
具体颜色可以参照下表
前景 背景 颜色
---------------------------------------
30 40 黑色
31 41 紅色
32 42 绿色
33 43 黄色
34 44 蓝色
35 45 紫红色
36 46 青蓝色
37 47 白色
代码表
代码 意义
-------------------------
0 关闭
1 高亮显示
4 下划线
5 闪烁
7 反白显示
8 不可见
git分支显示
这个其实git本身就自带,在/etc/bash_completion.d/git-prompt.sh文件中就有__git_ps1(),想要在PS1中调用也非常简单
“’$(__git_ps1 “(%s)”)’”
设置
具体的设置就看个人喜好了,下面贴一下我的
if ${EUID} == 0 ]] ; then
ps1_color="\\033[0;31m\]";
user_host="\h"
else
ps1_color="\\033[0;34m\]";
user_host="\\033[0;36m\]\u\\033[0;31m\]@\\033[0;32m\]\h"
fi
export PS1="$ps1_color\342\224\214\342\224\200\\$]\342\224\200$(ppwd)$user_host$ps1_color]\342\224\200\\033[32m\]\w"'$(__git_ps1 "(%s)")'"$ps1_color]\342\224\200\t$ps1_color]\n$ps1_color\342\224\224\342\224\200>\\033[0m\]"
unset ps1_color user_host
简单的预览