# # Emulate dirname(1) # fn DirName { ~ $1 () && { echo DirName: too few arguments >[1=2] ; return 1 } ~ $1 '' .* && { echo . ; return } ~ $1 / && { echo / ; return } x=() y=() { x = ``(/) {echo -n $1} ~ $1 /* && ~ $x(2) () && { echo / ; return } ~ $x(2) () && { echo . ; return } * = $x while (!~ $#* 0 1) { y = $y/$1 ; shift } echo $y } } # # Emulate basename(1) # fn BaseName { ~ $1 () && { echo BaseName: too few arguments >[1=2] ; return 1 } ~ $1 '' / && return x = () { x = ``(/) {echo -n $1} echo $x($#x) } } # End of stuff.