@
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 | 唤醒之前存储的光标位置 |
写在哈佛墙上的七句话
- 我颓废的今日,正是昨天殒身之人祈求的明天;
- 请享受无法回避的痛苦;
- 觉得自己为时已晚的时候,恰恰是最早的时候;
- 谁也不可能轻易成功,它来自彻底的自我管理能力和毅力;
- 现在流的口水,将成为明天的眼泪;
- 今天不走,明天要跑;
- 即使此刻,对手也在不停的翻动书页。