如何在脚本中启动 tmux 或 gnome-terminal 内的一组程序?

如何在脚本中启动 tmux 或 gnome-terminal 内的一组程序?

我想在 tmux 或 gnome-terminal 或 xfterminal 中同时启动几个命令,每个不同的选项卡都运行一个命令,并在该命令完成时关闭该选项卡。

也欢迎任何其他软件

我想发出一个脚本来完成这项工作,例如XX“cmd1”“cmd2”“cmd3”

答案1

打开 tmux 会话并启动第一个命令。然后在新窗口上启动更多命令,并在最后均匀分布窗口大小。

tmux \
  new-session  "command1 ; read" \; \
  split-window "command2 ; read" \; \
  split-window "command3 ; read" \; \
  split-window "command4 ; read" \; \
  select-layout even-vertical

每个命令后read都会导致窗口在命令完成后保持打开状态,以便您可以读取输出。

答案2

tmux new -d -s my-session 'echo window-1 pane-1; sleep 8' \; \
          split-window -d 'echo window-1 pane-2; sleep 6' \; down-pane \; \
            new-window -d 'echo window-2;        sleep 4' \; next-window \; \
                attach \;

上面是总体思路的运行示例...更多信息请参见:如何通过单个脚本在分屏 X 终端中运行 Streamripper 和 mplayer

答案3

如果程序的配置始终相同,您可以使用类似的工具蒂莫西尔

您需要使用配置(例如~/.teamocil/sample)进行创建,其中包含以下内容:

windows:
  - name: my-first-window
    root: ~/Projects/foo-www
    filters:
      before: "rvm use 1.9.2"
      after: "echo 'I am done initializing this split.'"
    splits:
      - cmd: "git status"
      - cmd: "bundle exec rails server --port 4000"
        width: 50
      - cmd:
          - sudo service memcached start
          - sudo service mongodb start
        height: 50

然后你可以运行:tmux new-session -d "teamocil sample" \; attach

答案4

有了gnome-terminal它就会:

gnome-terminal --window -e 'cmd1' --tab -e 'cmd2' --tab -e 'cmd3'

每个选项卡将在其命令完成后关闭。

相关内容