Changing my login directory

Karl Vogel vogelke+unix at pobox.com
Mon Jun 22 18:58:09 UTC 2009


>> On Mon, 22 Jun 2009 11:12:20 +0200, 
>> Ruben de Groot <mail25 at bzerk.org> said:

R> No need for any external programs. The following shell script [accepts
R> one key, no need to hit return]

R> % more readkey.sh
R>  echo -n "Press any key: "
R>  stty cbreak -echo
R>  KEY=$(dd bs=1 count=1 2>/dev/null)
R>  stty -cbreak echo
R>  echo
R>  echo "You pressed the \"$KEY\" key."

   Advantages of grabchars:

   * One program invocation, instead of running stty twice and dd once.

   * NOT having to deal with vendor-specific stty crap on different Unixen,
     which is a definite bite in the nether regions when trying to make
     things work on Solaris and BSD.

   * Erase/kill processing handled for you, so you can still do ^X or ^U
     deletion if you're entering multiple characters.

   * Handles mapping characters to upper/lowercase, timeouts, default
     answers if return is hit, and limiting answers to given character
     sets.  For example, "grabchars -c 0123456789 -n2 -t10" get two numbers
     with a 10-second timeout.

-- 
Karl Vogel                      I don't speak for the USAF or my company
Never do anything against conscience even if the state demands it.
                                                         --Albert Einstein


More information about the freebsd-questions mailing list