【问题标题】:Handling colored bash prompt处理彩色 bash 提示
【发布时间】:2016-05-23 18:59:59
【问题描述】:

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

面临的问题非常简单。

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

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

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

例如,.*\$ 被认为是有效的

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

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

【问题讨论】:

  • 可以使用扩展的正则表达式吗?我讨厌不得不逃避元字符...
  • 我不太确定。也许我可以。是的,我不知道如何逃脱。有前进的线索吗?
  • 等等,PS1 是不是正则表达式?能否提供更多代码?
  • 是的。不幸的是,这就是我目前所拥有的一切:/。如果我可以更改代码,可以尝试更多的东西
  • 您可能想尝试看起来相似的PS1=\[\e[0;37m\]\D{%R}\[\e[1;34m\] \h:\w> \[\e[0m\]。例如02:16 alchemy:~/dev/src-c/tmp/tst>

标签: regex linux terminal prompt ansi-escape


【解决方案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:~]$

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-08
    • 1970-01-01
    • 2014-07-20
    • 2018-01-05
    • 2014-06-05
    • 2021-12-23
    • 1970-01-01
    相关资源
    最近更新 更多