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\]

颜色表

前景   背景   颜色

  30      40      黑色

  31      41      红色

  32      42      绿色

  33      43      黄色

  34      44      蓝色

  35      45      紫红色

  36      46      青蓝色

  37      47      白色

没有人傻乎乎的设置为白色吧.....

代码      意义

0            OFF

1            高亮显示

4            underline

7            反白显示

8            不可见

[\[\e[32m\]#\##\[\e[31m\]\[email protected]\[\e[36m\]\h \w]\$\[\e[m\]

这是我的配置

现在来看\[\e[32m\],注意:最前面的那个方括号不是用在这里的。这不就说名了要设置为绿色么,来看看我的命令提示符:[#4#[email protected]cp ~]$ 有绿色的吧。

然后#\##就是显示现在运行的是第几条命令了,看到了吧。我这里是第四条。

下来又是一个设置颜色的[\e[31m\],是设置为红色吧,这不也有红色么。[#4#[email protected]cp ~]$。呵呵

下来就是\[email protected]这是嘛意思?自己差表看去,然后不又是一个设在颜色的么(这里显示的不怎么好),

\h  \w 是什么意思?\h 是说:仅取主机的第一个名字,\w是说:显示完整的路径,但是不知到为什么家他显示~而不是绝对路径。

在下来不是一个   ]         么 。开头不有一个   [   么。这两个刚好搭配在一起的。

然后最的这个   \[\e[m\]   使用来关闭颜色设置的。要是你没有这个的话;那么,你的命令提示符,包括你通过命令提示符输出的东西都是和最后一次的颜色设置相同(除了一些有特殊意义的文件  )。

在用户的根目录下的 ".bashrc"   注意前面有个"."  表示是隐藏的。

在里头的最后一行加上:

PS1=‘[\[\e[32m\]#\##\[\e[31m\]\[email protected]\[\e[36m\]\h \w]\$\[\e[m\]‘

然后保存。然后 source  .bashrc

PS2——再谈提示符

一个非常长的命令可以通过在末尾加“\”使其分行显示。多行命令的默认提示符是“>”。 我们可以通过修改PS2 ,将提示符修改为"continue->" 。

[email protected] ~> 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
[注: 这里使用 ">" 作为默认提示符]
[email protected] ~> export PS2="continue-> " 
[email protected] ~> 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


[email protected] ~> 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

[email protected] ~> ./ps3.sh

1) mon

2) tue

3) wed

4) exit

#? 1

Monday

#? 4

[注: 缺省的提示符是 #?]

使用PS3的脚本输出:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20


[email protected] ~> 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

[email protected] ~> ./ps3.sh

1) mon

2) tue

3) wed

4) exit

Select a day (1-4): 1

Monday

Select a day (1-4): 4

[注: 设置了PS3变量后,命令提示符已经成为 "Select a day (1-4):"]

4、PS4——PS4-“set -x"用来修改跟踪输出的前缀

如果你像下面那样在调试模式下的脚本中,PS4环境变量可以定制提示信息:

没有设置PS4时的shell脚本输出:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15


[email protected] ~> cat ps4.sh

set –x

echo "PS4 demo script"

ls -l /etc/ | wc –l du -sh ~

[email protected] ~> ./ps4.sh

++ echo ‘PS4 demo script‘

PS4 demo script

++ ls -l /etc/

++ wc –l

243

++ du -sh /home/ramesh

48K /home/ramesh

[注: 当使用sex -x跟踪输出时的提示符为 ++]

设置PS4后的脚本输出:

PS4在ps.sh中定义了下面两个变量

o $0 显示当前的脚本名 
o $LINENO 显示的当前的行号


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15


[email protected] ~> cat ps4.sh

export PS4=‘$0.$LINENO+ ‘

set -x

echo "PS4 demo script"

ls -l /etc/ | wc -l

du -sh ~

[email protected] ~> ./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

[注: 使用PS4后使 "{script-name}.{line-number}+" 成为set –x的命令提示符]

时间: 2024-08-11 03:38:33

Linux 下PS1 PS2 PS3 PS4 提示符详解的相关文章

Linux的PS1.PS2.PS3.PS4等环境变量;Crontab的两个坑人点;变量传递等

1.问题出现: 我为了实现一个功能,就是让PS1变量(命令行提示符)每隔1分钟(利用crontab计划任务)变化一次颜色和背景格式以实现酷炫的效果,但是经过了各种尝试均以失败告终.虽然能够实现让PS1每按一次回车变化一次颜色(这个有人想尝试的话下面写的有),但是无法做到让它每隔一段时间进行一次格式的变化为了解决这个问题,进行了一些研究,总结了一下写在下面 附加:PS1每按一次回车实现颜色变化实现: 先在脚本中写入: #!/bin/bash PS1="\033[01;\$[RANDOM%7+31]

Linux下同步工具inotify+rsync使用详解

Linux下同步工具inotify+rsync使用详解 Posted on 2014-12-12 |  In Linux|  9|  Visitors 438 1. rsync 1.1 什么是rsync rsync是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件.它使用所谓的"Rsync演算法"来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快.所以通常可以作为备份工具来使用. 运行Rsync serve

linux下find(文件查找)命令的详解

文件查找命令locate和find详解 locate 配合数据库缓存,快速查看文件位置,非实时查找( 数据库查找) find 实际搜寻硬盘查询文件名称 ,实时查找 locate简介 locate命令其实是find -name的另一种写法,但是要比后者快得多,原因在于它不搜索具体目录,而是搜索一个数据库/var/lib/locatedb,这个数据库中含有本地所有文件信息.Linux系统自动创建这个数据库,并且每天自动更新一次,所以使用locate命令查不到最新变动过的文件.为了避免这种情况,可以在

LINUX下ORACLE相关的内核参数详解

ORACLE相关的内核参数详解 1.kernel.sem [[email protected] ~]# cat /proc/sys/kernel/sem 250         32000    100         142 [[email protected] ~]#  ipcs -sl ------ Semaphore Limits -------- max number of arrays = 142 max semaphores per array = 250 max semaphor

Linux下安装Hadoop(2.7.1)详解及WordCount运行

一.引言 在完成了Storm的环境配置之后,想着鼓捣一下Hadoop的安装,网上面的教程好多,但是没有一个特别切合的,所以在安装的过程中还是遇到了很多的麻烦,并且最后不断的查阅资料,终于解决了问题,感觉还是很好的,下面废话不多说,开始进入正题. 本机器的配置环境如下: Hadoop(2.7.1) Ubuntu Linux(64位系统) 下面分为几个步骤来详解配置过程. 二.安装ssh服务 进入shell命令,输入如下命令,查看是否已经安装好ssh服务,若没有,则使用如下命令进行安装: sudo

linux下easy_install的安装与使用详解

Python中的easy_install工具用起来非常好用,它的作用类似于Php中的pear,或者Ruby中的gem,或者Perl中的cpan. 1.easy_install安装 如果想使用easy_install工具,需要先安装setuptools,不过更酷的方法是使用ez_setup.py脚本:执行如下命令: 1 2 shell#  wget -q http://peak.telecommunity.com/dist/ez_setup.py shell#  python ez_setup.p

Linux下安装MyEclipse和Tomcat服务器详解,以及我安装过程中所出现的问题以及解决办法,并实现一个web小程序

1.首先,先要去MyEclipse和Tomcat的官网去下载Linux版的压缩文件,而MyEclipse的中文官网是需要登录并有可能要付钱,大家可以去网上下载,还有就是Tomcat的linux版,这个直接上官网就可以下载了,下载后我还是通通把它们放在我E盘下的as目录底下,如果大家还没配置好jdk,即Java环境的话,可看我这篇文章:http://blog.csdn.net/u012561176/article/details/45119047 这里我就直接进行操作了! 我E盘下的as文件夹

Linux下的搜索查找命令的详解(find)

4.find Linux下find命令在目录结构中搜索文件,并执行指定的操作.Linux下find命令提供了相当多的查找条件,功能很强大.由于find具有强大的功能,所以它的选项也很多,其中大部分选项都值得我们花时间来了解一下.即使系统中含有网络文件系统( NFS),find命令在该文件系统中同样有效,只你具有相应的权限. 在运行一个非常消耗资源的find命令时,很多人都倾向于把它放在后台执行,因为遍历一个大的文件系统可能会花费很长的时间 4.1.命令格式: find pathname -opt

Linux下各种后门和日志工具详解

攻入Linux系统后,很多入侵者往往就开始得意忘形了.这其中还有一个原因,就是技术性也要求更高了.下面,我们来看看一些常用的经典工具. 1.从这里延伸:后门和连接工具 (1)Httptunnel Tunnel的意思是隧道,通常HTTPTunnel被称之为HTTP暗道,它的原理就是将数据伪装成HTTP的数据形式来穿过防火墙,实际上,它是在HTTP请求中创建了一个双向的虚拟数据连接来穿透防火墙.说得简单点,就是说在防火墙两边都设立一个转换程序,将原来需要发送或接受的数据包封装成HTTP请求的格式骗过