我正在编写一个 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
看这个视频进行演示。