前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >linux下PS1、PS2、PS3、PS4最全详解

linux下PS1、PS2、PS3、PS4最全详解

作者头像
咻一咻
发布2020-05-29 15:26:53
3.4K0
发布2020-05-29 15:26:53
举报
文章被收录于专栏:咻一咻咻一咻

通过设置环境变量PS1、PS2、PS3以及PS4来自定义用户命令行的字符显示。如果要长期永久性修改提示符,可以将修改提示符的命令添加到HOME/.profile或HOME/.bash_profile文件中

PS1

PS1是主提示符变量,也是默认提示符变量。默认值[\u@\h \W]\$,显示用户主机名称工作目录。

基本上通过设置PS1来定义命令行提示字符即可,最常用的需求就是显示登录的用户名、主目录、主机名等等。

默认的是:

代码语言:javascript
复制
[root@centos7 ~]# echo $PS1
[\u@\h \W]\$

效果:

这里写图片描述
这里写图片描述

参考1:

代码语言:javascript
复制
[root@centos7 ~]#PS1="\[\e[1;35m\][\u@\h \W]\\$\[\e[0m\]"

效果:

这里写图片描述
这里写图片描述

参考2: 1. 如何加颜色:加颜色链接 2. 在PS1值之后加一个空格。从个人角度来讲,使用这个空格可以增加一定的可读性 3. 把定义好的变量写成脚本建议放到/etc/profile.d/下 举例:

代码语言:javascript
复制
[root@centos7 ~]#vim /etc/profile.d/env.sh 
PS1="\[\e[1;36m\][\u@\h \W]\\$\[\e[0m\]"

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时,提示符为:# ,普通用户则为:$

/[

字符”[“

/]

字符”]”

/!

命令行动态统计历史命令次数

PS2

一个非常长的命令可以通过在末尾加 \ 使其分行显示 PS2多行命令的默认提示符,默认值是 >

PS2一般使用于命令行里较长命令的换行提示信息,比如:

代码语言:javascript
复制
[root@centos7 ~]#echo \           
>   #默认的

[root@centos7 ~]# export PS2=">+ "  # 修改

[root@centos7 ~]#echo \            
>+   #修改后

当用 \ 使长命令分行显示,非常易读。当然我也有的人不喜欢分行显示命令

PS3

Shell脚本中使用select时的提示符

你可以像下面示范的那样,用环境变量PS3定制shell脚本的select提示: 不使用PS3的脚本输出:

代码语言:javascript
复制
[root@centos6 ~]#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
[root@centos6 ~]#bash ps3.sh 
1) mon
2) tue
3) wed
4) exit
#? 1      [注: 提示符是 #?]
Monday
#? 2
Tuesday
#? 4

修改PS3后效果

代码语言:javascript
复制
[root@centos6 ~]#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
[root@centos6 ~]#bash ps3.sh 
1) mon
2) tue
3) wed
4) exit
Select a day (1-4): 1       [注: 提示符是 Select a day (1-4):]
Monday
Select a day (1-4): 2
Tuesday
Select a day (1-4): 4
PS4

PS4-set -x用来修改跟踪输出的前缀(很少很少用到 随意就不解释了)

如果有兴趣,可以学习bash里面的简介。 可以百度 linux超級技巧,第33章講述了ps3,ps4

  • PS3 The value of this parameter is used as the prompt for the select command (see SHELL GRAMMAR above).
  • PS4 The value of this parameter is expanded as with PS1 and the value is printed before each command bash displays during an execution trace. The first character of PS4 is replicated multiple times, as neces-sary, to indicate multiple levels of indirection. The default is ”+ ”.
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-02-06 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • PS1
  • PS2
  • PS3
    • PS4
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档