![tmux - 列出新窗口中所有窗口的输出最后一行](https://linux22.com/image/120223/tmux%20-%20%E5%88%97%E5%87%BA%E6%96%B0%E7%AA%97%E5%8F%A3%E4%B8%AD%E6%89%80%E6%9C%89%E7%AA%97%E5%8F%A3%E7%9A%84%E8%BE%93%E5%87%BA%E6%9C%80%E5%90%8E%E4%B8%80%E8%A1%8C.png)
我正在运行一个有 40 个窗口的 tmux 会话。我需要创建一个概览窗口,列出每个屏幕的最后一行,并将每个列表更新为相应窗口的输出。
答案1
这个想法是枚举所有窗口,或者更确切地说是所有窗格,因为一个窗口可以有多个窗口。然后捕获每个窗格的输出并显示捕获文本的最后一行。将其放入脚本中:
tmux list-windows -F '#I' |
while read w; do tmux list-panes -F '#P' -t $w |
while read p; do echo -n "${w}.${p}" ; tmux capture-pane -p -t "${w}.${p}" |
tail -n 1
done
done
假设您将此代码放入/some/file
之后,在 40 个窗口 tmux 会话中,创建新的监视窗口,然后运行
watch -n 1 'bash /some/file'
在那里。该echo -n "${w}.${p}" ;
部分将在行前面添加窗口和窗格索引,我发现了解输出来源非常有用。你可能不想要它。