我试图设置一个程序,并在bash脚本中遇到了这一行。有人能告诉我它的作用吗?我对bash不太熟悉。
export PS1='\e[0;33mmyProject \e[0;32m\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$\e[0m '
非常感谢!
答案 0 :(得分:1)
这个命令做了两件事。它设置终端窗口的标题,和 设置bash提示符。
export PS1='\e[0;33mmyProject \e[0;32m\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$\e[0m '
一块一块:
export PS1=
这将设置PS1变量,该变量包含bash提示符。
\e[0;33m
\e
被转换为ESC
字符(ascii = 0x1B),这是一个控制序列介绍器,表示ANSI Escape Code的开头。序列末尾的m
字符表示[
和m
之间的所有内容都将被解释为;
- SGR分隔列表(选择图形再现)参数(有关详细信息,请参阅here)。 0
清除所有以前的文字格式,33
将文字颜色设置为黄色。
myProject
这只是将字符串myProject
添加到bash提示符。
\e[0;32m
这将清除所有以前的文本格式(0)并将文本颜色设置为绿色。 (32)
\[ ... \]
\[
开始一系列以\]
结尾的非打印字符。这两个分隔符之间的所有内容都不会在提示符中显示。
\e]0;\u@\h: \w\a
这会将终端窗口的标题设置为
username@hostname: /current/working/directory
接下来的一点:
${debian_chroot:+($debian_chroot)}
如果已定义变量$debian_chroot
,则此表达式将计算为$debian_chroot
的值。
$debian_chroot
是/etc/bash.bashrc
中设置的变量。 This post解释得比我好得多。
\u@\h:\w\$\e[0m
\u
评估当前用户的用户名,\h
评估计算机的名称,\w
评估当前工作目录。 \$
只是字符$
。它需要进行转义,因为在bash脚本中,字符$
表示以下字符是变量的名称。 \e[0m
将文本格式恢复为默认值。
答案 1 :(得分:0)
这是一个非常复杂的命令!
让我们逐节分解。
export
这意味着我们正在设置一个变量以用于其他程序。
PS1=
变量的名称是PS1。
\e
这是一个转义字符。在bash(和大多数编程语言)中,在它之前带有反斜杠的Everything是一个转义字符。它用于需要在空格中包含控制字符或控制键本身包含在字符串中时。当它被转义时,bash将其视为字符串的一部分,而不是另一个控制字符。
[
这是数组的开头。它与C程序中的数组非常相似。
;
这是一个结束角色,它可能意味着几个不同的东西。在这里,它被用来定义数组的一部分。
这里还有其他一些东西,但它主要只是数组中的数据。
:
这是一个NOT操作数。它用于确定某事物的倒数。
${debian_chroot:+($debian_chroot)}
这是一个变量。在bash中,变量以$。开头。
它使用变量debian_chroot并将其添加到自身,如果它不为null。
这个命令只是定义一个变量,在这个例子中是一个包含信息的数组,可能是关于一个带有debian安装的chroot。