Date
Nov. 23rd, 2024
 
2024年 10月 23日

Post: UNIX/Linux : 自定义命令提示符

UNIX/Linux : 自定义命令提示符

Published 12:10 Oct 05, 2015.

Created by @ezra. Categorized in #Technology, and tagged as #UNIX/Linux.

Source format: Markdown

Table of Content

用过终端的朋友肯定对默认的提示符 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当前用户名
\vbash版本
\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。

FB颜色
3040黑色
3141红色
3242绿色
3343黄色
3444蓝色
3545紫色
3646青色
3747白色

此外还可以定义一些特殊显示样式:

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
Pinned Message
HOTODOGO
The Founder and CEO of Infeca Technology.
Developer, Designer, Blogger.
Big fan of Apple, Love of colour.
Feel free to contact me.
反曲点科技创始人和首席执行官。
开发、设计与写作皆为所长。
热爱苹果、钟情色彩。
随时恭候 垂询