xref: /plan9/rc/bin/ape/ls (revision 2a7824990d644563b93ed8d4abf1407c40b2087a)
1b4ed3b92SDavid du Colombier#!/bin/rc
2b4ed3b92SDavid du Colombier
3b4ed3b92SDavid du Colombier# flags common to GNU and BSD ls
4b4ed3b92SDavid du Colombier
5b4ed3b92SDavid du Colombier# -A	all except . and ..
6b4ed3b92SDavid du Colombier# -C	force mc
7b4ed3b92SDavid du Colombier# -F	usual
8b4ed3b92SDavid du Colombier# -H	follow symlinks
9b4ed3b92SDavid du Colombier# -L	follow symlinks
10b4ed3b92SDavid du Colombier# -R	recursive list
11b4ed3b92SDavid du Colombier# -U	unsorted (gnu)
12b4ed3b92SDavid du Colombier#
13b4ed3b92SDavid du Colombier# -a	include .files
14b4ed3b92SDavid du Colombier# -c	show ctime
15b4ed3b92SDavid du Colombier# -d	dirs
16b4ed3b92SDavid du Colombier# -f	no sorting
17*2a782499SDavid du Colombier# -i	inode numbers
18b4ed3b92SDavid du Colombier# -l	long
19b4ed3b92SDavid du Colombier# -p	put slash after dir (-F)
20b4ed3b92SDavid du Colombier# -r	reverse
21b4ed3b92SDavid du Colombier# -s	sizes
22b4ed3b92SDavid du Colombier# -t	time sort
23b4ed3b92SDavid du Colombier# -u	utime
24b4ed3b92SDavid du Colombier# -1	single-column
25b4ed3b92SDavid du Colombier
26b4ed3b92SDavid du Colombier
27*2a782499SDavid du Colombierflagfmt='A,C,F,H,L,R,U,a,c,d,f,i,l,p,r,s,t,u,1'
28b4ed3b92SDavid du Colombierargs='[file ...]'
29b4ed3b92SDavid du Colombier
30b4ed3b92SDavid du Colombierif(! ifs=() eval `{aux/getflags $*}){
31b4ed3b92SDavid du Colombier	aux/usage
32b4ed3b92SDavid du Colombier	exit usage
33b4ed3b92SDavid du Colombier}
34b4ed3b92SDavid du Colombier
35b4ed3b92SDavid du Colombierfn fixlong {
36b4ed3b92SDavid du Colombier	echo total 1000
37816336a7SDavid du Colombier	/$cputype/bin/sed 's/^(.).(.........) . [0-9]+ /\1\2 1 /'
38b4ed3b92SDavid du Colombier}
39b4ed3b92SDavid du Colombier
40*2a782499SDavid du Colombierfn qid2inode {
41*2a782499SDavid du Colombier	/$cputype/bin/sed 's/^\(([^ ]+).*\) /\1 /'
42*2a782499SDavid du Colombier}
43*2a782499SDavid du Colombier
44b4ed3b92SDavid du Colombierpost=cat
45*2a782499SDavid du Colombierpost2=cat
46b4ed3b92SDavid du Colombier
47b4ed3b92SDavid du Colombierall=()
48b4ed3b92SDavid du Colombier# ignore -A
49b4ed3b92SDavid du Colombierif(~ $flagC 1) post=mc
50b4ed3b92SDavid du Colombierif(~ $flagF 1) all=($all -F)
51b4ed3b92SDavid du Colombier# ignore -H, -L
52b4ed3b92SDavid du Colombier# save -R for later
53b4ed3b92SDavid du Colombierif(~ $flagU 1) all=($all -n)
54b4ed3b92SDavid du Colombier# ignore -a, -c
55b4ed3b92SDavid du Colombierif(~ $flagd 1) all=($all -d)
56b4ed3b92SDavid du Colombierif(~ $flagf 1) all=($all -n)
57b4ed3b92SDavid du Colombierif(~ $flagl 1) { all=($all -l); post=fixlong }
58*2a782499SDavid du Colombierif(~ $flagi 1) { all=($all -q); post2=qid2inode }
59b4ed3b92SDavid du Colombierif(~ $flagp 1) all=($all -F)
60b4ed3b92SDavid du Colombierif(~ $flagr 1) all=($all -r)
61b4ed3b92SDavid du Colombierif(~ $flags 1) all=($all -s)
62b4ed3b92SDavid du Colombierif(~ $flagt 1) all=($all -t)
63b4ed3b92SDavid du Colombierif(~ $flagu 1) all=($all -u)
64b4ed3b92SDavid du Colombier# ignore -1
65b4ed3b92SDavid du Colombier
66*2a782499SDavid du Colombier/$cputype/bin/ls $all $* | $post | $post2
67