这就是我想要实现的目标:
- 我想打开一个包含五个选项卡的 gnome 终端
- 我想在每个选项卡中自动运行一组命令(5 – 10 个命令)
第一个选项卡:应设置清晰大小写视图,然后执行一个或多个命令
第二个选项卡:应登录服务器并执行一些命令
第三个选项卡:只执行一些命令
gnome-terminal --geometry=260x25-0+0 --tab -e "csh -c \"ct setview myViewName; cal\"" –tab --tab --tab
(工作正常,视图已设置,但此后没有执行任何命令)
我尝试这样做,并在下面的脚本中运行它:
gnome-terminal --geometry 125x18-0-26 --tab -t "some title" -e /home/ekido/Desktop/MyScripts/myScript
#!/usr/bin/expect
exec gnome-terminal --geometry 125x49-0+81 –tab
spawn ssh usert@server
expect "password"
send "*******\r"
expect "user@server100:~>"
send “some command\r"
expect "user@server100:~>"
send “some command"
interact
如果我exec gnome-terminal --geometry 125x49-0+81 –tab
从示例中删除行并从其他文件调用脚本,则它可以正常工作 - 我登录到服务器并执行所有命令。谁能帮我解决这个问题吗?
编写一个为每个选项卡调用的脚本不是一种选择,因为我最终将有 5 个终端,每个终端有 5-7 个选项卡,这意味着需要编写 25 到 30 个脚本(成本超过其帮助)在我的问题中)。
答案1
这似乎适用于我的机器:
gnome-terminal --geometry=260x25-0+0 --tab -e "bash -c 'date; read -n1'" --tab -e "bash -c 'echo meow; read -n1' " --tab --tab
请注意,一旦 -e 执行的进程运行完毕,它们就会终止。在这种情况下,bash 被加载,运行您传递给它的任何命令,并立即存在。我放入读取语句来等待用户输入。这样,在您按下某个键之前,这些选项卡不会关闭,这样您就可以在本示例中看到它。如果没有它们,看起来好像只打开了两个选项卡,因为另外两个选项卡执行和关闭的速度太快。
答案2
由于 bash 在命令完成后退出,因此您可以bash
在命令后调用另一个实例来获取交互式 shell:
gnome-terminal --tab -e "bash -c 'ps -ef; bash'" --tab -e "bash -c 'ls; bash'" --tab -e "bash -c 'top -n 1; bash'"
答案3
将下面另存为 script.sh
#!/usr/bin/env bash
me=$(realpath $0)
commands=(
"echo"
"ls -l && echo 'yes'"
"top"
"ps"
)
len=${#commands[@]}
if [ $# -eq 0 ];then
num=$len
else
num=$1
fi
n=$((len-num))
command=${commands[$n]}
num=$((num-1))
xdotool key ctrl+shift+t
if [ $num -gt -1 ]; then
sleep 1; xdotool type --delay 1 --clearmodifiers "$me $num; ${command}"; xdotool key Return;
fi
将 script.sh 添加到 $PATH 然后运行它
gnome-terminal -x script.sh
答案4
如果你想严格使用 GUI:
- (进入终结器后)右键单击终端区域,然后选择打开选项卡以打开所需的多个选项卡
- 或者: 单击终端区域右上角的图标(不是标题栏),然后选择“全部广播”或选择“新建组 - 选择一个名称” 对于每个选项卡,单击此图标并选择刚刚创建的组 单击此图标并选择“广播”团体
现在,在任何选项卡中键入的任何内容都将复制到所有选项卡。广播关闭会关闭该功能。
对于变体,请安装 KDE 的 konsole。双击底部的可用空间以创建多个选项卡。接下来,选择“编辑”->“将输入复制到”并选择要复制的方式。您在该选项卡中键入的所有内容(与终止符的“任何选项卡”相反)都将被复制到所有选定的选项卡。将输入复制到->无会关闭该功能。
最后一个变体是 clustersh。
如果您使用此功能,请非常小心(或避免)使用 vi - 它有太多的配置可能性,涉及如何解释某些击键以确保它会执行您想要的操作。如果您使用 bash 的搜索历史记录功能,情况也是如此(出于不同的原因) - 请务必在所有终端会话中找到相同的内容。