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)

użytkownik2943160
źródło

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.

meuh
źródło
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,