9

I would like to have the following command structure:

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

This would pause the execution while the user interacted with less. How can the user force less to exit with a non-zero status to prevent followup-command from running?

I am currently using less 458 (POSIX regular expressions)

14

In the simple case, you can ask less not to handle SIGINT, then Control-C will kill it and the exit code will be non-zero. Do this with option -K.

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

As a workaround for older versions of less, you can do something like

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

If you don't have -K, omit it, but you'll have to signal and then type quit too.

  • less -K still returns a 0 exit code on ctrl-c for me. v418 on mac and v436 on linux. less -K test; echo $? => 0 – Matt Jun 6 '16 at 4:21
  • that's sad. it's ok on a v458 and v481 for me.The man page for -K explicitly says exit ...(with status 2). Does yours? – meuh Jun 6 '16 at 5:01
  • man only says Causes less to exit immediately > greenwoodsoftware.com/less/news.443.html – Matt Jun 6 '16 at 7:06
  • I've added a workaround for an older less. – meuh Jun 6 '16 at 7:31
  • 2
    Note that the ^C will also kill check-status if it's not finished already. – Stéphane Chazelas Jun 6 '16 at 8:35

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.