PS1='[/[/033[01;32m/]/h:/[/033[01;34m/]/W/[/033[00m/]]/$'

简单解释一下:
将里面有用的信息题出来就是:
PS1='[/h:/W]/$'
/h显示当前主机名称
/W显示当前目录
/$提示符
[]为了美观

显示结果如下:
[taoyue:~]$

其他部分就是添加颜色
/[/033[01;32m/]:主机名称显示绿色
/[/033[01;34m/]:当前目录显示蓝色
/[/033[00m/]:将后面的颜色设为默认

其他部分是颜色设置:
\[\033[01;32m\]:主机名称显示绿色
\[\033[01;34m\]:当前目录显示蓝色
\[\033[00m\]:将后面的颜色设为默认

添加颜色相当容易,第一步是设计不带颜色的提示行;然后,我们所要做的只是添加终端(而不是 bash)可识别的专用转义序列,以使它以彩色显示文本的某些部分。标准 Linux 终端和 X 终端允许您设置前景(文字)颜色和背景颜色,如果需要,还可以启用 "bold" 字符。有八种颜色可供我们选择。颜色是通过在 PS1 中添加专用序列来选择的──基本上是夹在 "\e["(转义开方括号)和 "m" 之间数字值。如果指定一个以上的数字代码,则用分号将它们分开。下面是一个颜色代码示例:"\e[0m"

如果将数字代码指定为零,则它就会通知终端将前景、背景和加粗设置重置为它们的默认值。您可能会在提示行结束时使用这个代码,以使您键入的文字成为非彩色的。现在,让我们看一下这些颜色代码。

要使用这个表,首先请查找您要使用的颜色,然后查找对应的前景编号 (30-37) 和背景编号 (40-47)。例如,如果您喜欢黑底绿字,则可将编号分别设为 32 和 40。然后打开您的提示行定义并在其中添加适当的颜色代码。下面的定义:

export PS1="\e[32;40m\w> "

我的设置 vim .bashrc 添加

PS1='[\u@\h:\[\033[01;32m\]\W\[\033[00m\]]\$'
export PS1

效果是   [yueshen@CNPC124-HZ:~]$
====================================

下面是我找到的最为全面的提示符说明:

如果您很容易使 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 响铃字符(也可以键入 /007)
/d "Wed Sep 06" 格式的日期
/e ASCII 转义字符(也可以键入 /033)
/h 主机名的第一部分(如 "mybox")
/H 主机的全称(如 "mybox.mydomain.com")
/j 在此 shell 中通过按 ^Z 挂起的进程数
/l 此 shell 的终端设备名(如 "ttyp4")
/n 换行符
/r 回车符
/s shell 的名称(如 "bash")
/t 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(用零代替未使用的数字,如 "/007")表示的 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;40m/w> "

到现在为止,提示行尽管已经很不错了,但仍不太完美。在 bash 显示出工作目录以后,我们需要使用 "/e[0m" 序列将颜色重新设置为正常值。

export PS1="/e[32;40m/w> /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;titlebar/a"

只须用您希望其出现在 xterm 标题栏中的文字替换子串 "titlebar" 即可,现在已经一切就绪了!不必使用静态文字;您可以将 bash 转义序列插入标题栏中。请查看下面这个示例,它将用户名、主机名和当前工作目录显示在标题栏中,并定义了一个简短、明亮的绿色提示行:

export PS1="/[/e]2;/u@/H /w/a/e[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 /w/a/e[32;1m/]>/[/e[0m/] "
fi

这个 bash 条件语句将根据当前的终端设置动态设置提示行。为了获得一致性,您一定希望配置您的 ~/.bash_profile,以便它在启动时搜索 (source) 您的 ~/.bashrc。确保您的 ~/.bash_profile 文件中有以下这样一行:

source ~/.bashrc

这样,无论您开启一个登录 shell 还是一个非登录 shell,都会获得同样的提示行。
好了,您已掌握了提示行魔术。现在尽情享受一下,制作一个漂亮的彩色提示行吧

作者:
Daniel Robbins
Gentoo Technologies 公司总载兼首席执行官

====================================
令一篇关于PS1的说明

bash 有两级用户提示符。第一级是你经常看到的 bash 在等待命令输入
时的提示符。缺省的一级提示符是字符$(如果是超级用户,则是#号)。
你可以通过改变bash 的PS1变量的值来改变你的缺省提示符,例如:
PS1="Please enter a command"
把bash shell 的提示符该为指定的字符串。

当bash 期待输入更多的信息以完成命令时显示第二级提示符。缺省的第
二级提示符是 >。 果你要改变第二级提示符,可以通过设置PS2变量的
值来实现:
PS2="I need more information"
另外你还可以用特殊的字符来定义你的提示符,下面的列表列出了最常
用的特殊字符。
提示符特殊字符代码
字符 含义
/! 显示该命令的历史记录编号。
/# 显示当前命令的命令编号。

/$ 显示$符作为提示符,如果用户是root的话,则显示#号。
// 显示反斜杠。

/d 显示当前日期。

/h 显示主机名。

/n 打印新行。
/nnn 显示nnn的八进制值。

/s 显示当前运行的shell的名字。
/t 显示当前时间。
/u 显示当前用户的用户名。
/W 显示当前工作目录的名字。
/w 显示当前工作目录的路径。

这些特殊字符能组合成很多种有用的提示符方案(也可以组合为很奇异
的方案),例如把 PS1 设为:
PS1="/t"
这导致提示符显示当前的时间,就象下面的显示一样(提示符后面将不
会有空格):
02:16:15

而下面的设置:
PS1=/t
将导致提示符变成下面的样子:
t
这显示了设置中引号的重要性,下面的提示符串:
PS1="/t// "
会使提示符看起来象这个样子:
02:16:30/
这种情况下,提示符后面会有一个空格,因为引号里有一个空格。

转载于:https://my.oschina.net/alphajay/blog/34791

更改Linux Shell的提示符相关推荐

  1. linux+用户的shell,linux更换用户_更改linux用户登录shell的方法

    摘要 腾兴网为您分享:更改linux用户登录shell的方法,幸福钱庄,小学英语,我和你,万科物业等软件知识,以及光大app,视频解码包,dns修改软件,天天小说阅读器,微信跳一跳,企业管家,蚂蚁邦, ...

  2. linux sed名宁,Linux shell利用sed批量更改文件名的方法

    微子网络与大家分享了在Linux shell中使用sed批量更改文件名的方法.希望你看完这篇文章有所收获.大家一起讨论一下. 示例 去除特定字符 目标:把2017-01-01.jpg和2018-01- ...

  3. linux shell 提示符设置

    机器多了以后发现经常ssh,最后已经不知道自己操作的是哪台了,所以对shell的提示符做了一些设置: 我的设置是这样的: 在.bashrc 中设置PS1变量: export PS1="[\u ...

  4. Linux Shell 编程学习总结

    Shell 教程 Shell简介:什么是Shell,Shell命令的两种执行方式 Shell本身是一个用C语言编写的程序,它是用户使用Unix/Linux的桥梁,用户的大部分工作都是通过Shell完成 ...

  5. linux shell zsh,Linux终极shell Z Shell 用强大的zsh oh-my-zsh把Bash换掉

    Bash确实是不错的Shell,但仍有用不少不尽人意的地方,如自动补全的功能不够强大,定位较长路径不够方便,命令历史管理不够完善等.javascript 介绍使用zsh,功能十分强大-推荐给你们!ja ...

  6. 更改Linux系统的Hostname的四种方式

    更改Linux系统的Hostname的四种方式 通常我们会在安装过程中设置系统的主机名 hostname.许多人不关心这一点,并且不更改主机名,即使例如安装系统的数据中心设置为非常愚蠢的东西(很可能他 ...

  7. Linux shell内核使用

    第一部分 一.在使用tput前,需要在脚本或命令行中使用tput命令初始化终端. $ tput init tput产生三种不同的输出:字符型.数字型和布尔型(真/假). /字符串输出/ 常用字符串: ...

  8. linux shell变量的,linux shell变量解析

    摘要 腾兴网为您分享:linux shell变量解析,智影,智联招聘,智慧消防,音恋等软件知识,以及考拉fm电台,快快游戏,京东企业购app,pdf加密工具,高德导航3d版,电脑驱动,兰溪新闻,我爱网 ...

  9. Linux Shell 编程基础详解——吐血整理,墙裂推荐!

    第一部分:Linux Shell 简介 Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁.Shell 既是一种命令语言,又是一种程序设计语言. Shell 是指一种应用程序, ...

  10. Linux常用命令(本篇包括,Linux目录结构介绍、Linux Shell介绍、9个常见命令介绍、文件的概念、文件的操作(20个)、目录的操作、文件和目录的权限、文件压缩及解压缩)

    Linux常用命令(本篇包括,Linux目录结构介绍.Linux Shell介绍.9个常见命令介绍.文件的概念.文件的操作(20个).目录的操作.文件和目录的权限.文件压缩及解压缩)         ...

最新文章

  1. 家装强电弱电布线图_强弱电布线注意事项,强弱电布线的4个讲究!
  2. python锁有哪几种_python 可重入锁有什么用?
  3. solr7.4 安装与使用
  4. dtoj#4263. duliu
  5. 罗永浩:锤子手机比索尼、夏普、微软、LG都好
  6. LeetCode:67. 二进制求和(python、c++)
  7. python项目开发实例-《Python项目案例开发从入门到实战》PDF版百度网盘
  8. C#中 构造函数的执行
  9. 电子签章助力水电气公共事业服务“一网通办”
  10. sepic电路MATLAB,cuk电路matlab仿真
  11. 【Java编程】写一个将华氏温度转换成摄氏温度的程序,转换的公式是:°F = (9/5)*°C + 32 其中C表示摄氏温度,F表示华氏温度。
  12. PHP电话号码 区号,中国城市电话区号对照表
  13. 华为开发者大会:Open API时代来临
  14. android SoundPool 音效播放
  15. iphone6 计算机无法检测到照相机,苹果iPhone XR摄像头黑屏不能照相是什么原因?...
  16. 快消行业营销难?巨量引擎让生意每一步明明白白
  17. 加入键盘鼠标控制的代码
  18. 小程序 | mpvue如何启动小程序和各个小程序的配置
  19. js截取字符串前几位或者截取字符串后几位
  20. win策略计算机配置,win10组策略优化,win7组策略优化设置软件

热门文章

  1. Solidworks常用技巧
  2. 用nunit时,老是搞忘英文,在这里记录一下,方便到处查阅
  3. logback-spring.xml文件配置
  4. ListView,GridView的getView多次调用问题
  5. C语言 链表 3个结点,一个关于C语言链表头结点的问题
  6. ELK filebeat和logstash使用:配置单个文件来源、配置多个文件来源
  7. PHP substr(),mb_substr(),mb_strcut()比较
  8. PHP中的单例模式(可用于数据库连接维护)
  9. 关于LINUX输入法候选框光标跟随的代码的一个网页
  10. 难以置信:某国产平台制定打包deb规范,竟然没有测试