plan9fox/rc/bin/ape/ls
2011-03-30 18:38:15 +00:00

60 lines
1 KiB
Bash
Executable file

#!/bin/rc
# flags common to GNU and BSD ls
# -A all except . and ..
# -C force mc
# -F usual
# -H follow symlinks
# -L follow symlinks
# -R recursive list
# -U unsorted (gnu)
#
# -a include .files
# -c show ctime
# -d dirs
# -f no sorting
# -l long
# -p put slash after dir (-F)
# -r reverse
# -s sizes
# -t time sort
# -u utime
# -1 single-column
flagfmt='A,C,F,H,L,R,U,a,c,d,f,l,p,r,s,t,u,1'
args='[file ...]'
if(! ifs=() eval `{aux/getflags $*}){
aux/usage
exit usage
}
fn fixlong {
echo total 1000
/$cputype/bin/sed 's/^(.).(.........) . [0-9]+ /\1\2 1 /'
}
post=cat
all=()
# ignore -A
if(~ $flagC 1) post=mc
if(~ $flagF 1) all=($all -F)
# ignore -H, -L
# save -R for later
if(~ $flagU 1) all=($all -n)
# ignore -a, -c
if(~ $flagd 1) all=($all -d)
if(~ $flagf 1) all=($all -n)
if(~ $flagl 1) { all=($all -l); post=fixlong }
if(~ $flagp 1) all=($all -F)
if(~ $flagr 1) all=($all -r)
if(~ $flags 1) all=($all -s)
if(~ $flagt 1) all=($all -t)
if(~ $flagu 1) all=($all -u)
# ignore -1
/$cputype/bin/ls $all $* | $post