使用PS1变量的不同例子

566 阅读3分钟

特殊的shell变量是用来控制bash提示符的。这些shell变量是PS1、PS2、PS3和PS4。每个变量都用于特定的目的。在显示主提示符之前,这些变量的值作为命令被执行。PS1变量包含默认提示符的值。它被用来改变shell命令提示的外观和环境。本教程中已经展示了使用PS1变量的不同例子。

常用的转义序列

当交互式外壳执行时,PS1显示的主要命令提示。可以通过使用不同类型的反斜线转义的特殊字符来定制提示字符串。下面给出了最常用的反斜线转义字符。

反斜线escaped字符目的
\u用来显示当前的用户名。
\h它用于显示计算机的名称。
\H它用于显示主机名的名称。
\d用于显示日期,包括工作日名称、月份名称和日期。
\w它用于显示当前工作目录的完整路径。
\W用于显示当前工作目录的最后一个片段。
\t用于显示24小时格式的当前时间。
\T用于显示12小时格式的当前时间。
\@用于以AM/PM的12小时格式显示当前时间。
\nJ用于添加新的一行。
\e用于添加一个ASCII转义字符。
\v它用于显示bash的版本。
吉尔史密斯
\V它用来显示bash的版本和补丁级别。

检查PS1的默认值

PS1的默认值包含三个信息。用户名,主机名,以及当前工作目录的完整路径。运行下面的命令来显示PS1的默认值。

$ echo $PS1

输出

例1: 显示日期和时间

你可以通过使用\d和\t转义字符用命令添加日期和时间值。运行下面的命令来设置PS1的值,将用户名、日期和时间值显示在命令提示符中。这里,导出关键字是用来临时改变当前的命令提示符的。

$ export PS1="[ \u@\d \t ] $ "

输出

如果你重新打开终端,那么就会出现默认的命令提示符。要永久保存PS1值,请使用任何文本编辑器打开~/.bashrc文件。这里,使用了nano编辑器。

$ sudo nano ~/.bashrc

在文件的末尾添加以下一行,保存文件并退出编辑器。

PS1="[ \u@\d \t ] $ "

运行以下命令更新当前的命令提示,在~/.bashrc文件中添加这一行。

$ source ~/.bashrc

输出

运行以下命令,使用'\n'转义字符将命令提示显示为多行。它对长的命令提示符很有用。

$ export PS1="[\d]\n\u@\h: $ "

例2:改变背景和前景颜色

可以用不同的颜色值来为命令提示符的背景和前景设置不同的颜色。下面列出了背景和前景颜色的名称及数值。

背景颜色前景颜色
黑 = 40黑 = 30
红 = 41红 = 31
绿 = 42绿 = 32
黄 = 43黄 = 33
蓝 = 44蓝 = 34
紫色 = 45紫色 = 35
青色 = 46青色 = 36
白 = 47白 = 37

运行以下命令,将命令提示符的背景颜色改为紫色。这里,颜色值为45的'\e'转义字符被用来设置紫色背景。m "字符被用来设置序列。

$ export PS1="\e[45m\u@\h :\w$ \e[m"

输出

运行以下命令,将命令提示符的前景颜色改为白色。这里,颜色值为37的'\e'转义字符被用来设置白色前景。和前面的命令一样,'m'字符也被用来设置序列。

$ export PS1="\e[0;37m\u@\h :\w$ \e[m"

输出

例3:使用脚本在命令提示符中显示表情符号

表情符号可以用不同的方式添加到命令提示符中。本例中使用了emoji字符的字节值。从终端运行以下命令,根据退出状态值在命令提示符中显示表情符号。

$ export PS1='\u ( $(if [[ $? == 1 ]]; then printf "\xF0\x9F\x99\x8D"; else printf "\xF0\x9F\x99\x8E"; fi) )\[\e[0m\] :\w $ '

输出

例4:用脚本在命令提示符中显示表情符号

生成emoji的方法是通过执行bash文件,如本例所示。用下面的脚本创建一个bash文件。该脚本将检查当前登录的用户的类型。如果当前用户是普通用户,它将显示一个带有开始表情的表情符号,如果当前用户是根用户,它将显示一个带有太阳镜表情的表情符号。

user.sh

#!/bin/bash
#Check the user
if [ $UID = 0 ]; then
    #Set emoji for root
    export PS1='😎️~:$'
else
    #Set emoji for general user
    export PS1='🤩️~:$'
fi

运行下面的命令来执行上述脚本,改变当前shell的命令提示。

$ source user.sh

接下来,运行下面的命令,以根用户的身份登录并进入脚本的文件夹位置。

$ sudo -i
$ cd home/fahmida/bash

再次运行下面的命令,以根用户的身份执行该脚本。

$ source user.sh

输出

根据输出结果,第一个表情符号已经出现在普通用户身上,第二个表情符号出现在根用户身上。

总结

本教程展示了通过修改PS1的值以不同方式改变默认命令提示的方法。本教程的例子中使用了一些常用的转义字符,以帮助读者了解PS1在临时或永久改变当前命令提示时的用途。