about summary refs log tree commit diff
path: root/Completion/Unix/Command/_ls
blob: 7680f927382fbc2f9b7240024af0f3873b638012 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
#compdef ls gls
# Ulrik Haugen 2001

local arguments is_gnu

_pick_variant -r is_gnu gnu=gnu unix --help

if [[ "$OSTYPE" = (netbsd*|freebsd*|openbsd*|darwin*) && "$is_gnu" != gnu ]]; then
  arguments=(
    '(-A)-a[list entries starting with .]'
    '(-a)-A[list all except . and ..]'
    '-d[list directory entries instead of contents]'
    '-L[list referenced file for sym link]'
    '-R[list subdirectories recursively]'

    '(-k)-h[print sizes in human readable form]'
    '(-h)-k[print sizes of 1k]'

    '-i[print file inode numbers]'

    '(-l -g -1 -C -m -x)-l[long listing]'
    '(-l -1 -C -m -x)-g[long listing but without owner information]'
    '(-l -g -C -m -x)-1[single column output]'
    '(-l -g -1 -m -x)-C[list entries in columns sorted vertically]'
    '(-l -g -1 -C -x)-m[comma separated]'
    '(-l -g -1 -C -m)-x[sort horizontally]'

    '-o[display file flags]'

    '-s[display size of each file in blocks]'

    '(-u)-c[status change time]'
    '(-c)-u[access time]'

    '-f[unsorted, all, short list]'
    '-r[reverse sort order]'

    '(-t)-S[sort by size]'
    '(-S)-t[sort by modification time]'

    '(-p)-F[append file type indicators]'
    '(-F)-p[append file type indicators for directory]'

    '-f[output is not sorted]'

    '-n[numeric uid, gid]'

    '-T[show complete time information]'

    '(-B -b -w -q)-B[print octal escapes for control characters]'
    '(-B -b -w -q)-b[as -B, but use C escape codes whenever possible]'
    '(-B -b -w -q)-q[hide control chars]'
    '(-B -b -w -q)-w[print raw characters]'

    '*:files:_files'
  )
  if [[ "$OSTYPE" = (freebsd*|darwin*) ]]; then
    arguments+=(
      '-G[enable colorized output]'
      '-H[follow symlinks on the command line]'
      '-P[do not follow symlinks]'
    )
  fi
else
  arguments=(
    '(--all -a -A --almost-all)'{--all,-a}'[list entries starting with .]'
    '(--almost-all -A -a --all)'{--almost-all,-A}'[list all except . and ..]'
    '--author[print the author of each file]'
    '(--ignore-backups -B)'{--ignore-backups,-B}"[don't list entries ending with ~]"
    '(--directory -d)'{--directory,-d}'[list directory entries instead of contents]'
    '(--dired -D)'{--dired,-D}"[generate output designed for Emacs' dired mode]"
    '(--ignore,-I)'{--ignore,-I}"[don't list entire matching pattern]:pattern:"
    '(--dereference -L --dereference-command-line --dereference-command-line-symlink-to-dir)'{--dereference,-L}'[list referenced file for sym link]'
    '(--dereference -L --dereference-command-line --dereference-command-line-symlink-to-dir)'{--dereference-command-line,--dereference-command-line-symlink-to-dir}
    '(--recursive -R)'{--recursive,-R}'[list subdirectories recursively]'

    '(--no-group -G)'{--no-group,-G}'[inhibit display of group information]'
    '(--human-readable -h -H --si)'{--human-readable,-h}'[print sizes in human readable form]'
    '(--si -H -h --human-readable)'{--si,-H}'[sizes in human readable form; powers of 1000]'
    '(--inode -i)'{--inode,-i}'[print file inode numbers]'

    '(--format -l -g -o -1 -C -m -x)-l[long listing]'
    '(--format -l -1 -C -m -x)-g[long listing but without owner information]'
    '(--format -l --no-group -G -1 -C -m -x)-o[no group, long]'
    '(--format -l -g -o -C -m -x)-1[single column output]'
    '(--format -l -g -o -1 -m -x)-C[list entries in columns sorted vertically]'
    '(--format -l -g -o -1 -C -x)-m[comma separated]'
    '(--format -l -g -o -1 -C -m)-x[sort horizontally]'
    '(-l -g -o -1 -C -m -x)--format=:format:(verbose long commas horizontal across vertical single-column)'

    '(--size -s -f)'{--size,-s}'[display size of each file in blocks]'

    '(--time -u)-c[status change time]'
    '(--time -c)-u[access time]'
    '(-c -u)--time=[specify time to show]:time:(ctime status use atime access)'
    '--time-style=[show times using specified style]:time style:(full-iso long-iso iso locale)'

    '(-a --all -U -l --format -s --size -t --sort --full-time)-f[unsorted, all, short list]'
    '(--reverse)'{--reverse,-r}'[reverse sort order]'

    '(--sort -t -U -v -X)-S[sort by size]'
    '(--sort -S -U -v -X)-t[sort by modification time]'
    '(--sort -S -t -v -X)-U[unsorted]'
    '(--sort -S -t -U -X)-v[sort by version (filename treated numerically)]'
    '(--sort -S -t -U -v)-X[sort by extension]'
    '(-S -t -U -v -X)--sort=:sort:(size time none version extension)'

    '--color=-[control use of color]:color:(never always auto)'

    '(--classify -F --indicator-style -p --file-type)'{--classify,-F}'[append file type indicators]'
    '(--file-type -p --indicator-style -F --classify)'{--file-type,-p}'[append file type indicators except *]'
    '(-F --classify -p --file-type)--indicator-style=:indicator style:(none file-type classify)'

    '(-f)--full-time[list both full date and full time]'

    '(--kilobytes -k --block-size)'{--kilobytes,-k}'[use block size of 1k]'
    '(-k --kilobytes)--block-size=[specify block size]:block size (bytes):(1024)'

    '(--numeric-uid-gid -n)'{--numeric-uid-gid,-n}'[numeric uid, gid]'
    '(--tabsize -T)'{--tabsize=,-T+}'[specify tab size]:tab size'
    '(--width -w)'{--width=,-w+}'[specify screen width]:screen width'

    '(--quoting-style -b --escape -N --literal -Q --quote-name)'{--escape,-b}'[print octal escapes for control characters]'
    '(--quoting-style -b --escape -N --literal -Q --quote-name)'{--literal,-N}'[print raw characters]'
    '(--quoting-style -b --escape -N --literal -Q --quote-name)'{--quote-name,-Q}'[quote names]'
    '(-b --escape -N --literal -Q --quote-name)--quoting-style=:quoting style:(literal shell shell-always c escape clocale locale)'

    '(--hide-control-chars -q --show-control-chars)'{--hide-control-chars,-q}'[hide control chars]'
    '(-q --hide-control-chars)--show-control-chars'
    '(- :)--help[display help information]'
    '(- :)--version[display version information]'
    '*:files:_files'
  )
  # remove long options?
  if [[ $is_gnu != gnu ]]; then
    arguments=( ${${${arguments:#(|*\))--*}//--[^ )]#/}/\( #\)/} )
  fi
fi

_arguments -s $arguments