在许多Linux系统上,默认的bash命令行提示符非常小。正如我们将在本文中看到的那样,可以通过修改提示符,以便显示包括诸如时间、负载、使用系统的用户数量、常运行时间等信息。
在本教程中,您将学习:
- 什么是PS1和PS2 Shell变量
- 如何创建自定义shell提示符
- 我们可以用来定制shell提示的字符是什么
![11e975de8bd682f69529223f7d4a10a5.png](https://i-blog.csdnimg.cn/blog_migrate/d6f3854f480cda036d55f1e20e3b2b91.jpeg)
Bash提示变量
与Linux系统中其他功能一样,bash提示符也可以自定义。我们可以通过更改bash的值来完成任务PS1,PS2,PS3,PS4变量。为了使事情简单,本文将只涉及前两个。使用echo命令查看其值:
$ echo "Bash PS1 variable:" $PS1$ echo "Bash PS2 variable:" $PS2
![b416507fb11fe942d0f8c9789152708e.png](https://i-blog.csdnimg.cn/blog_migrate/55d7dc75fe082c30b77973076df4f18c.jpeg)
PS1和PS2 bash提示
Bash PS1提示变量
PS1是主要的提示变量。目前持有u@h:w$特殊的bash字符。这是许多Linux系统上bash提示符的默认结构,每次使用终端登录时都会显示。请参阅以下“ Bash提示特殊字符”部分以了解u,h,w和$符号。这是带有默认设置的经典bash提示:
![c61ff9fecbf48f96425429b07b539fbf.gif](https://i-blog.csdnimg.cn/blog_migrate/a2d7de62b5f39d25a6f2ceb355f2c94f.gif)
PS1 bash提示
Bash PS2提示变量
PS2bash shell变量是辅助提示。如果 shell 程序等待用户输入,则会显示此提示,例如,您忘记插入第二个引号。
![a5d72c1d11a4a811429a29cc63fbb9cd.gif](https://i-blog.csdnimg.cn/blog_migrate/85965ff1c3f208e447ed71ddedaae7a2.gif)
PS2 bash提示
Bash提示特殊字符
可以使用特殊字符自定义Bash提示。以下是最常用的字符及其含义的快速概述:
Bash提示特殊字符Bash特殊字符Bash特殊字符说明Bash特殊字符Bash特殊字符说明aASCII响铃字符(07)d以“星期月份日期”格式显示的日期(例如,“Tue May 26”)$$非打印字符序列的结束eASCII转义字符(033)h主机名,直到第一个`。H主机名 jShell当前管理的作业数lShell的终端设备名称的基本名称新行回车sshell 程序的名称,$0的基本名称(最后斜杠后的部分)以24小时制HH:MM:SS表示的当前时间T当前时间(12小时HH:MM:SS格式)@当前时间(12小时制)A以24小时制HH:MM表示的当前时间u当前用户的用户名vbash的版本(例如2.00)Vbash版本+ patchelvel的发布(例如2.00.0)w当前工作目录W当前工作目录的基本名称!该命令的历史编号#该命令的命令号$如果有效UID为0,则为#,否则为$nn八进制数字nnn对应的字符反斜杠 [开始一个non-printing字符序列,该字符可用于将终端控制序列嵌入到提示中D {format}将该格式传递给strftime(3)并将结果插入提示字符串中;空格式将导致区域特定时间表示。大括号是必需的
Bash提示的自定义
用户登录到系统后,将从各种文件初始化用户环境变量:
- /etc/profile或/etc/bashrc(系统)
- 〜/.bash_profile,〜/.bash_login,〜/.profile,〜/.bashrc或〜/.bash_logout(用户)
重要的是要知道所有用户环境变量的生存期都等于终端会话。当终端会话关闭时,用户的变量包括bash shell变量都会清空。
永久bash变量定义
首先,我们将在一个bash初始化文件中定义一个永久变量,~/.bash_profile,然后我们将在shell命令行提示中定义一个临时变量。永久用户变量:
![56ae8ef3cdea2686abb484357ba73f6b.gif](https://i-blog.csdnimg.cn/blog_migrate/af8b260a4b3f1ce08cb65480f343e823.gif)
这里发生的是,用户"prompt"修改了自己的.bash_profile初始化文件,该文件位于其主目录中,方法是附加一个VAR1变量定义。当用户"prompt"注销并再次登录时,$var1变量已初始化并可用于新的终端会话。
根据相同的原则,我们可以定义bash提示符。最好的地方是bash初始化文件.~/bashrc。打开你的 ~/.bashrc文件并 添加/编辑 定义PS1变量类似于:
PS1='MY NEW BASH PROMPT@:w$ '
注意:您的〜/.barshrc文件可能与以下示例不同!
![9384d138610fd1b03aed4dea1ce5947d.gif](https://i-blog.csdnimg.cn/blog_migrate/0a024096509ca35c7009b7e13ef4519d.gif)
$ source .bashrc
或类似的:
$ . .bashrc
![6bd87855af0f42a999851028b495de7d.gif](https://i-blog.csdnimg.cn/blog_migrate/5f59b737f4cedd69c86069e4565ab445.gif)
临时bash变量定义
临时bash变量仅持续到当前终端会话。使用export命令生效。
![d3364a903081c0bcfa7cdab0df5e2917.gif](https://i-blog.csdnimg.cn/blog_migrate/54b98fa1bf16bb570d9faab29c7a8773.gif)
Bash临时变量
如您所见,变量$VAR2在用户关闭其终端会话时未定义。永久变数$VAR1总是从bash初始化文件定义的:~/.bash_profile。由于我们可以使用导出命令来定义新的bash变量,因此我们也可以使用它来修改bash提示$PS1变量。要将当前bash提示更改为仅显示时间,我们可以执行以下操作:
export PS1=": "
![1a10ca7b388661bc0252926df05e1b09.gif](https://i-blog.csdnimg.cn/blog_migrate/a1693ea52734cb5c3c9fcbdfecc6c9f4.gif)
临时提示定义
更改前景和背景bash提示颜色
在bash中更改颜色的语法如下:
033[ - Indicates the beginning of color in the textx;yzm - Indicates color code033[00m - Indicates the end of color in the text
Bash颜色代码:
![aee919be4fa6ff39a8349caae678ed4f.gif](https://i-blog.csdnimg.cn/blog_migrate/2ac52715549d4c03c5be8bd3911c8224.gif)
export PS1="033[01;31mBASH IN RED033[00m: "
![d9eb5da02bde3646dd092dec50b366ae.gif](https://i-blog.csdnimg.cn/blog_migrate/e52afe5a615841964943d1c080405010.gif)
Bash提示-红色
Bash提示示例
为了让您开始使用新的bash提示,请参考以下几个示例:
显示当前时间
export PS1="u@h :$ "
![35dce61381770dfc032c883fb33160c2.gif](https://i-blog.csdnimg.cn/blog_migrate/08f40c96b996d6f202c3a4232dfb7b07.gif)
计算当前目录中的文件
此bash提示显示当前目录中的当前文件和目录数。
export PS1="u@h [$(ls | wc -l)]:$ "
![dce9999dc824e2b3dbbf6b2409bdb4c5.gif](https://i-blog.csdnimg.cn/blog_migrate/2af85540c392d4f0166a5d3688206e00.gif)
带有文件计数的Bash提示
参考资料
- Bash prompt basics - LinuxConfig.org