使用shell脚本在新的终端选项卡中打开程序

时间:2012-10-18 18:48:26

标签: shell

这是我写的一个小shell脚本。

x-terminal-emulator -e "optirun yarpserver" &
sleep 6
x-terminal-emulator -e "optirun iCub_SIM" &
sleep 60
x-terminal-emulator -e "optirun simCartesianControl" &
sleep 30
x-terminal-emulator -e "optirun iKinCartesianSolver --context simCartesianControl/conf --part left_arm" &

这样做,为每个程序打开一个新终端。我想要做的是打开新的终端选项卡而不是终端。我应该怎么做呢?

2 个答案:

答案 0 :(得分:0)

我认为您最好的选择是使用 tmux 来完成这项工作。这里只是一个简单的例子,并逐步解释它。在这里,我只使用垂直分割,这可能会令您感到困惑,您应该阅读tmux联机帮助页以了解如何选择窗格

  • 首先在分离模式下创建一个新的tmux会话
  • 然后发送适当的命令以启动您的第一个程序
  • 创建新的垂直拆分
  • 发送适当的命令以启动您的第二个程序
  • 等......
tmux new-session -d -s foo
tmux send-keys -t foo 'optirun yarpserver' Enter
tmux split-window -v -t foo
tmux send-keys -t foo 'optirun iCub_SIM' Enter
tmux split-window -v -t foo
tmux send-keys -t foo 'optirun simCartesianControl' Enter
tmux split-window -v -t foo
tmux send-keys -t foo 'optirun iKinCartesianSolver --context simCartesianControl/conf --part left_arm' Enter

希望这会对你有所帮助。

答案 1 :(得分:0)

这个帖子真的很老但是如果有人来这里,我会留下一个我创建的bash脚本来启动多个标签来运行不同的命令:

#!/bin/bash

# Array of commands to run in different tabs
commands=(
    'tail -f /var/log/apache2/access.log'
    'tail -f /var/log/apache2/error.log'
    'tail -f /usr/local/var/postgres/server.log'
)

# Build final command with all the tabs to launch
set finalCommand=""
for (( i = 0; i < ${#commands[@]}; i++ )); do
    export finalCommand+="--tab -e 'bash -c \"${commands[$i]}\"' "
done

# Run the final command
eval "gnome-terminal "$finalCommand

只需在数组中添加命令并执行。

来源:http://joaoperibeiro.com/command-line-script-to-launch-multiple-tabs/