快捷搜索:  as  2018  FtCWSyGV  С˵  test  xxx  Ψһ  w3viyKQx

澳门新葡亰游戏881_龟发之家论坛



假如您很轻易使 shell 提示行变得色彩鲜丽斓且带有更多信息, 为什么还要坚持用单调的标准 shell 提示行呢?在这篇技术中,Daniel Robbins 将阐明若何得到相符您的意愿的shell 提示行,并会阐明若何动态更新 X 终真个标题栏。

作为 Linux/UNIX 人,我们有很长的光阴是在 shell 澳门新葡亰游戏881中事情,并且在许多环境下, 下面这一行便是始终盯着我们的那个提示行:

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 当前事情目录的“基名 (bas澳门新葡亰游戏881ename)”(如 "drobbins")

! 当前敕令在历史缓冲区中的位置

# 敕令编号(只要您键入内容,它就会在每次提示时累加)

$ 假如您不是超级用户 (root),则插入一个 "$";

假如您是超级用户,则显示一个 "#"

xxx 插入一个用三位数 xxx(用零代替未应用的数字,

如 "07")表示的 ASCII 字符

\ 反斜杠

[ 这个序列应该呈现在不移动光标的字符序列(如颜色转义序列)之前。

它使 bash 能够精确谋略自动换行。

] 这个序列应该呈现在非打印字符序列之后。

这个定义将显示一个漂亮的绿色提示行,但我们仍必要做一些收尾事情。我们不必要包括"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 中的乐趣

我已阐清楚明了若何在提示行中添加信息和颜色,但您还可以更进一步。您可以经由过程澳门新葡亰游戏881在提示行中添加专用代码来使 X 终端(如 rxvt 或 aterm)的标题栏获得动态更新。 您所要做的只是将下面的序列添加到您的 PS1 提示行中:

"e]2;titlebara"

只须用您盼望其呈现在 xterm 标题栏中的翰墨调换子串 "titlebar" 即可, 现在已经统统就绪了!不必应用静态翰墨;您可以将 bash 转义序列插入标题栏中。请查看下面这个示例,它将用户名、主机名和当前事情目录显示在标题栏中,并定义了一个简短、豁亮的绿色提示行:

export PS1="[e]2;u@H wae[32;1m]>[e[0m] "

这便是我在上面的抓屏结果中所用的那个提示行。我爱好这个提示行,由于它将整个信息显示在标题栏上,而不是显示在终端上,终端对一行可以显示若干字符有限定。顺便提一句,确保用 "[" 和 "]" 将您的标题栏序列括起来(由于就终端而言,这个序列长短打印序列)。将大年夜量信息放在标题栏中的问题是,假如您应用非图形终端(如系统节制台),则看不到这些信息。为了办理这个问题,可以在您的 .bashrc 中添加以下澳门新葡亰游戏881几行:

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 的另一款终端法度榜样。澳门新葡亰游戏881它支持几种很好的可视化特点,如透明和着色。

* bashish 是适用于各类终真个一种主题引擎。请查看事情中的 bashish 的一些很好的抓屏结果!

您可能还会对下面的文章感兴趣: