echo "abc" | less

less会通过STDIN接收4个字节“ a”,“ b”,“ c”,“ \\ x0A”,并以其自己的特殊方式(使用备用屏幕模式等)向用户显示“ abc”。

然后,用户在键盘上键入“ n”,通过在终端的左下角以反色写“找不到模式(按RETURN)”来减少响应。 我们还看到它在左侧打印了一系列的波浪号。

显然,很少有人需要接收“ n”字符的输入才能知道尝试搜索其搜索缓冲区中的内容。

它是从哪里得到“ n”的? 我将其输入终端,但是终端是否连接到less的STDIN? 如果是这样,难道不会只是将“ n”卡在显示缓冲区中吗? 好吧,它能够告诉我,但是我是否运行过echo "abc" | tail -f 例如echo "abc" | tail -f

如何弄乱这个文件描述符? 我正在构建一个perl程序,将鼠标转义码转换为键码,因此我可以制作一个特殊的管道或包装的命令/程序,其功能类似于寻呼机,但可以与鼠标交互。 但是,如果输入文件而不是终端本身的STDIN更少,我就无法弄清楚如何进入那里。 我真的希望我可以通过我的mapper程序通过管道传递交互式终端输出。

我也知道可以检查程序的STDIN是否为终端,但这对我没有帮助

  1. 是否完全连接了终端,或者
  2. 如何重定向/管道/修改可能不是STDIN的终端文件输入

更新 :好的,我做了一些挖掘,看起来我一直在寻找神奇的/dev/tty 希望有人可以告诉我如何解决它。

更新 :完善的问题:我本质上是否需要为我需要为其翻译事件的特定传呼机实例构建并运行pty 听起来这很痛苦,因为我需要所有这些流程管理和知识。 IO:Pty:Easy看起来很有希望。

===============>>#1 票数:0

如果你这样做

$ lsof -p <pid-of-less>

您会在底部看到类似

less    30875 user    3r   CHR    5,0      0t0    1037 /dev/tty

这表明你如何less已经打开控制终端/dev/tty读取命令。

  ask by Steven Lu translate from so

未解决问题?本站智能推荐: