当我打开 gnome 终端时,是否有一个命令允许我以编程方式查询该 gnome 终端:
gnome 终端打开了多少个选项卡?
每个选项卡的 pwd 是多少?
我在晚上丢失了虚拟机,因此我想编写一个脚本来存储上述信息,然后在第二天登录时以编程方式重新打开所有 gnome 终端。
答案1
dbus
您可以使用;枚举打开的窗口和选项卡直接进入选项卡:
dbus-send --session --dest="org.gnome.Terminal" --print-reply /org/gnome/Terminal org.freedesktop.DBus.ObjectManager.GetManagedObjects | grep -c /screen/
会告诉你有多少个是开放的。
如果您的 shell 与 VTE 合作,GNOME 终端将了解选项卡中每个正在运行的 shell 的最后当前目录(如果不是 shell,则不是每个选项卡中运行的叶进程的当前目录);但我不认为有办法通过总线检索它。
你什么能do 列出所有父进程为 GNOME Terminal 的“leaf”进程的当前工作目录:
pstree -T -p $(pgrep gnome-terminal) |
sed -E 'sX^.*\(([0-9]+)\)$X/proc/\1/cwdX' |
xargs readlink -f
这不会告诉您哪个选项卡在哪里,但我不确定这是否重要(据我所知,没有办法确定每个选项卡正在运行什么)。您可以使用此方法的变体来找出正在运行的内容,而不仅仅是当前的工作目录。