パイプがファイルの終わりを待つか、エラーの後に停止するようにするにはどうすればよいですか?

パイプがファイルの終わりを待つか、エラーの後に停止するようにするにはどうすればよいですか?

視聴後、次のコマンドを試しました。この動画配管いたずらについて。

man -k . | dmenu -l 20 | awk '{print $1}' | xargs -r man -Tpdf | zathura -

デフォルトでは、ユーザーがそのいずれかを選択できるようにmanページリストをdmenuに印刷し、xargsを使用して実行しman -Tpdf %(xargsの入力時にマニュアルページのgitのpdfをstdoutとして印刷します)pdfリーダー(zathura)。

問題は、(ビデオでわかるように)dmenuでマンページを選択する前にPDFリーダーが起動することです。 「Esc」をクリックして「なし」を選択すると、PDFリーダーが開いたままになり、文書はまったく表示されません。

PDFリーダー(およびパイプラインチェーン内の他のコマンド)が入力がファイルの終わりに達したとき、または入力が受信されたときにのみ実行されるようにするにはどうすればよいですか?または、リンクされたコマンドの1つがゼロ以外の終了ステータスを返した後にパイプラインチェーンを停止するにはどうすればよいですか? (したがって、オプションが選択されておらず、dmenuがエラーを返した場合、次のコマンドは実行されません.)

ベストアンサー1

PDFリーダー(およびパイプラインチェーン内の他のコマンド)が入力がファイルの終わりに達したとき、または入力が受信されたときにのみ実行されるようにするにはどうすればよいですか?

持つifnemoreutils(Debianではパッケージにあります):

ifne標準入力が空でない場合にのみ、次のコマンドを実行します。

あなたの場合:

… | ifne zathura -

おすすめ記事