用过终端的朋友肯定对默认的提示符 localhost:~ Meniny$ 或者 [Meniny@localhost ~]$ 很熟悉,现在我们来了解一下如果修改这个提示符的内容,以 bash 为例。
自定义命令提示符内容
在 UNIX/Linux 系统中,有一个变量叫做 PS1,我们要修改的内容就是它,首先来看一下它默认的内容,以 OS X 为例:
localhost:~ Meniny$ echo $PS1
\h:\W \u\$
你可以看到 PS1 中有很多转义符号,下面我们来了解一下 FC4 环境下这些转义符号所代表的意义:
\d | 日期,格式为年 月 日 |
|---|---|
\H | 完整主机名 |
\h | 缩写主机名 |
\t | 时间,24小时制,格式为HH:MM:SS |
\T | 时间,12小时制 |
\A | 时间,24小时制,格式为HH:MM |
\u | 当前用户名 |
\v | bash版本 |
\w | 工作目录,Home目录用~代替 |
\W | 利用basename取得工作目录,只列出最后一个目录 |
\# | 命令编号 |
\$ | 提示字符,用户为root时显示#,普通用户则显示$ |
如上表,我们只需要使用自己需要的转义字符赋值给 PS1 即可,例如:
localhost:~ Meniny$ PS1='\t \h:\W \u\$ '
18:00:00 localhost:~ Meniny$
自定义命令提示符颜色
你一定和我一样,无法满足于仅仅命令提示符的内容,那么接下来我们再来修改它的颜色,这一操作与前面的类似,仍需要修改 PS变量,配置颜色的格式为:
\[\e[F;Bm\]变色部分\[\e[m\]
其中 F 的前景色,取值为 30 ~ 37;B 为背景色,取值为 40 ~ 47。
| F | B | 颜色 |
|---|---|---|
| 30 | 40 | 黑色 |
| 31 | 41 | 红色 |
| 32 | 42 | 绿色 |
| 33 | 43 | 黄色 |
| 34 | 44 | 蓝色 |
| 35 | 45 | 紫色 |
| 36 | 46 | 青色 |
| 37 | 47 | 白色 |
此外还可以定义一些特殊显示样式:
| 0 | 默认样式 |
|---|---|
| 1 | 高亮 |
| 4 | 下划线 |
| 5 | 闪烁 |
| 7 | 反白 |
| 8 | 不可见 |
例如要关闭颜色输出,可通过使用 \e[0m\]变色部分\[\e[m\] 实现。
好了,举个栗子,将 localhost:~ Meniny$ 中的 localhost 部分变为绿色,~ 部分变为粉色,Meniny 部分变为黄色,: 和 $ 部分保持默认颜色:
localhost:~ Meniny$ PS1='\[\e[1;32m\]\h:\W\[\e[m\] \[\e[1;33m\]\u\[\e[m\]\[\e[0m\]$ \[\e[m\]'
localhost:~ Meniny$
保存配置
前面两部分的修改内容,都只是暂时性的,如果你想要让他们永久生效,就需要将它们定义到文件中,仅以 OS X 为例:
vi ~/.bash_profile
按 i 进入编辑模式,输入前面的指令(包括颜色与显示内容),例如:
PS1='\[\e[1;32m\]\h:\W\[\e[m\] \[\e[1;33m\]\u\[\e[m\]\[\e[0m\]$ \[\e[m\]'
如果你希望在开启子 shell 后仍然显示同样的效果,那么额外添加 export 关键字,也即:
export PS1='\[\e[1;32m\]\h:\W\[\e[m\] \[\e[1;33m\]\u\[\e[m\]\[\e[0m\]$ \[\e[m\]'
按 ⎋ 输入 :wq 回车以保存并退出编辑器:
source ~/.bash_profile