kill, killall: Add some option and argument completions, simplify _signals.
This commit is contained in:
parent
79ac9b5921
commit
099b47c66d
@ -777,20 +777,12 @@ _parse_usage()
|
|||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
# This function completes on signal names
|
# This function completes on signal names (minus the SIG prefix)
|
||||||
#
|
# @param $1 prefix
|
||||||
_signals()
|
_signals()
|
||||||
{
|
{
|
||||||
local i
|
local -a sigs=( $( compgen -P "$1" -A signal "SIG${cur#$1}" ) )
|
||||||
|
COMPREPLY+=( "${sigs[@]/#${1}SIG/${1}}" )
|
||||||
# standard signal completion is rather braindead, so we need
|
|
||||||
# to hack around to get what we want here, which is to
|
|
||||||
# complete on a dash, followed by the signal name minus
|
|
||||||
# the SIG prefix
|
|
||||||
COMPREPLY=( $( compgen -A signal SIG${cur#-} ))
|
|
||||||
for (( i=0; i < ${#COMPREPLY[@]}; i++ )); do
|
|
||||||
COMPREPLY[i]=-${COMPREPLY[i]#SIG}
|
|
||||||
done
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# This function completes on known mac addresses
|
# This function completes on known mac addresses
|
||||||
|
@ -5,9 +5,20 @@ _kill()
|
|||||||
local cur prev words cword
|
local cur prev words cword
|
||||||
_init_completion || return
|
_init_completion || return
|
||||||
|
|
||||||
|
case $prev in
|
||||||
|
-s)
|
||||||
|
_signals
|
||||||
|
return
|
||||||
|
;;
|
||||||
|
-l)
|
||||||
|
return
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
if [[ $cword -eq 1 && "$cur" == -* ]]; then
|
if [[ $cword -eq 1 && "$cur" == -* ]]; then
|
||||||
# return list of available signals
|
# return list of available signals
|
||||||
_signals
|
_signals -
|
||||||
|
COMPREPLY+=( $( compgen -W "-s -l" -- "$cur" ) )
|
||||||
else
|
else
|
||||||
# return list of available PIDs
|
# return list of available PIDs
|
||||||
_pids
|
_pids
|
||||||
|
@ -2,11 +2,27 @@
|
|||||||
|
|
||||||
_killall()
|
_killall()
|
||||||
{
|
{
|
||||||
local cur prev words cword
|
local cur prev words cword split
|
||||||
_init_completion || return
|
_init_completion -s || return
|
||||||
|
|
||||||
|
case $prev in
|
||||||
|
-Z|--context|-o|--older-than|-y|--younger-than|-V|--version)
|
||||||
|
return
|
||||||
|
;;
|
||||||
|
-s|--signal)
|
||||||
|
[[ $1 == *killall ]] && _signals
|
||||||
|
return
|
||||||
|
;;
|
||||||
|
-u|--user)
|
||||||
|
_allowed_users
|
||||||
|
return
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
$split && return
|
||||||
|
|
||||||
if [[ $cword -eq 1 && "$cur" == -* ]]; then
|
if [[ $cword -eq 1 && "$cur" == -* ]]; then
|
||||||
_signals
|
_signals -
|
||||||
else
|
else
|
||||||
_pnames
|
_pnames
|
||||||
fi
|
fi
|
||||||
|
@ -12,14 +12,16 @@ setup
|
|||||||
|
|
||||||
|
|
||||||
assert_complete_any "kill 1"
|
assert_complete_any "kill 1"
|
||||||
|
|
||||||
|
|
||||||
sync_after_int
|
sync_after_int
|
||||||
|
|
||||||
|
|
||||||
assert_complete [get_signals] "kill -"
|
assert_complete [get_signals] "kill -s "
|
||||||
|
sync_after_int
|
||||||
|
|
||||||
|
|
||||||
|
set expected [get_signals -]
|
||||||
|
lappend expected "-l" "-s"
|
||||||
|
assert_complete [lsort -unique $expected] "kill -"
|
||||||
sync_after_int
|
sync_after_int
|
||||||
|
|
||||||
|
|
||||||
|
@ -17,7 +17,7 @@ assert_complete_any "killall "
|
|||||||
sync_after_int
|
sync_after_int
|
||||||
|
|
||||||
|
|
||||||
assert_complete [get_signals] "killall -"
|
assert_complete [get_signals -] "killall -"
|
||||||
|
|
||||||
|
|
||||||
sync_after_int
|
sync_after_int
|
||||||
|
@ -659,8 +659,9 @@ proc get_hosts_avahi {} {
|
|||||||
# Get signals
|
# Get signals
|
||||||
# This function is written in analogy to the bash function `_signals()' in
|
# This function is written in analogy to the bash function `_signals()' in
|
||||||
# `bash_completion'.
|
# `bash_completion'.
|
||||||
|
# @param prefix
|
||||||
# @return list Signals starting with `SIG', but with the `SIG' prefix removed.
|
# @return list Signals starting with `SIG', but with the `SIG' prefix removed.
|
||||||
proc get_signals {} {
|
proc get_signals {{prefix ""}} {
|
||||||
set signals {}
|
set signals {}
|
||||||
foreach signal [exec bash -c {compgen -A signal}] {
|
foreach signal [exec bash -c {compgen -A signal}] {
|
||||||
# Does signal start with `SIG'?
|
# Does signal start with `SIG'?
|
||||||
@ -668,7 +669,7 @@ proc get_signals {} {
|
|||||||
# Remove `SIG' prefix
|
# Remove `SIG' prefix
|
||||||
set signal [string range $signal 3 end]
|
set signal [string range $signal 3 end]
|
||||||
# Add signal (with dash (-) prefix) to list
|
# Add signal (with dash (-) prefix) to list
|
||||||
lappend signals -$signal
|
lappend signals $prefix$signal
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return $signals
|
return $signals
|
||||||
|
Loading…
x
Reference in New Issue
Block a user