在bash中等效于select或poll

fal*_*tro 5 bash

是否可以在bash中对文件描述符进行选择或轮询?我想要做的事情的本质是:

mkfifo fifo
exec 3<fifo
PROMPT_COMMAND="while read -t 0 line; do echo \$line; done <&3"
Run Code Online (Sandbox Code Playgroud)

exec用于保持管道打开(否则它将在每个循环结束时关闭).从理论上讲,这会在每次提示之前输出任何进入管道的内容.但是,它似乎不起作用,因为-t0甚至没有尝试阅读.

-t 1 就像一个魅力,但这会在每个提示时强制延迟一秒,这不是我想要的.

最佳的是使用.2秒超时进行选择(如果我执行的命令反过来导致某些东西被写入管道,那么在我使用异步消息时肯定会有短暂的延迟),并且那种延迟我可以忍受.零超时可能没问题,那么我只是创建一个程序以具有亚秒级延迟.

有任何想法吗?

fal*_*tro 1

我今天偶然发现了这个,它实际上非常优雅地解决了我的问题。screen允许分割当前的终端窗口,我可以将窗口的一部分减少为几行,在其中保留输入,并仅cat fifo在窗口的另一部分中。

Screen 绝对比我所知的更震撼(仅分离就使其成为有史以来最好的工具之一)。