假设我有一个产生大量输出和返回代码的命令,并且我需要在循环中频繁运行它(例如每分钟)。
是否可以将命令的输出发送到不同的 tmux 窗格?然后我可以拆分当前窗格并在其中一个窗格中查看长输出(可滚动),以及类似10:00 - 返回 7 \n 10:01 - 返回 5 \n 10:03 - 返回 9在当前版本中。
到目前为止,我只找到了执行命令在不同的 tmux 窗格中运行,这不是我所需要的。我只需要一种方法将命令的输出传送到另一个窗格,然后显示它。
答案1
在@Kamil Maciorowski 的帮助下,我明白了:
要学习的主要内容是:我可以将管道传输到另一个 tty;我传输到那里的任何内容都会出现在那里。
有了 Cygwin,我必须适应这个答案,因为通过管道传输到fd
shell 进程只会给我带来错误;相反,我必须查看符号fd
链接实际指向的位置——通过管道传输没有问题。
获取 shell 的 PID:
echo $$
看看它
fd
指向哪里:$ ls -l /proc/<PID>/fd/1
从结果字符串中
lrwxrwxrwx 1 ... ... ... ... /proc/<PID>/fd/1 -> /dev/pty4
取出最后一位,您就知道要管道到哪里。
放在一起:
此别名告诉将输出传输到当前窗格中的路径:
alias nameOfCurrentTTY='ls -l /proc/`echo $$`/fd/1 | sed "s/^.* -> //"'
更新/扩展:使用 bash 时,可以pty2
在提示符中添加\l
(来源)。