在这一章中,我们将会看一下表面上看来很琐碎的细节-shell 提示符 。但这会揭示一些 shell 和 终端仿真器的内部工作方式 。
和 linux 内的许多程序一样,shell 提示符是可高度配置的,虽然我们把它相当多地看作是理所当然的,但是我们一旦学会了怎样控制它,shell 提示符是一个相当有用的工具 。
解剖一个提示符我们默认的提示符看起来像这样:
[me@linuxbox ~]$注意它包含我们的用户名,主机名和当前工作目录,但是它又是怎样得到这些东西的呢? 结果证明非常简单 。提示符是由一个环境变量定义的,叫做 PS1(是“prompt string one” 的简写) 。我们可以通过 echo 命令来查看 PS1的内容 。
【Linux的shell提示符是可以自定义的】[me@linuxbox ~]$ echo $PS1[\u@h W]$注意:如果你 shell 提示符的内容和上例不是一模一样,也不必担心 。每个 Linux 发行版 定义的提示符稍微有点不同,其中一些相当异于寻常 。
从输出结果中,我们看到那个 PS1 环境变量包含一些这样的字符,比方说中括号,@符号,和美元符号,但是剩余部分就是个谜 。我们中一些机敏的人会把这些看作是由反斜杠转义的特殊字符,就像我们 在第八章中看到的一样 。这里是一部分字符列表,在提示符中 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 $试试其他上表中列出的转义序列,看看你能否想出精彩的新提示符 。
推荐阅读
- 喝茶爱好者必须注意的十个喝茶细节
- 最全面的Python装饰器教程了
- 陈升学派,宋代茶文化的繁荣
- 茶的祖国是中国
- 陈升学派,四个时期了解中国茶文化的发展
- php有哪些运行环境?每个都有不同的特点,适合不同的系统
- 杯茶反映了潮人的生活原则
- php5与php7的区别是什么?
- HTML5标签也可以DDoS攻击的新方法揭秘
- linux最好用的资源监控工具-glances