Verursachen, dass "less" mit einem Statuscode ungleich Null beendet wird?

10

Ich hätte gerne folgende Befehlsstruktur:

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

Dies würde die Ausführung unterbrechen, während der Benutzer mit interagiert less. Wie kann der Benutzer lessdas Beenden mit einem Status ungleich Null erzwingen , um die followup-commandAusführung zu verhindern ?

Ich benutze gerade less 458 (POSIX regular expressions)

user2943160
quelle

Antworten:

14

Im einfachen Fall können Sie darum bitten less, SIGINT nicht zu behandeln, es dann zu Control-Cbeenden und der Exit-Code ist ungleich Null. Tun Sie dies mit Option -K.

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

Als Problemumgehung für ältere Versionen von weniger können Sie so etwas tun

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

Wenn nicht -K, lassen Sie es weg, aber Sie müssen signalisieren und dann auch quit eingeben.

meuh
quelle
less -Kgibt für mich immer noch einen 0-Exit-Code auf Strg-C zurück. v418 unter Mac und v436 unter Linux. less -K test; echo $? => 0
Matt
Das ist traurig. Auf einem v458 und v481 ist es für mich in Ordnung. Auf der Manpage für -Kexplizit steht exit ... (mit Status 2) . Gehört dir?
Meuh
Mann sagt nur Causes less to exit immediately> greenwoodsoftware.com/less/news.443.html
Matt
Ich habe eine Problemumgehung für eine ältere weniger hinzugefügt.
Meuh
2
Beachten Sie, dass das ^Cauch tötet, check-statuswenn es noch nicht fertig ist.
Stéphane Chazelas