在 gnome-terminal 中以编程方式打开选项卡,执行命令,并使选项卡保持打开状态

Mar*_*ark 12 linux shell-script gnome-terminal

我正在尝试编写一个命令,该命令将启动几个终端选项卡,在每个选项卡中执行某些操作,并在命令完成后让每个选项卡保持打开状态,以便我可以查看输出并在每个选项卡中键入更多命令

像这样:

gnome-terminal --tab -e "ls -a" --tab -e "ls"

但问题在于,一旦“ls”命令完成,选项卡就会关闭。有谁知道如何让标签保持打开状态?

les*_*ana 11

Gnome-terminal 可以执行命令或打开 shell,但不能同时执行。

有一种解决方法可以通过将命令和 shell 的后续调用封装到一个命令中来实现。

$ gnome-terminal -e "bash -c \"echo foo; echo bar; exec bash\""
Run Code Online (Sandbox Code Playgroud)

有关更多替代方案,请阅读我对堆栈溢出类似问题的回答:https : //stackoverflow.com/questions/3512055/avoid-gnome-terminal-close-after-script-execution/3531426#3531426


小智 10

如果您已安装xdotoolwmctrl安装,则以下 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 Code Online (Sandbox Code Playgroud)

我像这样使用它:

$ run-in-new-tab 'ls -l'
Run Code Online (Sandbox Code Playgroud)

我在Trustin Lee 的博客上发现了这个想法。