J'ai essayé la commande suivante après avoir regardé cette vidéo sur les manigances de tuyaux.
man -k . | dmenu -l 20 | awk '{print $1}' | xargs -r man -Tpdf | zathura -
Il imprime essentiellement une liste de pages de manuel dans dmenu pour que l'utilisateur en sélectionne une, puis il utilise xargs pour exécuter man -Tpdf %
(imprimer pour sortir un pdf de la page de manuel git à partir de l'entrée de xargs) et passer le pdf à un lecteur pdf (zathura ).
Le problème est que (comme vous pouvez le voir dans la vidéo) le lecteur pdf démarre avant même que je sélectionne une page de manuel dans dmenu. Et si je clique sur Échap et que je n'en sélectionne aucun, le lecteur pdf est toujours ouvert et ne montre aucun document.
Comment puis-je faire en sorte que le lecteur PDF (et toute autre commande d'une chaîne de tuyaux) ne s'exécute que lorsque son entrée atteint une fin de fichier ou lorsqu'il reçoit une entrée? Ou bien, comment puis-je faire en sorte qu'une chaîne de tuyaux s'arrête après qu'une des commandes chaînées renvoie un état de sortie non nul (de sorte que si dmenu renvoie une erreur pour ne pas avoir sélectionné une option, les commandes suivantes ne sont pas exécutées)?
pipefail
option de bash mentionnée dans la réponse de Kusalandanda.