将命令的输出通过管道传输到不同的 tmux 窗格

将命令的输出通过管道传输到不同的 tmux 窗格

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

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

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

答案1

在@Kamil Maciorowski 的帮助下,我明白了:

要学习的主要内容是:我可以将管道传输到另一个 tty;我传输到那里的任何内容都会出现在那里

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

  1. 获取 shell 的 PID:

     echo $$
    
  2. 看看它fd指向哪里:

     $ ls -l /proc/<PID>/fd/1
    
  3. 从结果字符串中lrwxrwxrwx 1 ... ... ... ... /proc/<PID>/fd/1 -> /dev/pty4取出最后一位,您就知道要管道到哪里。


放在一起

此别名告诉将输出传输到当前窗格中的路径:

    alias nameOfCurrentTTY='ls -l /proc/`echo $$`/fd/1 | sed "s/^.* -> //"'

更新/扩展:使用 bash 时,可以pty2在提示符中添加\l(来源)。

相关内容