summaryrefslogtreecommitdiffstats
path: root/completions/nmap
diff options
context:
space:
mode:
Diffstat (limited to 'completions/nmap')
-rw-r--r--completions/nmap56
1 files changed, 56 insertions, 0 deletions
diff --git a/completions/nmap b/completions/nmap
new file mode 100644
index 0000000..482148e
--- /dev/null
+++ b/completions/nmap
@@ -0,0 +1,56 @@
+# bash completion for nmap -*- shell-script -*-
+
+_nmap()
+{
+ local cur prev words cword split
+ _init_completion -s || return
+
+ case $prev in
+ -iL | -oN | -oX | -oS | -oG | ---excludefile | --resume | --stylesheet)
+ _filedir
+ return
+ ;;
+ -oA | --datadir)
+ _filedir -d
+ return
+ ;;
+ -e)
+ _available_interfaces -a
+ return
+ ;;
+ -b | --dns-servers)
+ _known_hosts_real -- "$cur"
+ return
+ ;;
+ esac
+
+ $split && return
+
+ if [[ $cur == -* ]]; then
+ # strip everything following a :, inclusive
+ # strip everything following a =, exclusive
+ # expand -X; -Y to -X -Y
+ # expand -X/-Y/-Z to -X -Y -Z
+ # expand -X/Y/Z to -X -Y -Z
+ # expand --foo/bar to --foo --bar
+ # strip everything following a non-option name or = char
+ # TODO: should expand -T<0-5> to -T0 ... -T5
+ COMPREPLY=($(compgen -W "$(
+ "$1" --help 2>&1 | command sed \
+ -e "s/:.*$//" \
+ -e "s/=.*$/=/" \
+ -e "s/;[[:space:]]*-/ -/g" \
+ -e "s/\/-/ -/g" \
+ -e "/^[[:space:]]*-[^-]/s/\/\([^-]\)/ -\1/g" \
+ -e "/^[[:space:]]*--/s/\/\([^-]\)/ --\1/g" \
+ -e "s/[^[:space:]a-zA-Z0-9=-].*$//"
+ )" \
+ -- "$cur"))
+ [[ ${COMPREPLY-} == *= ]] && compopt -o nospace
+ else
+ _known_hosts_real -- "$cur"
+ fi
+} &&
+ complete -F _nmap nmap
+
+# ex: filetype=sh