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)

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.


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.