<返回更多

Linux的shell提示符是可以自定义的

2019-10-11    
加入收藏

在这一章中,我们将会看一下表面上看来很琐碎的细节-shell 提示符。但这会揭示一些 shell 和 终端仿真器的内部工作方式。

linux 内的许多程序一样,shell 提示符是可高度配置的,虽然我们把它相当多地看作是理所当然的, 但是我们一旦学会了怎样控制它,shell 提示符是一个相当有用的工具。

解剖一个提示符

我们默认的提示符看起来像这样:

[me@linuxbox ~]$

注意它包含我们的用户名,主机名和当前工作目录,但是它又是怎样得到这些东西的呢? 结果证明非常简单。提示符是由一个环境变量定义的,叫做 PS1(是“prompt string one” 的简写)。我们可以通过 echo 命令来查看 PS1的内容。

[me@linuxbox ~]$ echo $PS1
[\u@h W]$

注意:如果你 shell 提示符的内容和上例不是一模一样,也不必担心。每个 Linux 发行版 定义的提示符稍微有点不同,其中一些相当异于寻常。

从输出结果中,我们看到那个 PS1 环境变量包含一些这样的字符,比方说中括号,@符号,和美元符号, 但是剩余部分就是个谜。我们中一些机敏的人会把这些看作是由反斜杠转义的特殊字符,就像我们 在第八章中看到的一样。这里是一部分字符列表,在提示符中 shell 会特殊对待这些字符:

Linux的shell提示符是可以自定义的

 


Linux的shell提示符是可以自定义的

 

试试一些可替代的提示符设计

参照这个特殊字符列表,我们可以更改提示符来看一下效果。首先, 我们把原来提示符字符串的内容备份一下,以备之后恢复原貌。为了完成备份, 我们把已有的字符串复制到另一个 shell 变量中,这个变量是我们自己创造的。

[me@linuxbox ~]$ ps1_old="$PS1"

我们新创建了一个叫做 ps1_old 的变量,并把变量 PS1的值赋 ps1_old。通过 echo 命令可以证明 我们的确复制了 PS1的值。

[me@linuxbox ~]$ echo $ps1_old
[\u@h W]$

在终端会话中,我们能在任一时间复原提示符,只要简单地反向操作就可以了。

[me@linuxbox ~]$ PS1="$ps1_old"

现在,我们准备开始,让我们看看如果有一个空的字符串会发生什么:

[me@linuxbox ~]$ PS1=

如果我们没有给提示字符串赋值,那么我们什么也得不到。根本没有提示字符串!提示符仍然在那里, 但是什么也不显示,正如我们所要求的那样。我们将用一个最小的提示符来代替它:

PS1="$ "

这样要好一些。至少能看到我们在做什么。注意双引号中末尾的空格。当提示符显示的时候, 这个空格把美元符号和光标分离开。

在提示符中添加一个响铃:

$ PS1="a$ "

现在每次提示符显示的时候,我们应该能听到嗡嗡声。这会变得很烦人,但是它可能会 很有用,特别是当一个需要运行很长时间的命令执行完后,我们要得到通知。

下一步,让我们试着创建一个信息丰富的提示符,包含主机名和当天时间的信息。

$ PS1="A h $ "
17:33 linuxbox $

试试其他上表中列出的转义序列,看看你能否想出精彩的新提示符。

声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多资讯 >>>