我必须打开多个 xterm 窗口并稍后保存它们,以便在每个窗口中运行不同的命令,同时保持它们处于活动状态。
以下是一个例子(完全不正确):
term1= xterm -hold -title "term1"
term2= xterm -hold -title "term2"
term3= xterm -hold -title "term3"
对所有这些计算相同的命令:
for i in term1 term2 term3
do
$i -e "cd somewhere; source something"
done
然后对其中一些运行不同的命令:
$term1 -e "cd somewhere else; ./..."
$term2 -e "do other thing"
您可能注意到,我对 shell 脚本的经验很少,如果有人能帮助我,我会非常高兴。
编辑:添加示例以响应@dessert
免责声明:我目前正在 ROS 环境中工作。
该脚本应打开四个终端窗口(xterm、terminator 或默认终端);其中三个必须在同一文件夹中找到 bash 脚本,然后 roscd 到另一个,其中两个必须执行各种命令(一个必须启动 launch_file,而另一个必须运行脚本)。第四个必须 cd 到另一个文件夹,在该文件夹中找到 .bash,然后启动另一个 launch_file。如果第四个可以等待,那就更好了X发射前几秒。
答案1
使用函数!这种方法的优点是您可以在运行函数调用时向其添加其他可选的位置参数。
term1(){
xterm -hold -title "term1" "$@"
}
将其放入您的~/.bashrc
文件中并运行source ~/.bashrc
。其他命令也是同样的想法。
为了让终端保持“活跃”,你需要在最后生成 shell,即
term1 -e "cd place1; command 2;bash"
终端本身只是一个窗口,它没有单独的 shell 供您交互,因此,除非您生成一个 shell,否则您将无法获得交互式 shell。