Parce que `less` quitte avec un code d'état différent de zéro?

10

Je voudrais avoir la structure de commande suivante:

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

Cela interromprait l'exécution pendant que l'utilisateur interagirait avec less. Comment l'utilisateur peut-il forcer la lesssortie avec un état différent de zéro pour empêcher l' followup-commandexécution?

J'utilise actuellement less 458 (POSIX regular expressions)

user2943160
la source

Réponses:

14

Dans le cas simple, vous pouvez demander de lessne pas gérer SIGINT, puis Control-Cle tuer et le code de sortie sera différent de zéro. Faites-le avec option -K.

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

Pour contourner les anciennes versions de less, vous pouvez faire quelque chose comme

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

Si ce n'est pas le cas -K, omettez-le, mais vous devrez également signaler et taper quit.

meuh
la source
less -Krenvoie toujours un code de sortie 0 sur ctrl-c pour moi. v418 sur mac et v436 sur linux. less -K test; echo $? => 0
Matt
C'est triste. c'est ok sur un v458 et v481 pour moi. La page de manuel pour -Kdit explicitement exit ... (avec le statut 2) . Est-ce le vôtre?
meuh
l'homme dit seulement Causes less to exit immediately> greenwoodsoftware.com/less/news.443.html
Matt
J'ai ajouté une solution de contournement pour un moins ancien.
meuh
2
Notez que ^Ccela tuera également check-statuss'il n'est pas déjà terminé.
Stéphane Chazelas