<- Back
bsleep - Breakable Sleep
========================

bsleep is a sleep that breaks as soon as you press 'b'.
It makes clever use of the -t (timeout) and -n (read n bytes) parameters
of the bash built-in: read.

bsleep can be used to quickly test something and chain a quick undo
command right after you initial command.

example usage:
      echo "do something"; bsleep; echo "quickly undo"

The other day I was tinkering with an iptables ruleset and needed exactly
that. So quickly hacked it quick'n'dirty (originally as a one-liner).

The Bash-Shellfunction:

      function bsleep () {
              local c=1;
              local INPUT;
              while [ ! "$INPUT" == "b" ]; do
                      printf "$c "; # comment out if you prefer silent
                      c=$(($c+1));
                      read -s -n1 -t1 INPUT;
              done;
              printf "\n";
      }



                              z
                             z
                              Z
                    .--.  Z Z
                   / _(c\   .-.     __
                  | / /  '-;   \'-'`  `\______
                  \_\/'/ __/ )  /  )   |      \--,
                  | \`""`__-/ .'--/   /--------\  \
                   \\`  ///-\/   /   /---;-.    '-'
             jgs                (________\  \
                                          '-'
asciinema

P.S.:
In general I strife to get rid of bashisms in my daily doing. I noticed
that the built-in read functions of some POSIX shells (e.g. like ksh) do
not provide -t or -n.
So I aim to write a little bsleep-program in C in the future.

Update:
2024-06-30 - bsleep (rewritten in C)