我正在使用类似于 shell 脚本的东西来启动多个软件,每个软件都需要自己的终端进行输出(具体来说,我是通过 roslaunch 命令启动多个 ROS 节点)。目前,它的运行方式如下:
xterm -e ./startProgram1
xterm -e ./startProgram2
xterm -e ./startProgram3
这将在新的终端中打开每个程序。我想保留此功能,但不想为每个程序设置一个新的单独终端,而是想在 Terminator 等管理器中创建一个新部分(即,不是打开新终端,而是在现有 Terminator 窗口中创建一个新部分,并将输出放在该新部分中)。这可能吗?由于 ROS 的特殊性(请参阅上面的链接),我只能指定“终端前缀”,即启动程序命令之前的命令的“xterm -e”部分。
答案1
您可以使用tmux
。这里我描述了如何使用四个面板启动 tmux。
就您而言,您可以使用并调整该脚本。
#!/bin/bash
session="mysession"
if tmux has-session -t "$session"; then
"Session $SESSION already exists."
exit 0
fi
# start ./startProgram1 here
tmux new-session -d -s "$session" mc
# start all other applications
# use -v for vertical split and -h for horizontal
tmux select-window -t "$session":0
# start ./startProgram2 here
tmux split-window -v nano
tmux select-window -t "$session":0
# start ./startProgram3 here
tmux split-window -h vi
tmux attach -t "$session"
目前的行为是