当前位置:首页 > 服务器类 > Linux服务器 > > 定制精彩的命令提示行

定制精彩的命令提示行

点击次数:4 次 发布日期:2008-11-29 14:30:41 作者:源代码网
源代码网推荐
源代码网推荐
源代码网推荐  提示行魔术--增强系统提示行
源代码网推荐  
源代码网推荐  Daniel Robbins
源代码网推荐  Gentoo Technologies 公司总载兼首席执行官
源代码网推荐  内容:
源代码网推荐  提示行基础
源代码网推荐  彩色化
源代码网推荐  Xterm 中的乐趣
源代码网推荐  参考资源
源代码网推荐  作者简介
源代码网推荐  如果您很容易使 shell 提示行变得色彩绚烂斓且带有更多信息, 为什么还要坚持用单调 的标准 shell 提示行呢?在这篇技巧中,Daniel Robbins 将说明如何获得符合您的意愿的shell 提示行,并会说明如何动态更新 X 终端的标题栏。
源代码网推荐  作为 Linux/UNIX 人,我们有很长的时间是在 shell 中工作,并且在许多情况下, 下面这一行就是始终盯着我们的那个提示行:
源代码网推荐  bash-2.04$
源代码网推荐  如果您恰巧是超级用户 (root),您就有权使用下面这个美丽的标示“身份”的提示行版本:
源代码网推荐  bash-2.04#
源代码网推荐  这些提示行并不是十分漂亮。这也就难怪几种 Linux 版本对默认提示行进行了升级, 在其中增加了颜色和更多的信息。但是,即便您恰好有一个本身带有很好的彩色提示行的新式版本,它也不可能是完美无缺的。您或许希望在提示行中增加或更改几种颜色,或者增加(或删除)一些信息。从头开始设计属于您自己的彩色的、经过装饰的提示行并不难。
源代码网推荐  提示行基础在 bash 下,可以通过更改 PS1 环境变量的值来设置提示行,如下所示:
源代码网推荐  $ export PS1="> "
源代码网推荐  >
源代码网推荐  更改会立即生效,通过将 "export" 定义放在您的 ~/.bashrc 文件中可将这种更改固定
源代码网推荐  下来。只要您愿意,PS1 可以包含任意数量的纯文本:
源代码网推荐  $ export PS1="This is my super prompt > "
源代码网推荐  This is my super prompt >
源代码网推荐  尽管这很有趣,但在提示行中包含大量静态文本并不是特别有用。大多数定制的提示行包 含诸如用户名、工作目录或主机名之类的信息。 这些花絮信息可以帮助您在 shell 世界中遨游。例如,下面的提示行将显示您的用户名和主机名:
源代码网推荐  $ export PS1="u@H > "
源代码网推荐  drobbins@freebox >
源代码网推荐  这个提示行对于那些以多个不同名称的帐户登录多台机器的人尤为有用,因为它可以提醒您:您目前在哪台机器上操作,拥有什么权限。
源代码网推荐  在上面的示例中,我们使用了专用的用反斜杠转义的字符序列,藉此通知 bash 将用户名
源代码网推荐  和主机名插入提示行中,当这些转义字符序列出现在 PS1 变量中时,bash 就会用特定的值替
源代码网推荐  换它们。我们使用了序列 "u"(表示用户名)和 "H"(表示主机名的第一部分)。下面是 bash 可识别的全部专用序列的完整列表(您可以在 bash man page 的 "PROMPTING" 部分找
源代码网推荐  到这个列表):
源代码网推荐  序列 说明
源代码网推荐  a ASCII 响铃字符(也可以键入 07)
源代码网推荐  d "Wed Sep 06" 格式的日期
源代码网推荐  e ASCII 转义字符(也可以键入 33)
源代码网推荐  h 主机名的第一部分(如 "mybox")
源代码网推荐  H 主机的全称(如 "mybox.mydomain.com")
源代码网推荐  j 在此 shell 中通过按 ^Z 挂起的进程数
源代码网推荐  l 此 shell 的终端设备名(如 "ttyp4")
源代码网推荐   换行符
源代码网推荐   回车符
源代码网推荐  s shell 的名称(如 "bash")
源代码网推荐   24 小时制时间(如 "23:01:01")
源代码网推荐  T 12 小时制时间(如 "11:01:01")
源代码网推荐  @ 带有 am/pm 的 12 小时制时间
源代码网推荐  u 用户名
源代码网推荐  v bash 的版本(如 2.04)
源代码网推荐  V Bash 版本(包括补丁级别) ?/td>
源代码网推荐  w 当前工作目录(如 "/home/drobbins")
源代码网推荐  W 当前工作目录的“基名 (basename)”(如 "drobbins")
源代码网推荐  ! 当前命令在历史缓冲区中的位置
源代码网推荐  # 命令编号(只要您键入内容,它就会在每次提示时累加)
源代码网推荐  $ 如果您不是超级用户 (root),则插入一个 "$";如果您是超级用户,则显示一个 "#"
源代码网推荐  xxx 插入一个用三位数 xxx(用零代替未使用的数字,如 "07")表示的 ASCII 字符
源代码网推荐  \ 反斜杠
源代码网推荐  [ 这个序列应该出现在不移动光标的字符序列(如颜色转义序列)之前。它使 bash 能够正确计算自动换行。
源代码网推荐  ] 这个序列应该出现在非打印字符序列之后。
源代码网推荐  这样,您已经知道了 bash 中用反斜杠转义的全部专用序列。请稍微演练一下这些序列,以对它们的工作方式获得一些感性认识。在您做了一些测试之后,下面开始添加颜色。
源代码网推荐  彩色化
源代码网推荐  添加颜色相当容易;第一步是设计不带颜色的提示行。然后,我们所要做的只是添加终端 (而不是 bash)可识别的专用转义序列,以使它以彩色显示文本的某些部分。标准 Linux 终
源代码网推荐  端和 X 终端允许您设置前景(文字)颜色和背景颜色,如果需要,还可以启用 "bold" 字符。
源代码网推荐  有八种颜色可供我们选择。
源代码网推荐  颜色是通过在 PS1 中添加专用序列来选择的 -- 基本上是夹在 "e["(转义开方括号)
源代码网推荐  和 "m" 之间数字值。如果指定一个以上的数字代码,则用分号将它们分开。 下面是一个颜色
源代码网推荐  代码示例:
源代码网推荐  "e[0m"
源代码网推荐  如果将数字代码指定为零,则它就会通知终端将前景、背景和加粗设置重置为它们的默认 值。您可能会在在提示行结束时使用这个代码,以使您键入的文字成为非彩色的。现在,让我 们看一下这些颜色代码。请注意下面的抓屏结果:
源代码网推荐  颜色表
源代码网推荐  要使用这个表,首先请查找您要使用的颜色,然后查找对应的前景编号 (30-37) 和背景 编号 (40-47)。例如,如果您喜欢黑底绿字,则可将编号分别设为 32 和 40。 然后打开您的 提示行定义并在其中添加适当的颜色代码。下面的定义:
源代码网推荐  export PS1="w> "
源代码网推荐  变为:
源代码网推荐  export PS1="e[32;40mw> "
源代码网推荐  到现在为止,提示行尽管已经很不错了,但仍不太完美。在 bash 显示出工作目录以后,我们需要使用 "e[0m" 序列将颜色重新设置为正常值。
源代码网推荐  export PS1="e[32;40mw> e[0m" 这个定义将显示一个漂亮的绿色提示行,但我们仍需要做一些扫尾工作。我们不需要包括
源代码网推荐  "40" 这个背景颜色设置,因为它将背景设置为黑色,而黑色是默认颜色。此外,绿色还很暗;
源代码网推荐  我们通过添加一个 "1" 颜色代码来修正这个问题,这将启用更亮的加粗文字。 除了这个修改
源代码网推荐  之外,我们还需要将全部非打印字符用专用的 bash 转义序列 "[" 和 "]" 括起来。这两个序列通知 bash,被括起来的字符不占用行上的任何空间, 这样就使自动换行能够继续正常工 作。没有这两个转义序列,尽管您有了一个非常漂亮的提示行,但是如果您键入的命令恰好到 达终端的最右端,就会造成显示混乱。下面是我们最终的提示行:
源代码网推荐  export PS1="[e[32;1m]w> [e[0m]"
源代码网推荐  别担心在同一个提示行中使用几种颜色,就像下面这样:
源代码网推荐  export PS1="[e[36;1m]u@[e[32;1m]H> [e[0m]"
源代码网推荐  Xterm 中的乐趣
源代码网推荐  我已说明了如何在提示行中添加信息和颜色,但您还可以更进一步。您可以通过在提示行中添加专用代码来使 X 终端(如 rxvt 或 aterm)的标题栏得到动态更新。 您所要做的只是
源代码网推荐  将下面的序列添加到您的 PS1 提示行中:
源代码网推荐  "e]2;titlebara"
源代码网推荐  只须用您希望其出现在 xterm 标题栏中的文字替换子串 "titlebar" 即可, 现在已经一 切就绪了!不必使用静态文字;您可以将 bash 转义序列插入标题栏中。请查看下面这个示例,它将用户名、主机名和当前工作目录显示在标题栏中,并定义了一个简短、明亮的绿色提示行:
源代码网推荐  export PS1="[e]2;u@H wae[32;1m]>[e[0m] "
源代码网推荐  这就是我在上面的抓屏结果中所用的那个提示行。我喜欢这个提示行,因为它将全部信息显示在标题栏上,而不是显示在终端上,终端对一行可以显示多少字符有限制。顺便提一句,
源代码网推荐  确保用 "[" 和 "]" 将您的标题栏序列括起来(因为就终端而言,这个序列是非打印序列)。
源代码网推荐  将大量信息放在标题栏中的问题是,如果您使用非图形终端(如系统控制台),则看不到这些
源代码网推荐  信息。为了解决这个问题,可以在您的 .bashrc 中添加以下几行:
源代码网推荐  if [ "$TERM" = "linux" ]
源代码网推荐  then
源代码网推荐  #we"re on the system console or maybe telnetting in
源代码网推荐  export PS1="[e[32;1m]u@H > [e[0m]"
源代码网推荐  else
源代码网推荐  #we"re not on the console, assume an xterm
源代码网推荐  export PS1="[e]2;u@H wae[32;1m]>[e[0m] "
源代码网推荐  fi
源代码网推荐  这个 bash 条件语句将根据当前的终端设置动态设置提示行。为了获得一致性,您一定希
源代码网推荐  望配置您的 ~/.bash_profile,以便它在启动时搜索 (source) 您的 ~/.bashrc。确保您的
源代码网推荐  ~/.bash_profile 文件中有以下这样一行:
源代码网推荐  source ~/.bashrc
源代码网推荐  这样,无论您开启一个登录 shell 还是一个非登录 shell,都会获得同样的提示行。
源代码网推荐  好了,您已掌握了提示行魔术。现在尽情享受一下,制作一个漂亮的彩色提示行吧!
源代码网推荐  参考资源
源代码网推荐  * rxvt 是一款既好又小的 xterm,它恰好有大量关于转义序列的文档资料, 这些资料都
源代码网推荐  集中在源代码 tar 包中的 "doc" 目录下。
源代码网推荐  * aterm 是基于 rxvt 的另一款终端程序。它支持几种很好的可视化特性,如透明和着色。
源代码网推荐  * bashish 是适用于各种终端的一种主题引擎。请查看工作中的 bashish 的一些很好的
源代码网推荐  抓屏结果!
源代码网推荐  作者简介
源代码网推荐  Daniel Robbins 住在新墨西哥州的 Albuquerque,他是 Gentoo Technologies 公司的总
源代码网推荐  载兼首席执行官,他还是 Gentoo Linux(一种运行于个人计算机上的高级 Linux)和
源代码网推荐  Portage 系统(Linux 的下一代端口系统)的创作者。他同时也是 Macmillan 出版的
源代码网推荐  Caldera OpenLinux Unleashed、SuSE Linux Unleashed 和 Samba Unleashed 几本书的重要
源代码网推荐  作者之一。由于深受 Pan Man 的影响,Daniel 在读二年级时第一次接解到 Logo 编程语言后
源代码网推荐  即执迷于计算机。这可能是他后来作为 SONY El
源代码网推荐
源代码网推荐
源代码网推荐
源代码网推荐
源代码网供稿.
网友评论 (0)
会员中心
服务器类
本站推荐
服务器类之精华