如何在 Linux 中执行特定命令时设置 PuTTY 窗口标题

如何在 Linux 中执行特定命令时设置 PuTTY 窗口标题

将此问题从 StackOverflow 移至此处


我使用 KeePass 作为密码管理器,并大量使用它的自动输入功能。由于自动输入功能仅查看窗口标题来筛选密码条目,因此窗口标题越独特,效果越好。

现在,当我通过 PuTTY 登录到我的某个服务器时,我通常会将窗口标题配置为某个固定字符串,例如主机名等。当执行提示我输入密码的命令(例如sudomysql)时,我通常会按热键进行自动输入,它会打开 Keepass 窗口,其中包含按标题过滤的该特定窗口的所有条目。不幸的是,该列表包含特定主机的所有条目,因为我在 KeePass 中管理与该主机关联的各种用户帐户和密码。

假设我想使用用户 < 登录 MySQL> 我的 PuTTY 窗口标题设置为 <PuTTY-myhost.name>。当我按下自动输入热键时,KeePass 会调出与该窗口标题相关的所有条目,我必须先浏览该列表才能找到正确的条目。所以我想将 PuTTY 的窗口标题设置为 <PuTTY - myhost.name:用户“root”的 MySQL 密码> 在 Linux 中执行mysql命令时,我可以像//PuTTY.*myhost\.name.*MySQL.*'root'//在 KeePass 中输入密码一样应用正则表达式过滤器,它会立即找到该特定条目并自动输入。命令触发后(mysql接受密码并提供 MySQL 命令提示符),我想将窗口标题重置为之前的状态。

这是否可能?如果可以,最干净的方法是什么?

希望我把我的问题说清楚了。任何帮助我都非常感谢!

答案1

在 xterm 标题栏中显示命令

trap 'printf "\033]0;%s\007" "${BASH_COMMAND//[^[:print:]]/}"' DEBUG

较早的答案:

您应该能够为 mysql 创建一个别名或 shell 脚本来执行以下命令

  • 根据需要设置窗口标题
  • 运行你的应用程序(例如mysql)
  • 将窗口标题重新设置为其他内容

您可以使用类似以下方式设置窗口标题

  echo -e "\e]0;running mysql\a"
  mysql
  echo -e "\e]0;running bash\a"

导致-ebash 将“\e”解释为 ASCII 控制字符 ESC(Escape 0x0b),将“\a”解释为 ASCII 控制字符 alert 或 BEL(Bell 0x07)

ESC 是一个命令序列引入器(CSI),ESC 后面跟着]0;一个所谓的转义序列,用于在终端中执行某些控制操作。

如果这似乎不起作用,请将以下内容放入脚本文件中

  echo -e "\e]0;desired-title\a"
  sleep 5s

然后运行它,如果标题变为“desired-title”持续 5 秒,则说明有其他东西覆盖了您的窗口标题。您必须找到并禁用它。


也可以看看

相关内容