user3073309 Asked: 2024-06-21 19:15:31 +0800 CST2024-06-21 19:15:31 +0800 CST 2024-06-21 19:15:31 +0800 CST PS1 提示 \[\e]0; 与 \[\e]2; 是什么,看起来一个是选项卡的标题名称,一个是窗口的标题名称 772 这是我的 ps1 有人知道有关这方面的文件吗? export PS1='\[\e]0;YYY@\h:\w\a\]\[\e]2;XXX\W\a\e[32;40m\]\[\e[36;40m\]$?\[\e[31;40m\]\D{%d}\[\e[35;40m\]\D{%H%M}\[\e[36;40m\]\W\[\e[32;40m\]>\[\e[0m\]' bash 1 个回答 Voted Best Answer u1686_grawity 2024-06-21T19:33:57+08:002024-06-21T19:33:57+08:00 作为参考,\e]前缀在文档中通常称为“OSC”(而\e[为“CSI”)。 \e]0;(OSC 0)开始一个序列,设置终端的窗口标题和图标标题 - 后者用于允许最小化或图标化窗口使用单独标题的桌面环境,例如 MS Windows 3.11。 \e]2;(OSC 2)仅设置窗口标题(而\e]1;OSC 1 仅设置图标标题)。 \e[0m不要与重置所有文本格式的 (CSI 0 m,又名 SGR 0)混淆。 两个 OSC 都可以以\e\\(ST) 或\a(BEL) 结尾,后者是非标准的,但也很常见。\e]0;YYY@\h:\w\a整个序列也是如此。 要查看系统上两者之间的区别,您可以尝试如下命令: printf '\e]0;Both titles\a'; sleep 5 printf '\e]1;Icon title\a'; sleep 5 printf '\e]2;Window title\a'; sleep 5 (睡眠命令就在那里,所以如果您一次性复制粘贴整个命令,您就可以逐一看到更改。) 提示符中最外层的内容\[ ... \]特定于 Bash;它们不是序列本身的一部分,但告诉 shell 的 Readline 库,序列是零宽度的,并且在打印时不会移动光标,以便它能够正确知道提示符的宽度以及在编辑长的多行命令时应该如何换行。 http://web.archive.org/web/2020if_/http://rtfm.etla.org/xterm/ctlseq.html https://invisible-island.net/xterm/ctlseqs/ctlseqs.html
作为参考,
\e]
前缀在文档中通常称为“OSC”(而\e[
为“CSI”)。\e]0;
(OSC 0)开始一个序列,设置终端的窗口标题和图标标题 - 后者用于允许最小化或图标化窗口使用单独标题的桌面环境,例如 MS Windows 3.11。\e]2;
(OSC 2)仅设置窗口标题(而\e]1;
OSC 1 仅设置图标标题)。\e[0m
不要与重置所有文本格式的 (CSI 0 m,又名 SGR 0)混淆。两个 OSC 都可以以
\e\\
(ST) 或\a
(BEL) 结尾,后者是非标准的,但也很常见。\e]0;YYY@\h:\w\a
整个序列也是如此。要查看系统上两者之间的区别,您可以尝试如下命令:
(睡眠命令就在那里,所以如果您一次性复制粘贴整个命令,您就可以逐一看到更改。)
提示符中最外层的内容
\[ ... \]
特定于 Bash;它们不是序列本身的一部分,但告诉 shell 的 Readline 库,序列是零宽度的,并且在打印时不会移动光标,以便它能够正确知道提示符的宽度以及在编辑长的多行命令时应该如何换行。