Linux|Linux 下PS1 PS2 PS3 PS4 提示符详解
很多人在用Linux时,对提示符都不太注重,能够利用好提示符可更直观地查看,利于自己的判断
Linux下有PS1 PS2 PS3 PS4 四类提示符,这四个变量都是环境变量,至于系统里有哪些环境变量,可使用命令 “env”来查看
PS1命令提示符
PS1有那些配置,或者说PS1里头都能配置些命令提示符的什么东西:
\d :代表日期,格式为weekday month date,例如:"Mon Aug 1"
\H :完整的主机名称。例如:我的机器名称为:fc4.linux,则这个名称就是fc4.linux
\h :仅取主机的第一个名字,如上例,则为fc4,.linux则被省略
\t :显示时间为24小时格式,如:HH:MM:SS
\T :显示时间为12小时格式
\A :显示时间为24小时格式:HH:MM
\u :当前用户的账号名称
\v :BASH的版本信息
\w :完整的工作目录名称。家目录会以 ~代替
\W :利用basename取得工作目录名称,所以只会列出最后一个目录
\# :下达的第几个命令
\$ :提示字符,如果是root时,提示符为:# ,普通用户则为:$
PS1中设置字符序列颜色的格式为:\[\e[F;
Bm\]其中“F”为字体颜色,编号30~37;“B”为背景色,编号40~47。 不过呢,能设置颜色,他就肯定能够取消设置,注意:这里的取消设置,和不设置是两吗事情!取消设置:\[\e[m\]
颜色表
前景背景颜色
3040黑色
3141红色
3242绿色
3343×××
3444蓝色
3545紫红色
3646青蓝色
3747白色
没有人傻乎乎的设置为白色吧.....
代码意义
0OFF
1高亮显示
4underline
7反白显示
8不可见
[\[\e[32m\]#\##\[\e[31m\]\u@\[\e[36m\]\h \w]\$\[\e[m\]
这是我的配置
现在来看\[\e[32m\],注意:最前面的那个方括号不是用在这里的。这不就说名了要设置为绿色么,来看看我的命令提示符:[#4#caopeng@cp ~]$ 有绿色的吧。
然后#\##就是显示现在运行的是第几条命令了,看到了吧。我这里是第四条。
下来又是一个设置颜色的[\e[31m\],是设置为红色吧,这不也有红色么。[#4#caopeng@cp ~]$。呵呵
下来就是\u@这是嘛意思?自己差表看去,然后不又是一个设在颜色的么(这里显示的不怎么好),
\h\w 是什么意思?\h 是说:仅取主机的第一个名字,\w是说:显示完整的路径,但是不知到为什么家他显示~而不是绝对路径。
在下来不是一个]么 。开头不有一个[么。这两个刚好搭配在一起的。
然后最的这个\[\e[m\]使用来关闭颜色设置的。要是你没有这个的话;那么,你的命令提示符,包括你通过命令提示符输出的东西都是和最后一次的颜色设置相同(除了一些有特殊意义的文件)。
在用户的根目录下的 ".bashrc"注意前面有个"."表示是隐藏的。
在里头的最后一行加上:
PS1='[\[\e[32m\]#\##\[\e[31m\]\u@\[\e[36m\]\h \w]\$\[\e[m\]'
然后保存。然后 source.bashrc
PS2——再谈提示符
一个非常长的命令可以通过在末尾加“\”使其分行显示。多行命令的默认提示符是“>”。 我们可以通过修改PS2 ,将提示符修改为"continue->" 。
ramesh@dev-db ~> myisamchk --silent --force --fast --update-state \
> --key_buffer_size=512M --sort_buffer_size=512M \
> --read_buffer_size=4M --write_buffer_size=4M \
> /var/lib/mysql/bugs/*.MYI
[注: 这里使用 ">" 作为默认提示符]
ramesh@dev-db ~> export PS2="continue-> "
ramesh@dev-db ~> myisamchk --silent --force --fast --update-state \
continue-> --key_buffer_size=512M --sort_buffer_size=512M \
continue-> --read_buffer_size=4M --write_buffer_size=4M \
continue-> /var/lib/mysql/bugs/*.MYI
[注: 与上面类似,用 "continue-> " 作提示符]
当用“\”使长命令分行显示,我发现非常易读。当然我也见过有的人不喜欢分行显示命令
3、PS3——Shell脚本中使用select时的提示符
你可以像下面示范的那样,用环境变量PS3定制shell脚本的select提示:
不使用PS3的脚本输出:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
ramesh@dev-db ~> cat ps3.sh select i in mon tue wed exit do case $i in mon) echo "Monday"; ; tue) echo "Tuesday"; ; wed) echo "Wednesday"; ; exit) exit; ; esac done ramesh@dev-db ~> ./ps3.sh 1) mon 2) tue 3) wed 4) exit #? 1 Monday #? 4 |
使用PS3的脚本输出:
1 2 3 4 5 6 7 8 9 【Linux|Linux 下PS1 PS2 PS3 PS4 提示符详解】10 11 12 13 14 15 16 17 18 19 20 |
ramesh@dev-db ~> cat ps3.sh PS3="Select a day (1-4): " select i in mon tue wed exit do case $i in mon) echo "Monday"; ; tue) echo "Tuesday"; ; wed) echo "Wednesday"; ; exit) exit; ; esac done ramesh@dev-db ~> ./ps3.sh 1) mon 2) tue 3) wed 4) exit Select a day (1-4): 1 Monday Select a day (1-4): 4 |
4、PS4——PS4-“set -x"用来修改跟踪输出的前缀
如果你像下面那样在调试模式下的脚本中,PS4环境变量可以定制提示信息:
没有设置PS4时的shell脚本输出:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
ramesh@dev-db ~> cat ps4.sh set –x echo "PS4 demo script" ls -l /etc/ | wc –l du -sh ~ ramesh@dev-db ~> ./ps4.sh ++ echo 'PS4 demo script' PS4 demo script ++ ls -l /etc/ ++ wc –l 243 ++ du -sh /home/ramesh 48K /home/ramesh |
设置PS4后的脚本输出:
PS4在ps.sh中定义了下面两个变量
o $0 显示当前的脚本名
o $LINENO 显示的当前的行号
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
ramesh@dev-db ~> cat ps4.sh export PS4='$0.$LINENO+ ' set -x echo "PS4 demo script" ls -l /etc/ | wc -l du -sh ~ ramesh@dev-db ~> ./ps4.sh ../ps4.sh.3+ echo 'PS4 demo script' PS4 demo script ../ps4.sh.4+ ls -l /etc/ ../ps4.sh.4+ wc -l 243 ../ps4.sh.5+ du -sh /home/ramesh 48K /home/ramesh |
转载于:https://blog.51cto.com/tenderness/1954367
推荐阅读
- 开学第一天(下)
- 【故障公告】周五下午的一次突发故障
- 生活随笔|好天气下的意外之喜
- MongoDB,Wondows下免安装版|MongoDB,Wondows下免安装版 (简化版操作)
- 汇讲-勇于突破
- Android中的AES加密-下
- 说的真好
- 放下心中的偶像包袱吧
- Linux下面如何查看tomcat已经使用多少线程
- 【1057快报】深入机关,走下田间,交通普法,共创文明