![当标题设置为终端选项卡时如何运行脚本?](https://linux22.com/image/84275/%E5%BD%93%E6%A0%87%E9%A2%98%E8%AE%BE%E7%BD%AE%E4%B8%BA%E7%BB%88%E7%AB%AF%E9%80%89%E9%A1%B9%E5%8D%A1%E6%97%B6%E5%A6%82%E4%BD%95%E8%BF%90%E8%A1%8C%E8%84%9A%E6%9C%AC%EF%BC%9F.png)
在日常工作中,我保留了许多终端选项卡。所以为了识别这些,我设置了标题
终端选项卡 > 设置标题
例如 IRC、API 代码库、API 日志、Server1 等
我想做的是根据选项卡的标题在选项卡中执行某些操作。例如
- 当我设置“API Codebase”时,它应该转到我的代码库并激活适当的 python 虚拟环境
- 当我设置“IRC”时,它应该运行
irssi
- 当我设置“Server1”时,应该运行 ssh 命令来连接到服务器
等等。
如何才能做到这一点?
答案1
我的做法略有不同。不要手动设置选项卡的标题,而是创建一个既设置标题又运行所需命令的函数。添加此功能(改编自这里)到你的~/.bashrc
(假设你使用的是 bash):
function set-title() {
if [[ -z "$ORIG" ]]; then
ORIG=$PS1
fi
TITLE="\[\e]2;$@\a\]"
## Do different things depending on the string passed
case "$@" in
"API Codebase")
echo cd ~/codebase
echo python ...
;;
"IRC")
echo irssi
;;
"Server1")
echo ssh server1
;;
esac
PS1="${ORIG}${TITLE}"
}
答案2
据我所知无法检查终端的状态来自 shell 中的进程。
但即使可以,根据终端标题更改行为也很容易出错。没有简单的方法来检查拼写错误或类似的情况。它的可扩展性也不是很好——您将拥有一个do_something_based_on_title
命令,该命令会随着您添加功能而不断增长。
set-title
让每个命令在运行时负责设置自己的终端标题,而不是使用一个庞大的脚本。您可以使用别名轻松完成此操作,如下所示(将其放入您的.bashrc
或类似的名称中)。
set_title() {
echo -e "\e]0;$*\a"
}
alias apic='set_title "API Codebase"; command_for_api_codebase'
alias irc='set_title "IRC"; irssi'
alias server1='set_title "Server1"; ssh server1'
现在,您可以对这些命令进行制表符补全,不再有标题设置和程序启动代码出现问题的风险,也不再需要右键单击选项卡来设置其标题。只需运行您想要的命令,标题也会随之设置。