将 shell 命令输出重定向到另一个 konsole shell

将 shell 命令输出重定向到另一个 konsole shell

我正在编写一个 shell 脚本,我想在脚本中写入命令,但将输出重定向到其他 konsole 会话。(使用 kde)

答案1

首先,查找标识当前 tty 会话的数字;让我们将该数字视为X

| terminal 1               | terminal 2                |
 ------------------------------------------------------
| $ tty                    | $                         |
| /dev/pts/X               |                           |

然后,使用给定的数字写入选定的 tty:

| terminal 1               | terminal 2                |
 ------------------------------------------------------
| $ tty                    | $ echo "foo" > /dev/pts/X |
| /dev/pts/X               |                           |

它会产生:

| terminal 1               | terminal 2                |
 ------------------------------------------------------
| $ tty                    | $ echo "foo" > /dev/pts/X |
| /dev/pts/X               |                           |
| foo                      |                           |

答案2

您可以将输出传送到由其他会话跟踪的日志文件。

在任何其他终端:

touch foo && tail -f foo

在“主”终端中:

script.sh > foo

答案3

将终端输出打印到文件,而不是当前所在的终端:

commands >>outputfile

在新的终端中,使用 tail 显示输出文件的内容,并在添加更多文本时自动更新它:

tail -f outputfile

答案4

使用tty每个终端中的命令来识别它们:

$ tty
/dev/pts/0

$ tty
/dev/pts/1

假设这些 TTY,要将第一个的标准输出重定向到第二个,请在第一个终端中运行此命令:

exec 1>/dev/pts/1

注意:现在每个命令输出将显示在 pts/1

要恢复 pts/0 的默认行为 stdout:

exec 1>/dev/pts/0

这个视频进行演示。

相关内容