将新xterm的输出重定向回原始终端

时间:2014-01-15 20:11:06

标签: linux bash xterm

例如,我有一个非常简单的脚本ping.sh

#!/bin/bash
/usr/bin/xterm -e ping localhost

现在,ping的输出只显示在新的xterm中。我希望输出显示在原始终端(ping.sh的stdout)以及新的xterm中。有没有办法做到这一点?

PS:我为此争夺冠军。

2 个答案:

答案 0 :(得分:0)

看起来似乎很奇怪,但这可能有用:

#!/bin/bash
f=$(mktemp)
touch "$f"
tail -f "$f" &
/usr/bin/xterm -e "sh -c 'ping localhost 2>&1 | tee -a $f'"

答案 1 :(得分:0)

或者,可以使用命令tty获取连接到标准输入的终端的文件名,然后在新终端中使用tee将输出复制到旧终端。

/usr/bin/xterm -e "ping localhost | tee $(tty)"

当然,这仅在未使用重定向的stdin调用脚本时有效。

如果使用重定向的stdin调用脚本,则可以使用shell - How to get the real name of the controlling terminal? - Unix & Linux Stack Exchange中的解决方案。 readlink /proc/self/fd/1ps(需要一些输出解析)