Home
   DIR <- 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                (________\  \
                                                 '-'
       
  HTML 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:
   DIR 2024-06-30 - bsleep (rewritten in C)