将命令的输出传送到不同的 tmux 窗格

Bow*_*owi 5 tmux

想象一下,我有一个命令会产生大量输出和返回代码,并且我需要在循环中频繁运行它(例如每分钟)。

是否可以将命令的输出发送到不同的 tmux 窗格?然后我可以拆分当前窗格,并在其中一个窗格中查看长输出(可滚动),并在当前窗格中查看类似10:00 - Returned 7 \n 10:01 - Returned 5 \n 10:03 - Returned 9 的列表。

到目前为止,我只找到了在不同 tmux 窗格中执行命令的方法,这不是我需要的。我只需要一种方法将命令的输出通过管道传输到另一个窗格,然后由该窗格显示它。

Bow*_*owi 1

在@Kamil Maciorowski 的帮助下,我已经弄清楚了:

\n

主要要学习的是:我可以通过管道连接到另一个tty;我在那里管道的任何东西都会出现在那里

\n

对于我的 Cygwin,我必须调整这个答案,因为通过管道传输到fdshell 进程只会给我带来错误;相反,我必须查看fd符号链接实际指向 \xe2\x80\x93 的位置,管道没有问题。

\n
    \n
  1. 获取 shell 的 PID:

    \n
     echo $$\n
    Run Code Online (Sandbox Code Playgroud)\n
  2. \n
  3. 看看它的fd指向:

    \n
     $ ls -l /proc/<PID>/fd/1\n
    Run Code Online (Sandbox Code Playgroud)\n
  4. \n
  5. 从生成的字符串中lrwxrwxrwx 1 ... ... ... ... /proc/<PID>/fd/1 -> /dev/pty4取出最后一位,您就知道要传送到哪里。

    \n
  6. \n
\n
\n

放在一起

\n

此别名告诉路径通过管道传输到当前窗格中的输出:

\n
    alias nameOfCurrentTTY=\'ls -l /proc/`echo $$`/fd/1 | sed "s/^.* -> //"\'\n
Run Code Online (Sandbox Code Playgroud)\n
\n

更新/扩展:使用bash时,可以通过添加(pty2)在提示中显示当前的shell(例如)。\\l

\n