我倾向于在屏幕上使用多个终端窗口来运行 tmux,其中运行着各种不同的程序。我经常想知道“这个后台进程在哪里运行?”我可以轻松找到它正在运行的 tty 名称(ps 会显示它),但要弄清楚要查看哪个窗口却非常困难。
我的想法是“让我们使用 tmux 状态行来显示这个!”。所以我尝试了以下命令
set-option -g window-status-format "#(tty):#W#F"
但不幸的是,这似乎只是显示not a tty
在状态行中,而不是窗口的 tty 中。有什么好方法可以让它显示 tty 名称吗?
答案1
Tmux 是一个终端多路复用器。您的 tmux 服务器以窗格形式向在 tmux“内部”运行的进程提供 tty(注意:未拆分为窗格的 tmux 窗口只是一个大的 tmux 窗格)。Tmux 客户端通常使用终端仿真器或虚拟终端提供的 tty。进程使用各自的 tty,tmux 服务器管理数据流,最终您会在其 tty 中看到 tmux 客户端显示的窗口、窗格和状态行。
不过,tmux 服务器本身并未连接到任何 tty。该服务器负责刷新状态行。您的 tmux 服务器每次都会调用tty
您指定的命令并获取结果。not a tty
看来您想知道窗格的 tty,而不是 tmux 客户端使用的 tty。请尝试以下 tmux 命令:
set-option -g window-status-format "#{pane_tty}:#W#F"
笔记:
- 还有
window-status-current-format
。您可能也想修改它。 - 状态行中窗口列表中的每个条目都与一个 tmux 窗口相关联。Tmux 窗口与 ttys 没有直接关联。窗口是一组窗格及其布局。任何 tmux 窗口都可以分成两个或多个窗格。
#{pane_tty}
在我们的格式中,将显示相应窗口中最近使用的窗格的 tty。只有当您的每个 tmux 窗口都是一个大窗格时,您的整个想法才会真正发挥作用。
答案2
如上所述,您可以尝试在窗口状态格式中使用 pane_tty 格式变量来显示窗口活动窗格的 tty 名称。这是一个使用 pane_tty 变量设置窗口状态格式的示例命令:
set-option -g window-status-format "#(pane_tty): #W#F"
这将在状态行中显示 tty 名称,后跟窗口名称和任何标志(如果存在)。您可以根据自己的喜好自定义格式。
请注意,这将仅显示窗口中活动窗格的 tty 名称。如果您有多个窗格运行具有不同 tty 的不同进程,则需要切换到每个窗格才能在状态行中看到 tty 名称。