Linux shell命令提示符
作者 佚名技术
来源 Linux系统
浏览
发布时间 2012-04-07
容易;第一步是设计不带颜色的提示行.然后,我们所要做的只是添加终端(而不是 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 条件语句将根据当前的终端设置动态设置提示行.为了获得 |
||
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
上一篇: linux管理软件命令下一篇: linux系统Qt实现简单的任务管理器
关于Linux shell命令提示符的所有评论