パイプシェナンガンに関するこのビデオを見て、次のコマンドを試しました。
man -k . | dmenu -l 20 | awk '{print $1}' | xargs -r man -Tpdf | zathura -
それは基本的にユーザーがそれらの1つを選択するためにdmenuにマンページのリストを印刷し、次にxargsを使用して実行しman -Tpdf %
(xargsの入力からgitのマンページのpdfを標準出力して)、pdfリーダーにPDFを渡します(zathura )。
問題は、(ビデオで見られるように)dmenuで1つのマンページを選択する前でもpdfリーダーが起動することです。Escをクリックしてnoneを選択すると、pdfリーダーは開いたままで、ドキュメントがまったく表示されません。
入力がファイルの終わりに達したとき、または入力をまったく受け取ったときにのみPDFリーダー(およびパイプチェーン内の他のコマンド)を実行するにはどうすればよいですか?または、チェーンされたコマンドのいずれかがゼロ以外の終了ステータスを返した後にパイプチェーンを停止するにはどうすればよいですか(dmenuがオプションを選択しないためのエラーを返す場合、次のコマンドは実行されません)?
pipefail
です。Kusalandandaの回答で言及されているbashのオプションのため、どのシェルを尋ねました。