Czy „less” kończy działanie z niezerowym kodem stanu?


10

Chciałbym mieć następującą strukturę poleceń:

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

Spowodowałoby to wstrzymanie wykonywania podczas interakcji użytkownika less. W jaki sposób użytkownik może zmusić lessdo wyjścia ze stanem niezerowym, aby zapobiec followup-commanduruchomieniu?

Obecnie używam less 458 (POSIX regular expressions)

Odpowiedzi:


14

W prostym przypadku możesz poprosić, lessaby nie obsługiwać SIGINT, a następnie Control-Cgo zabije, a kod wyjścia będzie niezerowy. Zrób to z opcją -K.

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

Aby obejść starsze wersje less, możesz zrobić coś takiego

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

Jeśli nie masz -K, pomiń to, ale będziesz musiał zasygnalizować, a następnie wpisać quit.


less -Knadal zwraca mi kod wyjścia 0 na ctrl-c. v418 na Macu i v436 na Linuksie. less -K test; echo $? => 0
Matt

to smutne. jest w porządku dla v458 i v481 dla mnie. Strona podręcznika dla -Kwyraźnie mówi exit ... (ze statusem 2) . Czy twoja
Meuh

człowiek mówi tylko Causes less to exit immediately> greenwoodsoftware.com/less/news.443.html
Matt

Dodałem obejście dla starszych mniejszych.
Meuh

2
Pamiętaj, że ^Czabije także, check-statusjeśli nie jest jeszcze ukończony.
Stéphane Chazelas,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.