命令在当前终端中打开新选项卡并传递命令在新选项卡上运行

命令在当前终端中打开新选项卡并传递命令在新选项卡上运行

我知道这gnome-terminal将打开一个新窗口,我想知道有没有办法打开一个新选项卡,而不仅仅是一个新窗口?

在此之后,有没有办法将命令传递到新窗口,例如

gnome-terminal && cd /

这将导致

  1. 新航站楼启用
  2. 然后新终端运行cd /

[编辑] 这些答案会说如何将命令传递到另一个终端,但它没有回答如何打开一个新的标签。这正是我想要的,我不想打开多个终端。

答案1

GNOME Terminal没有提供通用的命令行解决方案来在现有窗口中打开新选项卡。

(为什么?因为它可能打开了多个窗口,它不知道在哪个窗口中打开新选项卡。你可能会说只有一个窗口,但如果实现了这样的功能,软件就需要保持一致,并且需要在有多个窗口时做一些合理的事情,而这实际上做不到。)

根据已提交的答案,存在一些黑客行为,例如模拟用户按下按键,但只能在 X.Org 下起作用,而不能在 Wayland 下起作用。

从即将推出的 3.28 版本开始,该命令gnome-terminal --tab将在 GNOME 终端窗口中打开一个新选项卡,从该选项卡执行该命令,如果此命令从 GNOME 终端内部执行。

(在这种情况下,它如何知道在哪个窗口中打开新选项卡?它通过在打开的每个终端中预先将某个环境变量设置为不同的值来知道。该环境变量让它找到所需的窗口。)

因此,针对您的具体情况,您可以这样做:

gnome-terminal --tab -- bash -c 'cd /; exec bash'

这样,一旦cd /完成,您就会在新选项卡中获得一个正在运行的 shell。如果您刚刚执行gnome-terminal --tab -- some command,则选项卡将在some command退出后立即关闭。通过使用bash -c 'some command; exec bash',选项卡将bash在完成后有一个正在运行的进程some command

答案2

您必须在终端中模拟按shift+ ctrl+ 。存在执行此操作的程序:T

如果你想从命令行执行此操作

例如,您可以使用 xdotool一个可以让您模拟键盘输入的程序。

sudo apt-get install xdotool

然后在终端中输入:

xdotool key ctrl+shift+t

这将模拟按下组合键。

相关内容