GNOME终端:如何关闭执行标签页脚本后的原始标签页?
解决gnome-terminal脚本残留原始标签页的问题
我来帮你搞定这个问题!你的tab_init.sh已经能成功打开指定目录的3个标签页,但残留的原始标签页确实有点碍事,这里有两个实用的解决方案:
方法1:用kill $PPID直接关闭原始标签页的父进程
这个方法最直接,不需要额外安装工具。原理是杀掉执行脚本的终端shell进程,从而关闭原始标签页。修改后的脚本如下:
#!/bin/bash # options="--hide-menubar --geometry=140x42" options="" options_each=() # tabs cmds[1]="cd ~/a; clear" cmds[2]="cd ~/b; clear" cmds[3]="cd ~/c; clear" for i in 1 2 3; do options_each+=(--tab -e "bash -c '${cmds[i]} ; bash'") done # 启动标签页(会在当前窗口新增3个标签) gnome-terminal $options "${options_each[@]}" & # 杀掉当前终端的shell进程,关闭原始标签页 kill $PPID exit 0
注意:这个操作只会关闭执行脚本的那个标签页,不会影响新打开的3个标签页。如果你的gnome-terminal默认是打开新窗口而不是在当前窗口加标签,这个脚本会启动一个带3个标签的新窗口,同时关闭原来的终端窗口。
方法2:用xdotool模拟快捷键关闭原始标签页
如果不想杀掉进程,可以用xdotool模拟gnome-terminal默认的关闭标签页快捷键Ctrl+Shift+W。首先需要安装xdotool:
sudo apt install xdotool
然后修改脚本:
#!/bin/bash # options="--hide-menubar --geometry=140x42" options="" options_each=() # tabs cmds[1]="cd ~/a; clear" cmds[2]="cd ~/b; clear" cmds[3]="cd ~/c; clear" for i in 1 2 3; do options_each+=(--tab -e "bash -c '${cmds[i]} ; bash'") done # 启动标签页 gnome-terminal $options "${options_each[@]}" # 延迟0.5秒确保标签页加载完成 sleep 0.5 # 发送关闭标签页的快捷键 xdotool key Ctrl+Shift+W exit 0
优缺点:这个方法更温和,但依赖xdotool工具和gnome-terminal的快捷键配置(如果你的快捷键不是默认的,需要修改对应的参数)。
额外小技巧:直接启动带3个标签的新窗口
如果你其实想要的是一个全新的终端窗口,只包含3个目标标签页(而不是在当前窗口加标签),可以在options里加上--window强制打开新窗口:
options="--window"
这样启动的新窗口只会有你指定的3个标签页,完全不会涉及原始标签页的问题。
内容的提问来源于stack exchange,提问作者Eric
相关产品推荐
相关产品推荐

