如何创建一个简单的 tmux conf 来分割窗口?

Eva*_*oll 7 tmux

我想创建一个简单的 tmux conf 来执行以下操作。

  1. 水平拆分窗口/窗格/whatever_stupid_terminology (hsplit)
  2. 在顶部窗格中打开 tail -f foo
  3. 在底部窗格中打开 tail -f bar

我怎样才能用 tmux 做到这一点。

这就是我所拥有的

#!/bin/sh
tmux new-session -s asdf -n myWindow
tmux select-window -t myWindow
tmux split-window "tail -f /var/log/apache2/samperror.log" 
tmux attach-session -t asdf
Run Code Online (Sandbox Code Playgroud)

我想不出任何工作。所以我知道这一切都错了。有史以来最不直观的 conf 文件之一

小智 8

这是一个快速而肮脏的命令行,可以实现您想要的:

$ tmux new-session -s asdf -n myWindow -d 'tail -f foo'\; \
       split-window -d 'tail -f bar'\; attach-session
Run Code Online (Sandbox Code Playgroud)

此解决方案有一些缺点:

  • 它不能很好地扩展(更多的命令和结果是不可理解的)。

  • 这两个 tail 命令不在交互式 shell 中运行,因此如果您同时退出它们,则窗口myWindow将被销毁(如果您还没有创建更多会话,则将与会话一起销毁。


这是一个 shell 脚本,它按照您尝试的方式工作。对我来说,考虑如何手动实现我的目标,然后将其转换为 tmux 命令总是最容易的。这可能不是最简单或最干净的方法,但它通常有效:

$ tmux new-session -s asdf -n myWindow -d 'tail -f foo'\; \
       split-window -d 'tail -f bar'\; attach-session
Run Code Online (Sandbox Code Playgroud)

如果经过一些尝试后您仍然不喜欢tmux命令和配置语法,您可能需要查看tmuxinator,这是一个 Ruby gem,可让您使用简化且更透明的语法管理 tmux 会话。


在我对没有 X 服务器的多个终端的回答中,您可以找到一些有用tmux资源的链接