@

Linux系统终端提示符的特征由系统环境变量 PS1(Prompt String One)定义。

我们可以通过命令echo $PS1来查看当前设置,如下图:

同样,我们可以通过修改PS1的值来改变终端提示信息:

但这只是临时的修改了,当我们打开新的终端窗口时,提示符又恢复到默认的了。
.
如果希望修改永久生效,我们可以通过更改~/.bashrc文件,如下图:

保存退出后在终端执行. .bashrc刷新,便可看到永久版的终端提示符。
好了,打开新的终端窗去看看吧。
***

基本转义符

Shells提示符中用到的转义字符

序列 显示值
\a 以ASCII格式编码的铃声,当遇到这个转移序列时,计算机会发出嗡嗡的响声
\d 以日,月,天格式来表示当前日期。例如,"Mon May 26"
\h 本地机的主机名,但不带末尾的域名
\H 完整的主机名
\j 运行在当前shell会话中的工作数
\l 当前终端设备名
\n 一个换行符
\r 一个回车符
\s shell程序名
\t 以24小时制,hours:minutes:seconds的格式表示当前时间
\T 以12小时制表示当前时间
\@ 以12小时制,AM/PM格式来表示当前时间,例如"10:51 PM"
\A 以24小时制,hours:minutes 格式表示当前时间
\u 当前用户名
\v shell 程序的版本号,例如4.3
\V shell 程序的详细版本号,例如4.3.11
\w 当前工作目录名
\W 当前工作目录名的最后部分
\! 当前命令的历史号
\# 当前 shell 会话中的命令数
\$ 这会显示一个"$"字符,除非你拥有超级用户权限。在那种情况下, 它会显示一个"#"字符
\[ 标志着一系列一个或多个非打印字符的开始。这被用来嵌入非打印的控制字符,这些字符以某种方式来操作终端仿真器,比方说移动光标或者是更改文本颜色
\] 标志着非打印字符序列结束

示例

使用转移符\A,将终端提示符修改为显示当前时间,如下图:

***

字体颜色

字体颜色是由ANSI转义编码来控制的,该控制编码会嵌入字符流中并发送给终端仿真器。

但是,该控制编码不会被"打印"到终端上,而是会被终端解释为一个指令。正如我们上面看到的字符序列最下面的两个\[和\],就是用来封装这些非打印字符的。

一个ANSI转义编码以一个八进制033(这个编码是由退出按键产生的)开头,其后跟着一个可选的字符属性(0:正常、1:黑体、4:下划线、5:闪烁、7:反向(前景色和背景色反转)),再之后是一个指令。

序列 文本颜色 序列 文本颜色
\033[0;30m 黑色 \033[1;30m 黑体黑色
\033[0;31m 红色 \033[1;31m 黑体红色
\033[0;32m 绿色 \033[1;32m 黑体绿色
\033[0;33m 棕色 \033[1;33m 黑体棕色
\033[0;34m 蓝色 \033[1;34m 黑体蓝色
\033[0;35m 粉红 \033[1;35m 黑体粉色
\033[0;36m 青色 \033[1;36m 黑体青色
\033[0;37m 浅灰色 \033[1;37m 黑体浅灰色

示例

更改终端提示符颜色为黑体蓝色,如下图:

后面的\033[00m是用于将后续的字符颜色还原回原来的颜色。
如果没有写这个转义码,将会导致输入的命令颜色也会改变。
所以,我们还可以这样玩:

看到了吧,命令和输出信息的颜色也一同改变了。
***

背景颜色

除了字体颜色,我们还可以设置字体的背景颜色。同样是通过转义的控制编码来实现,下表是背景颜色的控制编码。

序列 背景颜色 序列 背景颜色
\033[0;40m 黑色 \033[1;44m 蓝色
\033[0;41m 红色 \033[1;45m 粉红
\033[0;42m 绿色 \033[1;46m 青色
\033[0;43m 棕色 \033[1;47m 浅灰色

移动光标

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

转义码 行动
\033[l;cH 把光标移到第 l 行,第 c 列
\033[nA 把光标向上移动 n 行
\033[nB 把光标向下移动 n 行
\033[nC 把光标向前移动 n 个字符
\033[nD 把光标向后移动 n 个字符
\033[2 清空屏幕,把光标移到左上角(第零行,第零列)
\033[K 清空从光标位置到当前行末的内容
\033[s 存储当前光标位置
\033[u 唤醒之前存储的光标位置


写在哈佛墙上的七句话

  1. 我颓废的今日,正是昨天殒身之人祈求的明天;
  2. 请享受无法回避的痛苦;
  3. 觉得自己为时已晚的时候,恰恰是最早的时候;
  4. 谁也不可能轻易成功,它来自彻底的自我管理能力和毅力;
  5. 现在流的口水,将成为明天的眼泪;
  6. 今天不走,明天要跑;
  7. 即使此刻,对手也在不停的翻动书页。

【Linux下自定义Shell终端提示符】的更多相关文章

  1. Linux学习——自定义shell终端提示符

    转自:here 我使用的Linux发行版是LinuxMint 17.2 Rafaela,默认情况下Terminal中的shell提示包括了用户名.主机名.当前目录(绝对路径)和提示符.这样会导致当进入 ...

  2. #Linux学习笔记# 自定义shell终端提示符

    我使用的Linux发行版是LinuxMint 17.2 Rafaela,默认情况下Terminal中的shell提示包括了用户名.主机名.当前目录(绝对路径)和提示符.这样会导致当进入一个比较深的目录 ...

  3. 自定义shell终端提示符及颜色即修改 PS1文件 (以Centos为例)

    Linux修改Shell命令提示符及颜色 1. Linux登录过程中加载配置文件顺序: /etc/profile → /etc/profile.d/*.sh → ~/.bash_profile → ~ ...

  4. Linux下修改环境终端提示符

    Linux修改环境变量PS1(命令行提示符),可以使用vi编辑/etc/bashrc或/etc/profile文件,在最后加上: export PS1='[\u@\h \W]\$ ' 即可,其中\u显 ...

  5. Linux下使Shell 命令脱离终端在后台运行

    --Linux下使Shell 命令脱离终端在后台运行------------------------------------2014/02/14你是否遇到过这样的情况:从终端软件登录远程的Linux主 ...

  6. Linux下的shell与make

    Linux下的shell与make 一.shell 1.1 什么是shell ● 用户与Linux的接口 ● 命令解释器 ● 支持多用户 ● 支持复杂的编程语言 ● Shell有很多种,如:csh,t ...

  7. Linux下的Shell工作原理

    Linux下的Shell工作原理 Linux系统提供给用户的最重要的系统程序是Shell命令语言解释程序.它不属于内核部分,而是在核心之外,以用户态方式运行.其基本功能是解释并执行用户打入的各种命令, ...

  8. linux下的shell运算(加、减、乘、除)

    linux下的shell运算(加.减.乘.除) 标签: linuxshell运算加减乘除 2014-03-12 16:25 15127人阅读 评论(0) 收藏 举报 分类: linux(17) ((i ...

  9. linux下的shell操作mysql

    (1)MySQL的启动 重启了一次服务器后,使用> mysql -u root -p登陆是出现下面的错误: ERROR 2002 (HY000): Can't connect to local ...

随机推荐

  1. 对jvm进行gc的时间、数量、jvm停顿时间的监控

    在jdk中一个类可以获得gc的信息: public static void main(String[] args) { List<GarbageCollectorMXBean> garba ...

  2. Activity生命周期的运行流程

    Activity的生命周期运行流程:  ·当Activity第1次被启动:     ·onCreate()->onStart()->onResume()  ·当Activity被遮挡后再次 ...

  3. c++_benchMark_vector_list_deque

    title: c++_benchMark_vector_list_deque date: 2015-08-01 22:32:39 作者:titer1 + ZhangYu 出处:www.drysalte ...

  4. nginx和apache作为webserver的差别

    1.两者所用的驱动模式不同. nginx使用的是epoll的非堵塞模式事件驱动. apache使用的是select的堵塞模式事件驱动. 2.fastcgi和cgi的差别 当用户请求web服务的时候.w ...

  5. POJ 2570 Fiber Network(最短路 二进制处理)

    题目翻译 一些公司决定搭建一个更快的网络.称为"光纤网". 他们已经在全世界建立了很多网站.这 些网站的作用类似于路由器.不幸的是,这些公司在关于网站之间的接线问题上存在争论,这样 ...

  6. Android中的跨进程通信方法实例及特点分析(一):AIDL Service

    转载请注明出处:http://blog.csdn.net/bettarwang/article/details/40947481 近期有一个需求就是往程序中增加大数据的採集点,可是由于我们的Andro ...

  7. glm编译错误问题解决 formal parameter with __declspec(align(&#39;16&#39;)) won&#39;t be aligned

    參考:http://stackoverflow.com/questions/25300116/directxxmmatrix-error-c2719-declspecalign16-wont-be-a ...

  8. 4、python序列对比

    1.列表:[ ],杂(什么都可以放进去),有序,可变 2.元组:(),有序,不可变 3.字典:{ },键值对,无序,可变 4.集合:{ },不可重复,无序,可变

  9. mysql-基础和基本指令

    基础: 1.数据库模式:简单的说:就是一个数据库用户所拥有的数据库的对象.   比如scott用户建立了表,索引,视图,存储过程等对象,那么这些对象就构成了schema   scott .有时用作数据 ...

  10. nginx 代理https后,应用redirect https变成http --转

    原文地址:http://blog.sina.com.cn/s/blog_56d8ea900101hlhv.html 情况说明nginx配置https,tomcat正常http接受nginx转发.ngi ...