Nguyên nhân `less` để thoát với mã trạng thái khác không?


10

Tôi muốn có cấu trúc lệnh sau:

command && check-status | less && followup-command

Điều này sẽ tạm dừng thực thi trong khi người dùng tương tác với less. Làm thế nào người dùng có thể buộc lessthoát ra với trạng thái khác không để ngăn không cho followup-commandchạy?

Tôi hiện đang sử dụng less 458 (POSIX regular expressions)

Câu trả lời:


14

Trong trường hợp đơn giản, bạn có thể yêu cầu lesskhông xử lý SIGINT, sau đó Control-Csẽ giết nó và mã thoát sẽ khác không. Làm điều này với tùy chọn -K.

command && check-status | less -K && followup-command

Là một giải pháp cho các phiên bản cũ ít hơn, bạn có thể làm một cái gì đó như

command && bash -c 'trap "exit 1" int;check-status | less -K;' && followup-command

Nếu bạn không có -K, hãy bỏ qua nó, nhưng bạn sẽ phải báo hiệu và sau đó gõ thoát.


less -Kvẫn trả về mã thoát 0 trên ctrl-c cho tôi. v418 trên mac và v436 trên linux. less -K test; echo $? => 0
Matt

buồn quá Nó ổn trên v458 và v481 đối với tôi. Trang người đàn ông -Knói rõ ràng là thoát ... (với trạng thái 2) . Có phải của bạn không?
meuh

người đàn ông chỉ nói Causes less to exit immediately> greenwoodsoftware.com/less/news.443.html
Matt

Tôi đã thêm một cách giải quyết cho một ít cũ hơn.
meuh

2
Lưu ý rằng ^Ccũng sẽ giết check-statusnếu nó chưa kết thúc.
Stéphane Chazelas
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.