处理彩色 bash 提示

Handling colored bash prompt

我有一个适配器代码,它通过 SSH 在 Linux 机器上执行一些特定的命令。它以指定的方式执行命令并处理每个命令的输出。

面临的问题非常简单。

我正在连接到使用颜色的 Bash 提示。以下是 PS1 变量的详细信息:

PS1="\[3[1;34m\][$(date +%H%M)][\u@\h:\w]$\[^[[0m}\]"

该代码使用正则表达式,它首先确定一个有效的终端,然后继续执行命令。

例如,.*$ 被认为有效

我似乎无法正确处理 [^[[0m},并且代码无法将终端识别为有效终端。如果我从 PS1 变量中删除它,一切正常。

谁能建议可以输入哪些正则表达式,以便代码将其作为有效终端?

我认为您在上面提供的 PS1 变量已损坏。

我运行在我的终端window进行以下实验:

[guest@localhost ~] $ export PS1="\[3[1;34m\][$(date +%H%M)][\u@\h:\w]$\[^[[0m}\]"

[2137][guest@localhost:~]$^[[0m}

如您所见,^[[0m} 未正确解释。我假设它是提示中颜色的结尾。我觉得应该是\[3[0m\].

这是整个 PS1 变量:

PS1="\[3[1;34m\][$(date +%H%M)][\u@\h:\w]$\[3[0m\]"

测试后你得到这个:

[2137][guest@localhost:~]$^[[0m}export PS1="\[3[1;34m\][$(date +%H%M)][\u@\h:\w]$\[3[0m\]"

[2139][guest@localhost:~]$