也许我在问题中没有使用正确的术语,因此我将在这里用一个清晰的例子进行详细说明。
您可以将命令的输出发送到命令行实用程序fzf,如果前者仍在运行,fzf会让您知道它显示“加载图标”并实时刷新。举个清楚的例子:
for i in `seq 1 5`; do echo $i; sleep 1 ; done | fzf
现在,我想了解 fzf 如何知道流尚未完成。相关但更进一步,我希望能够做同样的事情,但传递一个文件。
for i in `seq 1 5`; do echo $i; sleep 1 ; done > file.txt &
如何将
file.txt
的内容发送live到fzf?我已经尝试过 fzf < file.txt
但它发送了文件的静态版本,就像编写命令时一样。它不让它活着。
unix中的程序如何知道输入流是否“结束”?
当
read
系统调用返回时 0
。
fzf 如何知道流尚未结束
fzf
对“流”一无所知。 fzf
调用 read
系统调用并停留在系统调用中,直到有东西要返回。
如何将 file.txt 的内容实时发送到 fzf?
通常,
tail -f
用于在输出内容时“跟随”文件末尾。