mirror of
https://github.com/zsh-users/zsh
synced 2024-09-30 05:06:09 +00:00
60 lines
2.1 KiB
Plaintext
60 lines
2.1 KiB
Plaintext
#compdef pidof
|
|
|
|
local curcontext="$curcontext" state line expl ret=1
|
|
typeset -A opt_args
|
|
|
|
_pick_variant -r variant procps='--separator' $OSTYPE -h
|
|
|
|
case $variant in
|
|
(procps)
|
|
local exargs="-h --help -V --version"
|
|
_arguments -C -s -w \
|
|
'(- *)'{-h,--help}'[display help information]' \
|
|
'(- *)'{-V,--version}'[print program version]' \
|
|
"(-s --single-shot $exargs)"{-s,--single-shot}'[return one PID only]' \
|
|
"(-c --check-root $exargs)"{-c,--check-root}'[omit processes with different root]' \
|
|
'-q[quiet mode, only set the exit code]' \
|
|
'(-w --with-workers)'{-w,--with-workers}'[show kernel workers too]' \
|
|
"(-x $exargs)"-x'[include shells running named scripts]' \
|
|
"($exargs)"\*{-o+,--omit-pid=}'[omit processes with PIDs]:pids:_sequence -s , _pids' \
|
|
'(-S --separator)'{-S+,--separator=}'[specify separator put between PIDs]:separator' \
|
|
'*:process:->procnames' \
|
|
&& return 0
|
|
;;
|
|
(darwin*)
|
|
# Night Production pidof
|
|
_arguments -s -w \
|
|
'(- *)'{-h,-\?}'[display help information]' \
|
|
'(- *)-v[print out version info on pidof]' \
|
|
'-l[print output in long format]' \
|
|
'-k[kill processes by name]' \
|
|
'*:process:_process_names -a' \
|
|
&& return 0
|
|
;;
|
|
(*)
|
|
# sysvinit-utils
|
|
_arguments -C -s -w \
|
|
'(- *)-h[display help information]' \
|
|
'-c[return PIDs with the same root directory]' \
|
|
'-d[use the provided character as output separator]:separator' \
|
|
'-n[avoid using stat system function on network shares]' \
|
|
'-o[omit results with a given PID]:pid:_sequence -s , _pids' \
|
|
'-s[return one PID only]' \
|
|
'-q[quiet mode. Do not display output]' \
|
|
'-s[only return one PID]' \
|
|
'-x[return PIDs of shells running scripts with a matching name]' \
|
|
'-z[list zombie and I/O waiting processes. May cause pidof to hang]' \
|
|
'*:process:->procnames' \
|
|
&& return 0
|
|
;;
|
|
esac
|
|
|
|
case $state in
|
|
procnames)
|
|
# Handle defunct processes and "avahi-daemon:"
|
|
_wanted process-names expl process compadd ${${${${${(@)${(f)"$(ps -N --ppid 2 -p 2 o args=)"}%% *}##*/}%:}#\[}%]} && ret=0
|
|
;;
|
|
esac
|
|
|
|
return ret
|