summaryrefslogtreecommitdiff
path: root/etc/completions/_pkill
blob: 46f5939d8d1d146a7286acf60c2935f10ebd7250 (plain)
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
#compdef pkill pgrep
## completion for pkill
## Written 2008 by Daniel Friesel <derf@derf.homelinux.org>

## Not finished
##  * The process completion needs some rework (what about sudo?)
##  * Some options lack completion / their completion is inspecific

typeset -a arguments
typeset expl

arguments=(
	'-c[count matching processes]'
	'-f[match pattern against full commandline]'
	'-g[match processes in the listed group IDs]:process group ID'
	'-G[match processes with this GID]:group:_groups'
	'-n[select newest matching process]'
	'-o[select oldest matching process]'
	'-P[select processes with this parent PID]:process ID:_pids'
	'-s[select processes with this session ID]:session ID'
	'-t[select processes with this controlling terminal]:terminal:_terminal'
	'-u[select processes owned by effective user]:user:_users'
	'-U[select processes owned by real user]:user:_users'
	'-v[negate the matching]'
	'-x[exact matches]'
	':pattern:_named_process'
)

if [[ $service == 'pgrep' ]] {
	arguments+='-d[set output delimiter]:delimiter'
	arguments+='-l[list process name]'
}

function _terminal {
	_path_files -W /dev
}

function _named_process {
	typeset -a pgrep_user
	if (( EUID )) {
		pgrep_user=(-u $EUID)
	}
	_wanted pattern expl 'pattern or process name' \
	compadd $(pgrep $pgrep_user -l '' | cut -d ' ' -f 2)
}

_arguments -s $arguments
_signals -p