通過(guò)設(shè)置環(huán)境變量PS1、PS2、PS3以及PS4來(lái)自定義用戶命令行的字符顯示。如果要長(zhǎng)期永久性修改提示符,可以將修改提示符的命令添加到$HOME/.profile或$HOME/.bash_profile文件中
PS1
PS1是主提示符變量,也是默認(rèn)提示符變量。默認(rèn)值[\u@\h \W]$,顯示用戶主機(jī)名稱和工作目錄。
基本上通過(guò)設(shè)置PS1來(lái)定義命令行提示字符即可,最常用的需求就是顯示登錄的用戶名、主目錄、主機(jī)名等。
默認(rèn)的是:
[root@centos8 ~]# echo $PS1
[\u@\h \W]\$
PS1變量可以使用的參數(shù)值有如下:
| 參數(shù) | 描述 |
|---|---|
| /d | 代表日期,格式為weekday month date,例如:”Mon Aug 1” |
| /H | 完整的主機(jī)名稱。例如:我的機(jī)器名稱為:fc4.linux,則這個(gè)名稱就是fc4.linux |
| /h | 僅取主機(jī)的第一個(gè)名字,如上例,則為fc4,.linux則被省略 |
| /t | 顯示時(shí)間為24小時(shí)格式,如:HH:MM:SS |
| /T | 顯示時(shí)間為12小時(shí)格式 |
| /A | 顯示時(shí)間為24小時(shí)格式:HH:MM |
| /u | 當(dāng)前用戶的賬號(hào)名稱 |
| /v | BASH的版本信息 |
| /w | 完整的工作目錄名稱。家目錄會(huì)以 ~代替 |
| /W | 利用basename取得工作目錄名稱,所以只會(huì)列出最后一個(gè)目錄 |
| /# | 下達(dá)的第幾個(gè)命令 |
| /$ | 提示字符,如果是root時(shí),提示符為:# ,普通用戶則為:$ |
| /[ | 字符”[“ |
| /] | 字符”]” |
| /! | 命令行動(dòng)態(tài)統(tǒng)計(jì)歷史命令次數(shù) |
PS2
一個(gè)非常長(zhǎng)的命令可以通過(guò)在末尾加 \ 使其分行顯示
PS2多行命令的默認(rèn)提示符,默認(rèn)值是 >
PS2一般使用于命令行里較長(zhǎng)命令的換行提示信息,比如:
#默認(rèn)換行是一個(gè)>符號(hào)
[root@centos8 ~]#echo \
>
#修改默認(rèn)換提示>+組合符號(hào)
[root@centos8 ~]# export PS2=">+ "
#修改后的默認(rèn)換行提示符號(hào)
[root@centos8 ~]#echo \
>+
PS3
Shell腳本中使用select時(shí)的提示符號(hào)
直接上例子:
#未設(shè)置PS3的腳本:
#默認(rèn)提示符是 #?
[root@centos8 ~]#cat ps3.sh
select i in a b c exit
do
case $i in
a) echo "A";;
b) echo "B";;
c) echo "C";;
exit) exit;;
esac
done
[root@centos8 ~]#bash ps3.sh
1) a
2) b
3) c
4) exit
#? 1
A
#? 2
B
#? 4
##提示符是 Select a character (1-4):
#修改PS3后效果
[root@centos8 ~]#cat ps3new.sh
PS3="Select a character (1-4): "
select i in a b c exit
do
case $i in
a) echo "A";;
b) echo "B";;
c) echo "C";;
exit) exit;;
esac
done
[root@centos8 ~]#bash ps3new.sh
1) a
2) b
3) c
4) exit
Select a character (1-4): 1
A
Select a character (1-4): 3
C
Select a character (1-4): 4
PS4
PS4-set -x用來(lái)修改跟蹤輸出的前綴
#未設(shè)置PS4時(shí)的shell腳本:
[root@centos8 ~]# cat ps4.sh
#! /bin/bash
set -x
echo 'PS4 demo script'
ls -l /etc/|wc -l
du -sh ~
#執(zhí)行結(jié)果:
[root@centos8 ~]# sh ps4.sh
+ echo 'PS4 demo script'
PS4 demo script
+ ls -l /etc/
+ wc -l
250
+ du -sh /root
100K /root
#[注: 當(dāng)使用sex -x跟蹤輸出時(shí)的提示符為 +]
#設(shè)置PS4后時(shí)的shell腳本:
[root@centos8 ~]# cat ps4new.sh
#! /bin/bash
export PS4='$0.$LINENO+'
set -x
echo 'PS4 demo script'
ls -l /etc/|wc -l
du -sh ~
#PS4在ps4.sh中定義了下面兩個(gè)變量
#$0 顯示當(dāng)前的腳本名
#$LINENO 顯示當(dāng)前命令的行號(hào)
#執(zhí)行結(jié)果:
[root@centos8 ~]# bash ps4new.sh
ps4.sh.4+echo 'PS4 demo script'
PS4 demo script
ps4.sh.5+ls -l /etc/
ps4.sh.5+wc -l
250
ps4.sh.6+du -sh /root
100K /root