如何更改 bash 提示符的格式?

如何更改 bash 提示符的格式?

我的 Gnu/Linux 系统是 red hat,我从 xshell 进行 ssh。命令提示符格式如下:

[[email protected] /home/qihang.gqh/online/h5_reco/user_level_1.0]
$vi dn_click.py

我记得还有另一种格式,当前工作字典位于命令前面,如下所示:

user_level_1.0# *****(command)

如何切换格式?

答案1

以下是关于提示环境变量的简单解释(摘自 bash 手册页):

PS0 – 该参数的值像 PS1 一样展开,并在读取命令之后和执行命令之前由交互式 shell 显示。

PS1 – 该参数的值被扩展(请参阅下面的提示)并用作主要提示字符串。默认值为 \s-\v\$ 。

PS2 – 该参数的值与 PS1 一样扩展,并用作辅助提示字符串。默认为>

PS3 – 该参数的值用作选择命令的提示

PS4 – 该参数的值与 PS1 一样扩展,并且在执行跟踪期间显示每个命令 bash 之前打印该值。 PS4 的第一个字符根据需要被复制多次,以指示多个间接级别。默认为+

这里有一些您可以在您的格式中使用的变量:

\a: ASCII 响铃字符 (07)

\d:“工作日月份日期”格式的日期(例如“5 月 26 日星期二”)

\D{format}:将格式传递给strftime(3),并将结果插入到提示字符串中;空格式会产生特定于区域设置的时间表示。大括号是必需的

\e: ASCII 转义字符 (033)

\h:第一个“.”之前的主机名

\H: 主机名

\j:当前由 shell 管理的作业数量

\l:shell 终端设备名称的基本名称

\n: 新队

\r: 回车

\s:shell 的名称,$0 的基本名称(最后一个斜杠后面的部分)

\t:24 小时制 HH:MM:SS 格式的当前时间

\T:12 小时制 HH:MM:SS 格式的当前时间

\@:当前时间(12 小时 am/pm 格式)

\A:24 小时制 HH:MM 格式的当前时间

\u:当前用户的用户名

\v:bash 的版本(例如 2.00)

\V:bash的发布,版本+补丁级别(例如2.00.0)

\w:当前工作目录,$HOME 缩写为波浪号

\W:当前工作目录的基本名称,$HOME 缩写为波浪号

\!:该命令的历史编号

\#:该命令的命令号

\$:如果有效UID为0,则为#,否则为$

\nnn:八进制数nnn对应的字符

\\: 反斜杠

\[:开始一系列非打印字符,可用于将终端控制序列嵌入到提示中

\]:结束非打印字符序列

所以:一个简单的例子

PS1= "\h:\! \w \$"

形成更多信息你可以看到bash男人

答案2

如果您想看到:(当前目录的最后一部分)后跟井号,您可以使用:

PS1='\W# '

.bashrc将此行放入您的主目录中的文件中。

尽管我会警告您不要#在非 root 提示符中使用,因为习惯上在非 root 提示符字符串和root 提示符中使用类似>或 的内容。$#

参考:Bash shell 提示

相关内容