当前位置:  开发笔记 > 编程语言 > 正文

使用Bash将stdin重定向到来自不同的终端

如何解决《使用Bash将stdin重定向到来自不同的终端》经验,为你挑选了2个好方法。

我想知道如何将脚本的stdin从当前的xterm会话(即/ dev/pts/0)重定向到使用bash运行的那个/ dev/pts/1?我有一个打开3个xterm窗口的bash脚本,我想从其中一个窗口获取输入,我无法弄清楚如何做到这一点.任何帮助表示赞赏!谢谢.



编辑(从下面移动 - OP提交此澄清作为答案)

我想我应该澄清一下我想做什么.我将从一个pty开始一个脚本,让我们说它是/ dev/pts/3.这个脚本将打开3个终端,比方说:/ dev/pts/0,/ dev/pts/1和/ dev/pts/2.这3个新的ptys是用户将要看到的.该脚本要求用户输入一些内容,我希望将用户的输入输入/ dev/pty/1,程序应该从那里获取它的信息.但是我试图这样做但它不起作用.这是我的代码片段.

exec/dev/pts/1
read answer

case $answer in
    y) echo "YES" ;;
    n) echo "NO"  ;;
    *) echo "y/n only!";;
esac

最后的case语句只是一个小占位符,看看输入是否真的有效.



1> 小智..:

也许你可以调整ttyecho你的需求?

# /dev/ttysXXX is the result of the tty command in another Terminal window
sudo ttyecho -n /dev/ttysXXX pwd

也许ttyecho可以与netcat(或nc)或ncat(它是nmap的一部分)结合用于不同ttys之间的通信?

有关更多信息,请参阅

将命令或数据发送到其他终端的实用程序(tty/pts) - (ttyecho)

使用命名管道创建读/写环境



2> rmeador..:

我怀疑这是不可能的.AFAIK,在不修改内核空间中的内容的情况下,不可能从tty(或pty)读取不是当前tty的输入.即使root也无法做到.我花了一些时间研究这个,我无法找到如何做到这一点,但我发现很多消息来源声称这是不可能的.这似乎是增加用户安全性/隐私的设计决策.


我认为这不值得投票,特别是没有评论告诉我我错了.现在,根据Ian Kelling的回答,我可能误解了OP的意图,在这种情况下我的答案可能不适用,但它仍然是真正的AFAIK.请参阅我对该答案的评论.
推荐阅读
LEEstarmmmmm
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有