在观看有关管道恶作剧的视频后,我尝试了以下命令。
man -k . | dmenu -l 20 | awk '{print $1}' | xargs -r man -Tpdf | zathura -
它基本上将要打印的手册页列表打印出来,供用户选择其中之一,然后使用xargs运行man -Tpdf %
(打印以从xargs的输入中输出手册页git的pdf),然后将pdf传递给pdf阅读器(zathura )。
问题在于(如您在视频中看到的),即使在dmenu中选择一个联机帮助页之前,pdf阅读器也会启动。而且,如果我单击Esc并没有选择任何内容,则pdf阅读器仍处于打开状态,根本没有显示任何文档。
如何使pdf阅读器(以及管道链中的任何其他命令)仅在其输入到达文件末尾或完全收到输入时才运行?或者,或者,在链接的命令之一返回非零退出状态之后,如何使管道链停止(这样,如果dmenu返回未选择选项的错误,则不会运行以下命令)?
pipefail
库萨兰丹达的回答中提到了bash的选择,我问哪个外壳。