将此问题从 StackOverflow 移至此处
我使用 KeePass 作为密码管理器,并大量使用它的自动输入功能。由于自动输入功能仅查看窗口标题来筛选密码条目,因此窗口标题越独特,效果越好。
现在,当我通过 PuTTY 登录到我的某个服务器时,我通常会将窗口标题配置为某个固定字符串,例如主机名等。当执行提示我输入密码的命令(例如sudo
或mysql
)时,我通常会按热键进行自动输入,它会打开 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
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"
导致-e
bash 将“\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 秒,则说明有其他东西覆盖了您的窗口标题。您必须找到并禁用它。
也可以看看