: ########################################################################## # Shellscript: watch - watch the directory listing of a file # Version : 0.1 (beta) # Author : Heiner Steven (heiner.steven@odn.de) # Date : 11/04/94 # Category : File Utilities # SCCS-Id. : $Id: watch,v 1.1.1.1 1999/06/15 19:29:05 heiner Exp $ ########################################################################## # Description # ########################################################################## PN=`basename $0` # program name VER='0.1 (beta)' SleepTime=2 # seconds to wait between ls MaxTries=150 # only wait $MaxTries times Usage () { echo "$PN - watch a directory entry, $VER (stv '94) usage: $PN [-s] [-t sleeptime] [-n maxtries] file [...] -s not output -t wait sleeptime (default $SleepTime) seconds between listings -n exit if file did not change in maxtries (default $MaxTries) tries (0=wait forever)" >&2 exit 1 } Msg () { for i do echo "$PN: $i" >&2 done } Fatal () { Msg "$@"; exit 1; } Silent=no set -- `getopt 'hn:st:' "$@"` || Usage while [ $# -gt 0 ] do case "$1" in -s) Silent=yes;; -n) MaxTries="$2"; shift;; -t) SleepTime="$2"; shift;; --) shift; break;; -h) Usage;; -*) Usage;; *) break;; # First file name esac shift done [ $# -lt 1 ] && Usage countdown=$MaxTries while : do Line=`ls -ldgt "$@" 2>&1` if [ "$Line" != "$OldLine" ] then [ "$Silent" = no ] && echo "$Line" OldLine="$Line" countdown=$MaxTries elif [ $MaxTries -gt 0 ] then countdown=`expr $countdown - 1` [ "$Silent" = no ] && echo "$countdown \c" [ ${countdown:=0} -le 0 ] && exit 0 fi sleep $SleepTime done