自定义shell提示符

       喜欢玩Linux的人,一般都是一个爱折腾的人,哈哈~~好巧 我就是这么一个爱折腾的人。

       好了,那么接下来的要折腾点什么呢?

       走起。。。下面就开始走入正题:如何在Linux下自定义shell提示符。

介绍

        最初,所有的shell都是两个字符:一个字符后跟一个空格。Bourne shell使用一个$(美元字符),C-Shell使用一个%(百分比字符)。现在,这一传统仍然保持,因此,如果使用的shell是Bourne shell家族(Bash、Korn shell)中的一员,那么最简单的shell提示为:$ 

        当今的linux发行版中,使用最广泛的shell版本为即为Bourne shell家族的Bash,本文即将讨论的也是基于Bash的shell。

        使用命令 echo $0 或 echo $SHELL 可以查看你当前使用的是哪种shell。如果你使用的是Bash,那么你可以使用 bash --version 来查看你的Bash版本。

环境

        Ubuntu 16.04.3 LTS 64位  (Linux version 4.4.0-97-generic)

        使用命令:hostnamectl,可以查看当前主机的信息。

shell提示符的修改

        Linux中,shell提示符是由一个环境变量定义的。对于Bourne shell家族来说,这个环境变量叫做PS1,我们可以通过 echo 命令来查看 PS1的内容。如:

[14:48:33 root@noseeHost ~]$ echo $PS1

\[\033[0;32m\][\t \u\[\033[0;33m\]@\H \w]$ \[\033[0m\]

        上面输出的那个PS1值是我自己设置的,很多看不懂的乱七八糟的数字、还有一些特殊的字符?不必担心,看完这篇文章你就会懂了。

        试试修改一个简单的提示符,包含主机名和当天时间的信息:

[14:59 root@noseeHost ~]$ PS1="\A \h \$ "

15:00 noseeHost $

        可以看到命令行的提示符变成了 “15:00 noseeHost $ ”。是的,就是这么简单,通过修改环境变量PS1的值,可以实时的改变你的Shell提示符。但是,很快你就会发现,当你下次再登录上你的主机,或者当你重启你的主机后,Shell提示符又变回原来的默认样子了。

        这是因为系统在每次启动的时候,都会去读取一个默认的配置文件,如果你想要你的设置永久生效,那你就需要去直接修改这个文件。

        不同系统的这个配置文件可以会放在不同和位置和可能是不同的名字,一般是用户主目录下的.bashrc文件。为了达到目的,把下面两行代码添加到.bashrc文件中即可。

PS1='\[\033[s\033[0;0H\033[0;41m\033[K\033[1;33m\t\033[0m\033[u\]<\u@\h \W>\$ '

export PS1

        呃,说了这么多,好像还没说清楚那一个个特殊字符串和数字怎么回事。为了方便概括,下面就用一个稍微复杂一点的一个提示符来做解剖。

解剖一个提示符

        首先,设置PS1的值为:

PS1="\[\033[0;32m\][\A \u\[\033[0;33m\]@\H \w]$ \[\033[0m\]"

        这时你看到的结果如下:

        1、\[\033[0;32m\]是用于设置文本的颜色,这是一个非打印字符序列(就是它是不会显示在你的提示符上面,但是会产生一些特殊的效果,如颜色变化)。你看到的 “[15:19 root” 显示为绿色就是因为它的作用。

              还有后面的[\033[0;33m\]和\[\033[0m\]都是非打印字符序列。

        2、\A 和 \u 都是转义字符,其中\A表示一个24小时制的一个时间表示,\u表示当前登录的用户名。

        3、$,这会显示一个"$"字符,除非你拥有超级用户权限。在那种情况下, 它会显示一个"#"字符。

上面只是通过举个例子,来加强你对提示符变量PS1的理解。想要更加深刻的理解shell的每个提示符的含义一定要自己亲自动手,多去尝试。下面将会列出几个附表,一些常用的转义字符都可以在这里查看。

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

附表1: Shell 提示符中用到的转义字符

附表2: 用转义序列来设置文本颜色

附表3: 用转义序列来设置背景颜色

注意:除了正常的 (0) 和黑体 (1) 字符属性之外,文本也可以具有下划线 (4),闪烁 (5), 和反向 (7) 属性。为了拥有好品味,然而,许多终端仿真器拒绝使用这个闪烁属性。

附表4: 光标移动转义序列

        转义编码也可以用来定位光标。这些编码被普遍地用来,每次当提示符出现的时候,会在屏幕的不同位置 比如说上面一个角落,显示一个时钟或者其它一些信息。这里是一系列用来定位光标的转义编码:

        使用上面的编码,我们将构建一个提示符,每次当这个提示符出现的时候,会在屏幕的上方画出一个 包含时钟(由黄色文本渲染)的红色长条。提示符的编码就是这个看起来令人敬畏的字符串:

PS1='\[\033[s\033[0;0H\033[0;41m\033[K\033[1;33m\t\033[0m\033[u\]<\u@\h \W>\$ '

        哈哈,这个很有趣。

参考文献

《The Linux Command Line》William E. Shotts, Jr. —— 14 – Customizing The Prompt

《Unix&Linux大学教程》Harley Hahn —— 13.9 and 13.10








最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342

推荐阅读更多精彩内容

  • 文本终端的颜色可以使用“ANSI非常规字符序列”来生成。举例: 以上命令设置背景成为蓝色,前景白色,闪烁光标,输出...
    jerehao阅读 605评论 0 0
  • 缘起 在本地环境( iTerm2 + zsh) 使用终端工具操作 Git 时, 能够显示"当前文件夹名称"以及" ...
    patiencing阅读 15,814评论 2 9
  • 概述 首先,咱们来了解一下,什么是Shell。操作系统内核给我们提供了各种接口,同时也提供了各种用户层的库,理论上...
    keysaim阅读 1,346评论 0 0
  • 第二十五章 老太太 “你继续下门店去吧。”杨如刚开始了单方面的报复性活动,这句话刚刚说完就做贼心虚的撂下了电话,...
    chief风阅读 453评论 0 1
  • 阿弥陀佛 念想,是要有的。 次第,从一开始就已有了要求。 要“素”,不是戒律,是梦想。 抱朴。原始。真如。念头,从...
    佛聖居士阅读 408评论 0 0