2016-05-23 113 views
-1

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

面临的问题非常简单。

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

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

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

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

我似乎无法处理[^[[0m}正确和代码是不能够识别终端作为一个有效的。如果我从PS1变量中删除它,事情工作正常。

任何人都可以请建议可能输入什么正则表达式,以便代码将其作为有效的终端?

+0

是否可以使用扩展的正则表达式?我讨厌不得不转义元字符... – Laurel

+0

我不太确定。可能是我可以。是的,我不知道如何逃避。任何线索前进? –

+0

等一下,PS1是不是正则表达式?你能提供更多的代码吗? – Laurel

回答

-1

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

我跑在我的终端窗口中输入以下实验:

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

[2137][[email protected]:~]$^[[0m} 

正如你可以看到^[[0m}没有正确的解释。我认为这是提示中颜色的结尾。我认为它应该是​​。

这里是整个PS1变量:

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

测试它,你得到这个后:

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

[2139][[email protected]:~]$