将数据管道到需要TTY(终端)的Linux程序

时间:2010-11-20 16:47:09

标签: linux terminal pipe tty pty

我在Linux中有一个程序,如果它的stdin / stdout不是TTY(终端设备),它就拒绝运行。是否有一个易于使用的工具,它将创建一个PTY,使用新创建的TTY启动程序,并通过stdin / stdout复制所有数据?

用例不是交互式的,而是脚本的。我正在寻找最轻量级的解决方案,最好不要创建TCP连接,也不需要安装太多其他工具和库。

1 个答案:

答案 0 :(得分:31)

unbuffer,期望(Ubuntu Lucid上的sudo apt-get install expect-dev)的一部分,可以欺骗程序认为它连接到TTY。

$ tty 
/dev/pts/3
$ echo | tty 
not a tty
$ echo | unbuffer tty 
/dev/pts/11