tmux:在面板中运行命令,并在bash脚本中捕获结果

tmux:在面板中运行命令,并在bash脚本中捕获结果,bash,tmux,Bash,Tmux,使用tmux,我希望从一个窗格运行命令,并捕获命令的输出 例如,假设在窗格7中有一个SSH会话正在运行,我想在窗格2中运行一个bash脚本来从窗格7中捕获主机名 这可能吗 我知道我可以像这样发送钥匙 $ tmux send-keys -t 7 "hostname" Enter 但我不确定如何将窗格7的输出捕获到bash变量中 我不介意它是否显示在屏幕上(不一定要在后台出现) 编辑:请注意,主机名只是一个示例-我还想针对每个窗格运行其他脚本虽然我并不是在寻找什么,但tmux命令似乎捕获了窗格的显

使用tmux,我希望从一个窗格运行命令,并捕获命令的输出

例如,假设在窗格7中有一个SSH会话正在运行,我想在窗格2中运行一个bash脚本来从窗格7中捕获主机名

这可能吗

我知道我可以像这样发送钥匙

$ tmux send-keys -t 7 "hostname" Enter
但我不确定如何将窗格7的输出捕获到bash变量中

我不介意它是否显示在屏幕上(不一定要在后台出现)


编辑:请注意,主机名只是一个示例-我还想针对每个窗格运行其他脚本

虽然我并不是在寻找什么,但tmux命令似乎捕获了窗格的显示输出,我当然可以在运行命令后运行它

example.sh
作为
捕获窗格
的替代方法,您可以类似地使用
管道窗格
。它通常用于日志记录。您可以给它一个命令来将所有输出导入,或者根本不给它任何命令来停止管道。所以你最终会得到这样的结果

tmux pipe-pane -t 7 'cat >/tmp/capture'
tmux send-keys -t 7 'hostname' Enter
sleep 1
tmux pipe-pane -t 7    # stops piping 
IT=$(</tmp/capture)
tmux管道窗格-t7'cat>/tmp/capture'
tmux发送键-t 7“主机名”输入
睡眠1
tmux管道面板-t 7#停止管道

它=$(为什么不在配置文件中创建一个函数,该函数的任务是连接到远程服务器并获取一些数据?这样,无论您在哪个窗格中,都可以获取有关服务器的特定数据。感谢您的反馈-
hostname
只是一个示例,但总体思路是在另一个窗格中捕获运行命令的输出,其中,ENV变量可以是不同的、不同的文件夹或SSH会话—在tmux窗格级别捕获输出。
tmux pipe-pane -t 7 'cat >/tmp/capture'
tmux send-keys -t 7 'hostname' Enter
sleep 1
tmux pipe-pane -t 7    # stops piping 
IT=$(</tmp/capture)
IT=$(sed '1d;$d;s/\r//' </tmp/capture)