kpc@pluto.arc.nasa.gov (kpc) (05/15/91)
I'm curious about perl and wonder what an equivalent to the following small sh safe-rm script would look like. How cleanly can it be written, I wonder, and how efficiently? Would you use perl? On a different subject, I wonder whether anybody has considered using something like perl as a shell. Please reply by email if you can. : # #copy # #non destructive cp and mv and ln. # #many improvements are possible, such as allowing arguments, figuring #out when and how to copy directories, cleaning it up, handling #special kinds of files and maybe file names, and making it #more efficient. # #getopts #CMD=/bin/`basename $0` trashdir=${TRASHDIR:?`no trashdir`} if [ "$1" = '-R' ] ##rm then /bin/mv $* $trashdir exit 0 elif [ "$1" = '-m' ] ##mv then CMD=/bin/mv shift elif [ "$1" = '-l' ] ##ln then CMD=/bin/ln shift else ##cp CMD=/bin/cp fi if [ $# -lt 2 ] then echo usage: cp file1 file2 or cp file+ dir 1>&2 echo usage: -m moves; -l hard-links. \(too few args\) 1>&2 exit 1 fi #${`eval $#`} for i do lastarg=$i done if [ ! -d $lastarg ] then if [ $# -ne 2 ] then echo usage: cp file1 file2 or cp file+ dir 1>&2 echo usage: -m moves; -l hard-links. \(too many args\) 1>&2 exit 1 fi if [ -f $2 -a -f $1 ] then #copy preserves permissions of target #this can be more efficient echo kcp: copying $2 to trash first. 1>&2 /bin/cp $2 $trashdir fi $CMD $1 $2 else for eachfile do if [ $eachfile != $lastarg ] then file=$lastarg/`basename $eachfile` if [ -f $file -a -f $eachfile ] then #mv and chmod? echo kcp: copying $file to trash first. 1>&2 /bin/cp $file $trashdir fi $CMD $eachfile $file fi done fi