我想运行一个需要四个终端 A、B、C 和 D 的源代码。Ubuntu 中有一些用于运行源代码的命令。这些命令必须在终端中按顺序运行A, B, C, D, A, B and C
。实际上,这些命令是相互关联的,必须按照特定的顺序执行。
我想使用 shell 脚本自动运行源代码。我已经编写了一个可以打开多个终端的 shell 脚本,gnome-terminal
到目前为止运行良好:
gnome-terminal --title="A" -- bash -c "cd ~; ./myscript1; exec bash"
gnome-terminal --title="B" -- bash -c "cd ~; ./myscript2; exec bash"
gnome-terminal --title="C" -- bash -c "cd ~; ./myscript3; exec bash"
gnome-terminal --title="D" -- bash -c "cd ~; ./myscript4; exec bash"
现在我想回到终端A
并在其中运行另一个命令。
以下语句不起作用,它会打开一个新的终端!
gnome-terminal --title="A" -- bash -c "cd ~; command; exec bash"
在阅读了 Gnome-terminal 的手册页并在网上搜索后,我不明白如何做到这一点。
答案1
你不能,除非以一种黑客的方式使用按键模拟。例如xdotool
切换回第一个窗口,然后粘贴一些命令。
可能有更好的方法来实现您的目标。但是,为了给我们提供更好的建议,我们需要知道您真正想要实现的目标。
答案2
尝试运行以下演示A和乙
脚本master
创建一个临时文件(在)并在窗口中/tmp
启动a-script
和。b-script
xterm
安装
sudo apt install xterm
将所有脚本放入专用目录,使其可执行并运行
./master
master
:
#!/bin/bash
echo "$0 start"
b4a=$(mktemp)
nohup xterm -fa default -e ./a-script "$b4a" 2> /dev/null &
nohup xterm -fa default -e ./b-script "$b4a" 2> /dev/null &
if test -f "$b4a"
then
rm "$b4a"
fi
echo "$0 finish"
a-script
:
#!/bin/bash
echo "$0 start"
echo "$0 can do things here ..."
while ! test -f "$1"
do
sleep 1
echo -n "."
done
echo ""
echo "$0 can do things here ..."
rm "$1"
read -p "$0: Press enter to finish "
b-script
:
#!/bin/bash
echo "$0 start"
echo "$0 can do things here ..."
sleep 5
touch "$1"
read -p "$0: Press enter to finish "