自定义提示
在本文中,我们将介绍一些细节 — shell提示
。 该检查将揭示shell
的一些内部工作原理以及终端仿真器程序本身。
就像Linux
中的许多东西一样,shell
提示符是高度可配置的,尽管我们已经将其视为理所当然,但是一旦学会了如何控制它,该提示符便是一个非常有用的设备。
提示解剖
默认提示符如下:
[xiongze@iZerb5rob3dcf6Z ~]$
注意到,它包含用户名
,主机名
和当前的工作目录
。该提示由名为PS1
的环境变量定义( “prompt string one
”的缩写)。 我们可以使用echo
命令查看PS1
的内容:
[xiongze@iZerb5rob3dcf6Z ~]$ echo $PS1
[\u@\h \W]\$
从结果中,我们可以看到PS1
包含一些我们在提示符下看到的字符,例如方括号,@
符号和$
符号。反斜杠转义的特殊字符。这是shell
在提示字符串中特殊对待的部分字符列表:
尝试新的设计
使用此特殊字符列表,我们可以更改提示以查看效果。首先,我们将备份现有的字符串,以便我们稍后将其还原。为此,我们将复制现有的字符串到我们创建的另一个shell变量中:
[root@iZerb5rob3dcf6Z ~]$ ps1_old="$PS1"
[root@iZerb5rob3dcf6Z ~]$ echo $ps1_old
[\u@\h \W]\$
#任何时候只需执行此操作即可恢复初始状态
[root@iZerb5rob3dcf6Z ~]$ PS1="$ps1_old"
修改PS1
的值:
[root@iZerb5rob3dcf6Z ~]# PS1="\$"
$pwd
/root
$echo $PS1
$
#我们包括了\ [和\]序列。自从ASCII铃(\ a)不会“打印”,也就是说,它不会移动光标,我们需要知道bash,以便它可以正确确定提示的长度。
$PS1="\[\d\]\$"
六 6月 13$echo $PS1
\[\d\]$
六 6月 13$PS1="\A \h \$"
13:42 iZerb5rob3dcf6Z $echo $PS1
\A \h $
增加颜色
大多数终端仿真器程序会响应某些非打印字符序列,以控制诸如字符属性
(如颜色,粗体文本和可闪烁文本)和光标位置
之类的内容。
通过向终端仿真器发送嵌入在要显示的字符流中的ANSI转义码
来控制字符颜色。 控制代码不会“打印”在显示器上,而是由终端解释为指令。
正如我们在上表中,\ [
和\]
序列用于封装非打印字符。ANSI转义代码
以八进制 033
(由转义键生成的代码)开头,后跟可选的 字符属性
,然后是指令。 例如,
将文本颜色设置为正常(属性 = 0
)的代码,黑色文本为:
\033 [0 ; 30m
这是可用文本颜色的表格。 请注意,颜色分为两组,通过使用粗体字符属性(1
)进行区分,该属性创建“浅”颜色的外观,以下是用于设置文本颜色的转义序列:
尝试发出红色提示。在开头插入转义代码:
关闭颜色
\033[0m 关闭颜色。这会影响文本和背景。
但是注意,在提示符后键入的所有文本也都是红色。为此,我们需在提示的末尾添加另一个转义代码,告诉终端返回以前的颜色:
也可以使用下面列出的代码设置文本背景颜色。背部底色不支持粗体属性。
我们可以通过对第一个进行简单的更改来创建背景的提示:
注意:除了普通(0)和粗体(1)字符属性外,文本也可能是同时指定下划线(4),闪烁(5)和反转(7)属性。
保存提示
我们可以通过将提示添加到我们的.bashrc
中来使其永久保存文件。