处理彩色bash提示

时间:2016-05-23 19:00:00

标签: regex linux terminal prompt ansi-escape

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

面临的问题非常简单。

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

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

代码使用regex,它首先决定一个有效的终端,然后继续执行这些命令。

例如,.*\$被视为有效

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

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

1 个答案:

答案 0 :(得分:-1)

我认为您上面提供的PS1变量已被破坏。

我在终端窗口中运行了以下实验:

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

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

正如您所看到的,^[[0m}未被正确解释。我假设它是提示中颜色的结尾。我认为它应该是\\[\033[0m\\]

这是整个PS1变量:

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

经过测试,你得到了这个:

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

[2139][guest@localhost:~]$