Próbowałem następującego polecenia po obejrzeniu tego filmu na shenanigans.
man -k . | dmenu -l 20 | awk '{print $1}' | xargs -r man -Tpdf | zathura -
Zasadniczo drukuje listę stron podręcznych do dmenu, aby użytkownik mógł wybrać jedną z nich, a następnie używa xargs do uruchomienia man -Tpdf %
(drukuj, aby ustawić pdf git strony podręcznika z wejścia xargs) i przekazać pdf do czytnika pdf (zathura ).
Problem polega na tym, że (jak widać na filmie) czytnik pdf uruchamia się jeszcze zanim wybiorę jedną stronę podręczną w dmenu. A jeśli kliknę Esc i nie wybiorę żadnego, czytnik pdf jest nadal otwarty i nie pokazuje żadnego dokumentu.
Jak sprawić, by czytnik pdf (i dowolne inne polecenie w łańcuchu potoków) działał tylko wtedy, gdy jego dane wejściowe osiągną koniec pliku lub gdy w ogóle otrzyma dane wejściowe? Lub, alternatywnie, w jaki sposób mogę zatrzymać łańcuch potoków, gdy jedno z połączonych poleceń zwróci niezerowy status wyjścia (tak, że jeśli dmenu zwróci błąd braku wyboru opcji, poniższe polecenia nie zostaną uruchomione)?
pipefail
opcję basha wymienioną w odpowiedzi Kusalandandy.