Tôi đã thử các lệnh sau sau khi xem video này trên shenanigans ống.
man -k . | dmenu -l 20 | awk '{print $1}' | xargs -r man -Tpdf | zathura -
Về cơ bản, nó in một danh sách các trang đến dmenu để người dùng chọn một trong số đó, sau đó nó sử dụng xargs để chạy man -Tpdf %
(in ra để xuất bản pdf của manpage git từ đầu vào của xargs) và chuyển pdf sang trình đọc pdf (zathura ).
Vấn đề là (như bạn có thể thấy trong video) trình đọc pdf bắt đầu ngay cả trước khi tôi chọn một trang trong dmenu. Và nếu tôi nhấp vào Esc và không chọn, trình đọc pdf vẫn mở và không hiển thị tài liệu nào cả.
Làm cách nào tôi có thể làm cho trình đọc pdf (và bất kỳ lệnh nào khác trong chuỗi ống) chỉ chạy khi đầu vào của nó đạt đến cuối tệp hoặc khi nào nó nhận được đầu vào? Hoặc, thay vào đó, làm thế nào tôi có thể làm cho một chuỗi ống dừng lại sau khi một trong các lệnh bị xiềng xích trả về trạng thái thoát khác không (để nếu dmenu trả về lỗi vì không chọn tùy chọn, các lệnh sau sẽ không chạy)?
pipefail
tùy chọn của bash được đề cập trong câu trả lời của Kusalandanda.