Linux bash学习;自定义shell终端提示符

** 终端提示符PS1的值由静态文本或和转义字符序列组成.
如:PS1="[\u@\h \w]$ "

1.基本转义字符

转义字符 含义 转义字符 含义
\a ASCII铃声。在遇到该转义字符时,计算机发出哔哔声
\d 当前日期,一星期、月、日的形式表示,如“Mon May 26”
\t 当前时间24小时制,格式为小时:分钟:秒 \T 当前时间12小时制
\@ 当前时间12小时制,格式为AM/PM格式来表示当前时间,例如“10:51 PM” \A 当前时间23小时制,格什温小时:分钟
\u 当前用户名
\v shell程序的版本号 \V sehll程序的版本号和发行号
\w 当前工作目录名 \W 当前工作目录名称的最后一部分
\h 本地机器的主机名,不带域名 \H 完整的主机名
\j 当前shell会话中进行的任务个数
\l 当前终端设备的名称
\n 换行符
\r 回车符
\s shell程序的名称
\! 当前命令的历史编号
\# 当前shell会话的输入的命令数
\$ 在非管理员权限下输出‘$‘符号,管理员权限输出‘#’
\[ 标志着一系列一个或多个非打印字符的开始。这被用来嵌入非打印的控制字符,这些字符以某种方式来操作终端仿真器,比方说移动光标或者是更改文本颜色。 \] 标志着非打印字符序列结束

2.控制文本颜色和光标移动

在PS1中使用要使用非打印字符开始和结束符号
通过ANSI转义的编码来控制
一个ANSI转义编码以一个八进制\033(该代码由转义键[escape key] 产生)开始,后面跟着可选的字符属性,之后是一条指令
bash \033 也支持\e <=> \033
格式\033[0;30m “\033开始 [ 开头 ;分隔(可使用多个数值,用分号隔开) m结尾”
十六进制 \x1b(可sed里面使用)

可选属性

数字 含义
0 正常
1 加粗
4 下划线
5 闪烁
7 反向(前景背景色反转)

前景色/字颜色 30~39
背景色/字背景颜色 40~49

使用脚本测试颜色

#!/bin/bash
#
#测试颜色
cl='\e[0m'
echo -e "\n前景色(字的颜色):\n"
for I in {0..9};do
 echo -e "色号(3${I}) 正常(0):\033[0;3${I}m A $cl 加粗(1):\033[1;3${I}m A $cl 前景背景颜色反转(7):\033[7;3${I}m A $cl"
done
echo -e "\n背景色(字的背景颜色):\n"
for I in {0..9};do
  echo -e "色号(4${I}) 正常(0):\033[0;4${I}m B $cl 加粗(1):\033[1;4${I}m B $cl 前景背景颜色反转(7):\033[7;4${I}m B $cl"
done

测试样本

Linux bash学习;自定义shell终端提示符_第1张图片

其它

\33[0m 关闭所有属性
\33[1m 设置高亮度
\33[4m 下划线
\33[5m 闪烁
\33[7m 反显
\33[8m 消隐
\33[30m – \33[37m 设置前景色
\33[40m – \33[47m 设置背景色
\33[nA 光标上移n行
\33[nB 光标下移n行
\33[nC 光标右移n行
\33[nD 光标左移n行
\33[y;xH 自定义光标移到第 y 行,第 x 列。
\33[2J 清屏
\33[K 清除从光标到行尾的内容
\33[s 存储当前光标位置
\33[u 恢复之前存储光标位置
\33[?25l 隐藏光标
\33[?25h 显示光标

3.应用脚本

临时:

PS1='\[\033[0;43m\][\u@\h] \[\033[0m\]\[\033[0;46m <\w> \[\033[0m\]\n[\d \@ bash-\v]\$ ' 

临时全局:export PS1
保存开机就有:将上面代码添加到~/.bashrc文件中或者~/.bash_profile文件中
查找.bashrc和.bash_profile文件

你可能感兴趣的:(Linux)