Я спробував наступну команду після перегляду цього відео на трубах шнаніганів.
man -k . | dmenu -l 20 | awk '{print $1}' | xargs -r man -Tpdf | zathura -
В основному він друкує список manpages для dmenu, щоб користувач вибрав один з них, потім він використовує xargs для запуску man -Tpdf %
(print для stdout pdf manit git із введення xargs) і передає pdf у читач pdf (zathura ).
Проблема полягає в тому, що (як ви бачите на відео) зчитувач pdf запускається ще до того, як я виберу одну сторінку в dmenu. Якщо я натискаю клавішу Esc і не вибираю жодну, програма для читання PDF-файлів все ще відкрита, не показуючи жодного документа.
Як я можу змусити зчитувач pdf (та будь-яку іншу команду в ланцюзі труб) запускатись лише тоді, коли його вхід доходить до кінця файлу або коли він взагалі отримує вхід? Або, як варіант, як я можу змусити ланцюг труб зупинитися після того, як одна з ланцюгових команд поверне ненульовий статус виходу (так що, якщо dmenu повертає помилку за не вибір параметра, наступні команди не виконуються)?
pipefail
варіант Баша, згаданий у відповіді Кусаландданда.