我正在尝试编写一个命令,该命令将启动几个终端选项卡,在每个选项卡中执行某些操作,并让每个选项卡在命令完成后保持打开状态,这样我就可以查看输出并在每个选项卡中键入更多命令
像这样:
gnome-terminal --tab -e "ls -a" --tab -e "ls"
但问题是“ls”命令完成后标签就会关闭。有人知道如何让标签保持打开状态吗?
答案1
Gnome-terminal 可以执行命令或打开 shell,但不能同时执行这两项操作。
有一种解决方法可以同时完成这两项工作,那就是将命令和随后对 shell 的调用封装成一个命令。
$ gnome-terminal -e "bash -c \"echo foo; echo bar; exec bash\""
要了解更多替代方案,请阅读我在 Stack Overflow 上对类似问题的回答:https://stackoverflow.com/questions/3512055/avoid-gnome-terminal-close-after-script-execution/3531426#3531426
答案2
如果你已经安装xdotool
并且有wmctrl
权限,那么以下 shell 脚本可能会起作用:
#!/usr/bin/env bash
window="$(xdotool search --class gnome-terminal | head -1)"
xdotool windowfocus $window
xdotool key ctrl+shift+t
xdotool type "$*"
xdotool key Return
我这样使用它:
$ run-in-new-tab 'ls -l'
我发现这个想法Trustin Lee 的博客。
答案3
对我来说,lesmana 的答案不适用于多个选项卡(至少在 3.28.2 中)。因此,我找到了一种解决方法:
gnome-terminal --tab [-t title1] -- bash -c "gnome-terminal --tab [-t title2] -- bash -c \"ls; exec bash\"; ls -a; exec bash"
这将打开一个选项卡并再次执行 gnome-terminal 命令,该命令打开第二个选项卡并执行第二个选项卡的命令,返回到第一个选项卡,执行第一个选项卡的命令。