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


4

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

linux  bash  shell  unix 

Answers:


4

首先,查找标识当前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                      |                           |

3

您可以将输出通过管道传输到由其他会话拖尾的日志文件。

在任何其他终端:

touch foo && tail -f foo

在“主”终端:

script.sh > foo

0

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

commands >>outputfile

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

tail -f outputfile

0

迟到但也许更好然后永远...... :-)

mkfifo ~/MyOutput           # Create the FIFO (Special file) 

./MyScript.sh > ~/MyOutput  # In the terminal/console 1
cat ~/MyOutput              # In another tty/console

来自info coreutils 'mkfifo invocation'

“FIFO”是一种允许独立进程进行通信的特殊文件类型。一个进程打开FIFO文件进行写入,另一个进程用于读取,之后数据可以像shell中或通常的匿名管道一样流动。

附注:

  • 最好不要在你的主目录中创建FIFO :-)
  • FIFO对于同一个进程,您可以拥有多个进程(std out,std err)。
  • 直到你不会要求FIFOs它的转储将保留所有输出。
    正如你第一次提出的那样,它将全部清除
  • 您可以重定向(或追加)到另一个文件 cat MyOutput >> NewRealFile
  • 您也可以cat MyOutput从其他终端使用!
  • 警告:如果您要求2个不同的程序(或实例)将输出重定向到相同FIFOs的流量将被合并(没有先验的方法来区分该行来自哪个程序)。
  • 警告:如果您询问2次或更多次(可能来自不同的终端),则会为每个请求分配一行,将输出分配给请求者。
  • 它可以有更复杂的用途:如何正确启动程序并使其可以在以后阶段重定向其运行输出(stdout和stderr)?

0

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

$ tty
/dev/pts/0

$ tty
/dev/pts/1

假设这些TTY,要将第一个stdout重定向到第二个,请在第一个终端中运行:

exec 1>/dev/pts/1

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

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

exec 1>/dev/pts/0

有关演示,请参阅此视频

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.