如何保存控制台输出并仍然显示它

如何保存控制台输出并仍然显示它

我需要排除 telnet 会话故障,并将结果保存发送给其他人。当我使用重定向时,我保存了会话的内容,但我无法在控制台上看到它。

如何管道化当前终端/程序并仍在当前控制台上显示它。

当我使用下面的命令时,我可以保存程序的输出,但我无法在控制台上看到它。

telnet ADDRESS PORT >> myoutputfile

我可以使用 telnet 输出选项,我正在寻找一种独立于命令的方法来执行此操作。

该问题特定于 telnet 会话,但适用于任何其他命令,包括那些没有“保存输出到文件选项”的命令。

答案1

最简单的解决方案是使用tee:-

telnet ADDRESS PORT | tee -a myoutputfile

这会将输出复制到标准输出和指定的文件名,并且-a附加选项,就像>>重定向一样。

答案2

有一个技巧是使用错误输出作为第二个缓冲区来输出到两个设备。

你的命令是:

telnet ADDRESS PORT >&2 2>>myoutputfile

这会将输出附加到 myoutputfile,并将输出的任何内容写入控制台。

>&2:将输出从流 1(控制台)复制到流 2(错误)

2>>:这确保来自流 2 的所有内容都被发送到文件。

如果您不想冒险将错误日志添加到文件中,请将两行中的 2 更改为 3。(>&3 3>>file

编辑:我刚刚注意到了 linux 标签。这是为 Windows 编写的,但它可能仍然有效。

相关内容