mirror of
git://git.code.sf.net/p/zsh/code
synced 2025-09-02 10:01:11 +02:00
60 lines
2 KiB
Text
60 lines
2 KiB
Text
#compdef nettop
|
|
|
|
local curcontext="$curcontext" state state_descr line ret=1
|
|
typeset -A opt_args
|
|
|
|
local msg='number of samples (0=infinite)'
|
|
local specs=(
|
|
'-m+[specify the mode]:mode:(tcp udp route)'
|
|
'*-t+[specify interface type]:interface type:(wifi wired loopback owdl expensive undefined external)'
|
|
'-n[disable address to name resolution]'
|
|
'-c[less intensive use of the CPU]'
|
|
'-d[delta mode]'
|
|
'-x[extended display of numbers instead of suffixes such as MiB]'
|
|
'-P[display per-process summaries only]'
|
|
'-s+[specify delay between updates]: :_numbers -u seconds -d 1 delay'
|
|
"(-L)-l+[display specified number of samples and exit]:$msg"
|
|
"(-l)-L+[display specified number of samples in CSV and exit]:$msg"
|
|
'*-p+[select a particular process]: :->process'
|
|
'-j+[include the specified columns]: :->columns-off'
|
|
'-J+[include only the specified columns]: :->columns-all'
|
|
'-k+[exclude the specified columns]: :->columns-on'
|
|
'(-)-h[display help message and exit]'
|
|
)
|
|
|
|
_arguments -s -C : $specs && ret=0
|
|
|
|
case $state in
|
|
columns-*)
|
|
local columns_on=( # columns included by default
|
|
interface state bytes_in bytes_out rx_dupe rx_ooo re-tx rtt_avg
|
|
rcvsize tx_win tc_class tc_mgt cc_algo P C R W
|
|
arch
|
|
)
|
|
local columns_off=( # not included by default
|
|
type packets_in packets_out rtt_min rtt_var
|
|
sndsize sndused rcvused unacked tx_cwin
|
|
cell_bytes_in cell_bytes_out wifi_bytes_in wifi_bytes_out
|
|
wired_bytes_in wired_bytes_out
|
|
uuid epid euuid vuuid closed_tcp closed_udp
|
|
)
|
|
case $state in
|
|
columns-on)
|
|
_values -s , 'column name' $columns_on && ret=0
|
|
;;
|
|
columns-off)
|
|
_values -s , 'column name' $columns_off && ret=0
|
|
;;
|
|
columns-all)
|
|
_values -s , 'column name' $columns_on $columns_off && ret=0
|
|
;;
|
|
esac
|
|
;;
|
|
process)
|
|
local procs=( ${(@)${(f@)"$(_call_program processes-names
|
|
$words[1] -P -l 1 -J '')"}%.[0-9]*} )
|
|
_alternative 'processes-names:process name:($procs)' \
|
|
'processes:pid:_pids' && ret=0
|
|
esac
|
|
|
|
return ret
|