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