robertd@ncoast.UUCP (Rob DeMarco) (09/15/87)
I wrote this as an enhanced feature of ls useful in an interactive shell. It is basically useless in a shell script - though, of course, it will work. Program follows: # ILS - SHELL VERSION 1.0 # WRITEN BY ROB DEMARCO (ncoast!robertd)# # Usage: # ils # ils file/dir1 file/dir2.... # ils -contents dir1 dir2.. +contents # ils -pager n # ils -80 # ils -exec file1 file2... +exec # ils -silent # # Take care of line flags export PATH || (echo "OOPS! This is not shell. Desperation time. I will feed my self to sh." ; sh $0 ; kill $$) perm=0 ; pager=0 ; width=40 ; execflag=0 ; contents=0 ; switch=0 ; line=0 ; cflag=0 ; sflag=0 if [ "$1" = "" ] ; then head="`ls | head -1`" shead="`echo \"$head\" | cut -c1`" if [ "$shead" = "-" ] ; then set -- * shift else set * fi if [ "$1" = "" ] ; then exit 3 fi fi while [ "`echo \"$1\"|cut -c1`" = "-" ];do if [ "$1" = "-pager" ] ; then shift pager=$1 starter="$starter -pager $1" shift continue fi if [ "$1" = "-silent" ] ; then sflag=1 starter="$starter -silent" shift continue fi if [ "$1" = "-80" ] ; then width=80 starter="$starter -80" shift continue fi if [ "$1" = -contents ] ; then contents=1 shift continue fi if [ "$1" = -exec ] ; then execflag=1 shift continue fi break done for file_dir in $@ ; do if [ "$file_dir" = -exec ] ; then execflag=1 shift continue fi if [ "$file_dir" = -contents ] ; then contents=1 shift continue fi if [ "$file_dir" = +exec ] ; then execflag=0 shift continue fi if [ "$file_dir" = +contents ] ; then contents=0 shift continue fi if [ $execflag = 0 ] ; then if [ -f "$file_dir" ] ; then echo "`wc $file_dir`\c" elif [ -d $file_dir -a $contents = 0 ] ; then echo "\t <DIR>\t\b\b$file_dir\c" elif [ -d $file_dir ] ; then ils $starter $file_dir/* else echo "ils:$file_dir not found." 1>&2 exit 4 fi if [ $width = 80 -a $switch = 1 -o $width = 40 ] ; then echo "\n\c" ; switch=0 elif [ $width = 80 ] ; then switch=1 ; echo "\t\c" fi if [ $pager -gt 0 ] ; then line=`expr $line + 1` if [ $line = `expr $pager - 1` ] ; then echo "*** Hit <RETURN> ***\c" read junk line=0 fi fi else if [ -f $file_dir ] ; then $file_dir ; status=$? elif [ -d $file_dir -a $contents = 1 ] ; then ils $starter -exec $file_dir/* elif [ -d $file_dir ] ; then cd $file_dir ; cflag=1 else echo "ils:$file_dir not found." 1>&2 exit 5 fi if [ "$cflag" = 0 -o $sflag = 0 ] ; then echo "\t\t$status\t$file_dir" else cflag=0 fi fi done if [ $width = 80 -a $switch = 0 ] ; then echo "\n" fi -- [> Rd -- North Coast Computer Resources(ncoast) - 216-781-6201 (or 781-6202) UUCP:decvax!cwruecmp!ncoast!robertd Sysop: NEODG (login "sbbs")