Ho provato il seguente comando dopo aver visto questo video su pipe shenanigans.
man -k . | dmenu -l 20 | awk '{print $1}' | xargs -r man -Tpdf | zathura -
Fondamentalmente stampa un elenco di manpage in dmenu per l'utente di selezionarne una, quindi utilizza xargs per eseguire man -Tpdf %
(stampa per stdout un pdf del manpage git dall'input di xargs) e passare il pdf a un lettore pdf (zathura ).
Il problema è che (come puoi vedere nel video) il lettore pdf inizia anche prima di selezionare una manpage in dmenu. E se faccio clic su Esc e non seleziono nessuno, il lettore pdf è ancora aperto e non mostra alcun documento.
Come posso far funzionare il lettore pdf (e qualsiasi altro comando in una catena di pipe) solo quando il suo input raggiunge un end-of-file o quando riceve un input? Oppure, in alternativa, come posso arrestare una catena di condotte dopo che uno dei comandi concatenati restituisce uno stato di uscita diverso da zero (in modo che se dmenu restituisce un errore per non selezionare un'opzione, i seguenti comandi non vengono eseguiti)?
pipefail
dell'opzione di bash menzionata nella risposta di Kusalandanda.