Linux命令行提示符美化(PS1&PS2&PS3&PS4)

通過(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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容