在哪里可以找到$ PS1变量的完整参考?


20

我的机器(Kubuntu 13.10)上的默认PS1变量是这样的:

\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$

我正在寻找有关$ PS1变量如何工作的参考,该参考至少可以使我理解上述PS1变量。


@RaduRădeanu我现在将其移至另一个答案。
Mark Raymond

作为一般说明,您可以通过PS1在终端中设置的值来解决这个问题,例如PS1="How r u, \u?"。更改将一直持续到您关闭终端为止。
djvg

Answers:


24

参考文献

到目前为止,对于Bash提示中可以使用的所有功能,还没有一个唯一的参考-但由于该功能已经发展了数十年,并且可能在发行版之间有所不同,因此可能要问的太多了。我试图总结一下我发现最有用的东西。

该方法最完整,但是又很漫长且漫无目的。一些更有用的部分:

  • 2.42.5 介绍了设置PS1的基本知识,包括(可打印的)转义字符。
  • 3.4节解释了为什么\[\]必要。
  • 第6章介绍了您可能要使用的所有主要(不可打印的)转义序列,包括设置提示的颜色和xterm窗口的标题。

该指南说明了${}Bash的一般工作原理,而Ask Ubuntu的问题则进一步说明了该工作原理debian_chroot

在这两者之间,我认为将解释默认Ubuntu PS1变量中的每个字符。

Ubuntu提示说明

提示分为三个部分:

  • \[\e]0;\u@\h: \w\a\] 设置xterm窗口的标题栏:

    • \[ 开始一段不可打印的字符
    • \e]0; 是'set xterm title'的转义序列(我相信0以外的数字将设置其他xterm属性,尽管我尚未对此进行测试)
    • \u@\h: \w使用的标题(有关和\u,请参见下文)\h\w
    • \a 标记标题的结尾
    • \] 标记不可打印字符的结尾
  • ${debian_chroot:+($debian_chroot)}如果设置了$ debian_chroot,则扩展为括号中的$ debian_chroot值。见这个问题有关$ debian_chroot更多信息。
  • \u@\h:\w\$ 是提示本身:

    • \u 扩展为当前用户名
    • \h 扩展为当前主机名
    • \w 扩展到当前工作目录
    • \$扩展#为root和$所有其他用户

6

根据Bash参考手册PS1是:

主提示字符串。默认值为\s-\v\$。有关显示之前扩展的转义序列的完整列表,请参见控制提示PS1

其他一些很好的参考可以是:



@Radu-谢谢,这使我比以前更进一步。目前似乎仍然是很少的信息,以什么可以去里面\[\],但-你有任何引用?
Mark Raymond 2014年

@MarkRaymond在我给你的两个链接中对此进行了解释(为Linux / Unix解释了“ 打印提示”PS1提示):\[-开始一系列非打印字符,可将终端控制序列嵌入到提示中;\]–结束一系列非打印字符。请花点时间仔细阅读;)
RaduRădeanu2014年

是的,我读了-我一直在寻找的一个参考什么那些非打印字符做。对不起,如果我不清楚!
Mark Raymond


5

ss64.com似乎是我找到的最佳参考。

它解释了以下变量:

\d   The date, in "Weekday Month Date" format (e.g., "Tue May 26"). 

\h   The hostname, up to the first . (e.g. deckard) 
\H   The hostname. (e.g. deckard.SS64.com)

\j   The number of jobs currently managed by the shell. 

\l   The basename of the shell's terminal device name. 

\s   The name of the shell, the basename of $0 (the portion following 
    the final slash). 

\t   The time, in 24-hour HH:MM:SS format. 
\T   The time, in 12-hour HH:MM:SS format. 
\@   The time, in 12-hour am/pm format. 

\u   The username of the current user. 

\v   The version of Bash (e.g., 2.00) 

\V   The release of Bash, version + patchlevel (e.g., 2.00.0) 

\w   The current working directory. 
\W   The basename of $PWD. 

\!   The history number of this command. 
\#   The command number of this command. 

\$   If you are not root, inserts a "$"; if you are root, you get a "#"  (root uid = 0) 

\nnn   The character whose ASCII code is the octal value nnn. 

\n   A newline. 
\r   A carriage return. 
\e   An escape character. 
\a   A bell character.
\\   A backslash. 

\[   Begin a sequence of non-printing characters. (like color escape sequences). This
     allows bash to calculate word wrapping correctly.

\]   End a sequence of non-printing characters.

\[ ... \]定义了一系列的非打印字符。他们需要正确跟踪光标位置。

\e你开始提示转义序列。此处的更多信息(请注意该页面上的“ Esc”是\e顺序)。

  • 注意:我从未真正喜欢过转义序列。使用tput以获得换码为您服务。

${debian_chroot:+($debian_chroot)}是参数扩展。看这里

  • 它写($debian_chroot)if $debian_chroot是否设置,否则不写。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.