added Makefile completion
split _ssh function up into a _known_hosts function for use by other commands improved insmod completion with module paramter completion
This commit is contained in:
parent
b105887fee
commit
4940278ca3
148
bash_completion
148
bash_completion
@ -2,7 +2,7 @@
|
|||||||
#
|
#
|
||||||
# <![CDATA[
|
# <![CDATA[
|
||||||
#
|
#
|
||||||
# $Id: bash_completion,v 1.5 2000/09/11 20:46:39 ianmacd Exp $
|
# $Id: bash_completion,v 1.6 2000/09/25 23:38:11 ianmacd Exp $
|
||||||
#
|
#
|
||||||
# Copyright (C) Ian Macdonald <ian@caliban.org>
|
# Copyright (C) Ian Macdonald <ian@caliban.org>
|
||||||
#
|
#
|
||||||
@ -196,8 +196,8 @@ _rmmod()
|
|||||||
COMPREPLY=()
|
COMPREPLY=()
|
||||||
cur=${COMP_WORDS[COMP_CWORD]}
|
cur=${COMP_WORDS[COMP_CWORD]}
|
||||||
|
|
||||||
COMPREPLY=($( /sbin/lsmod | \
|
COMPREPLY=( $( /sbin/lsmod | \
|
||||||
awk '{if (NR != 1 && $1 ~ /^'$cur'/) print $1}'))
|
awk '{if (NR != 1 && $1 ~ /^'$cur'/) print $1}') )
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
complete -F _rmmod rmmod
|
complete -F _rmmod rmmod
|
||||||
@ -207,17 +207,22 @@ complete -F _rmmod rmmod
|
|||||||
#
|
#
|
||||||
_insmod()
|
_insmod()
|
||||||
{
|
{
|
||||||
local cur modpath
|
local cur prev modpath
|
||||||
|
|
||||||
COMPREPLY=()
|
COMPREPLY=()
|
||||||
cur=${COMP_WORDS[COMP_CWORD]}
|
cur=${COMP_WORDS[COMP_CWORD]}
|
||||||
|
prev=${COMP_WORDS[COMP_CWORD-1]}
|
||||||
modpath=/lib/modules/`uname -r`
|
modpath=/lib/modules/`uname -r`
|
||||||
|
|
||||||
COMPREPLY=($( ls -R $modpath | sed -ne 's/^\('$cur'.*\)\.o$/\1/p'))
|
if [ $COMP_CWORD -gt 1 ]; then
|
||||||
|
COMPREPLY=( $( /sbin/modinfo -p $prev | cut -f 1 -d ' ' ) )
|
||||||
|
else
|
||||||
|
COMPREPLY=($( ls -R $modpath | sed -ne 's/^\('$cur'.*\)\.o$/\1/p'))
|
||||||
|
fi
|
||||||
|
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
complete -F _insmod insmod depmod modprobe modinfo
|
complete -F _insmod insmod modprobe modinfo
|
||||||
|
|
||||||
# man(1) completion. This relies on the security enhanced version of
|
# man(1) completion. This relies on the security enhanced version of
|
||||||
# GNU locate(1). UNIX variants having non-numeric man page sections
|
# GNU locate(1). UNIX variants having non-numeric man page sections
|
||||||
@ -732,35 +737,16 @@ _chkconfig()
|
|||||||
}
|
}
|
||||||
complete -F _chkconfig chkconfig
|
complete -F _chkconfig chkconfig
|
||||||
|
|
||||||
# ssh(1) completion. Should be able to improve this with user@host notation,
|
# This function performs host completion based on ssh's known_hosts files, defaulting
|
||||||
# but the '@' seems to trigger some kind of bug in bash's completion.
|
# to standard host completion if they don't exist.
|
||||||
#
|
#
|
||||||
_ssh()
|
_known_hosts()
|
||||||
{
|
{
|
||||||
local cur prev kh
|
local cur kh
|
||||||
|
|
||||||
kh=()
|
kh=()
|
||||||
COMPREPLY=()
|
COMPREPLY=()
|
||||||
cur=${COMP_WORDS[COMP_CWORD]}
|
cur=${COMP_WORDS[COMP_CWORD]}
|
||||||
prev=${COMP_WORDS[COMP_CWORD-1]}
|
|
||||||
|
|
||||||
case "$prev" in
|
|
||||||
-*c)
|
|
||||||
COMPREPLY=( $( compgen -W 'blowfish 3des 3des-cbc blowfish-cbc \
|
|
||||||
arcfour cast128-cbc' $cur ) )
|
|
||||||
return 0
|
|
||||||
;;
|
|
||||||
-*l)
|
|
||||||
COMPREPLY=( $( compgen -u $cur ) )
|
|
||||||
return 0
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
# Host has been specified, so now do simple command completion
|
|
||||||
if [ $COMP_CWORD -gt 1 ]; then
|
|
||||||
COMPREPLY=( $( compgen -c $cur ) )
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
[ -r /etc/known_hosts ] && kh[0]=/etc/known_hosts
|
[ -r /etc/known_hosts ] && kh[0]=/etc/known_hosts
|
||||||
[ -r ~/.ssh/known_hosts ] && kh[1]=~/.ssh/known_hosts
|
[ -r ~/.ssh/known_hosts ] && kh[1]=~/.ssh/known_hosts
|
||||||
@ -792,6 +778,42 @@ _ssh()
|
|||||||
|
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
complete -F _known_hosts traceroute ping fping telnet host nslookup
|
||||||
|
|
||||||
|
# ssh(1) completion. Should be able to improve this with user@host notation,
|
||||||
|
# but the '@' seems to trigger some kind of bug in bash's completion.
|
||||||
|
#
|
||||||
|
_ssh()
|
||||||
|
{
|
||||||
|
local cur prev
|
||||||
|
|
||||||
|
COMPREPLY=()
|
||||||
|
cur=${COMP_WORDS[COMP_CWORD]}
|
||||||
|
prev=${COMP_WORDS[COMP_CWORD-1]}
|
||||||
|
|
||||||
|
case "$prev" in
|
||||||
|
-*c)
|
||||||
|
COMPREPLY=( $( compgen -W 'blowfish 3des 3des-cbc blowfish-cbc \
|
||||||
|
arcfour cast128-cbc' $cur ) )
|
||||||
|
return 0
|
||||||
|
;;
|
||||||
|
-*l)
|
||||||
|
COMPREPLY=( $( compgen -u $cur ) )
|
||||||
|
return 0
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# Host has been specified, so now do simple command completion
|
||||||
|
if [ $COMP_CWORD -gt 1 ]; then
|
||||||
|
COMPREPLY=( $( compgen -c $cur ) )
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Otherwise, check for known hosts
|
||||||
|
_known_hosts
|
||||||
|
|
||||||
|
return 0
|
||||||
|
}
|
||||||
complete -F _ssh ssh slogin
|
complete -F _ssh ssh slogin
|
||||||
|
|
||||||
# Linux route(8) completion. This could be improved by adding address family
|
# Linux route(8) completion. This could be improved by adding address family
|
||||||
@ -832,4 +854,70 @@ _route()
|
|||||||
}
|
}
|
||||||
complete -F _route route
|
complete -F _route route
|
||||||
|
|
||||||
# ]]>
|
# GNU make(1) completion (adapted from the example supplied with the bash 2.04
|
||||||
|
# source code)
|
||||||
|
#
|
||||||
|
_make()
|
||||||
|
{
|
||||||
|
local mdef makef gcmd cur prev i
|
||||||
|
|
||||||
|
COMPREPLY=()
|
||||||
|
cur=${COMP_WORDS[COMP_CWORD]}
|
||||||
|
prev=${COMP_WORDS[COMP_CWORD-1]}
|
||||||
|
|
||||||
|
# if prev argument is -f, return possible filename completions.
|
||||||
|
# we could be a little smarter here and return matches against
|
||||||
|
# `makefile Makefile *.mk', whatever exists
|
||||||
|
if [[ "$prev" == -*f ]]; then
|
||||||
|
COMPREPLY=( $( compgen -f $cur ) )
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# if we want an option, return the possible posix options
|
||||||
|
if [[ "$cur" == - ]]; then
|
||||||
|
COMPREPLY=( $( compgen -W '-e -f -i -k -n -p -q -r -S -s -t' | grep ^$cur ) )
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# make reads `makefile' before `Makefile'
|
||||||
|
if [ -f makefile ]; then
|
||||||
|
mdef=makefile
|
||||||
|
elif [ -f Makefile ]; then
|
||||||
|
mdef=Makefile
|
||||||
|
else
|
||||||
|
mdef=*.mk # local convention
|
||||||
|
fi
|
||||||
|
|
||||||
|
# before we scan for targets, see if a makefile name was specified
|
||||||
|
# with -f
|
||||||
|
for (( i=0; i < ${#COMP_WORDS[@]}; i++ )); do
|
||||||
|
if [[ ${COMP_WORDS[i]} == -*f ]]; then
|
||||||
|
eval makef=${COMP_WORDS[i+1]} # eval for tilde expansion
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
[ -z "$makef" ] && makef=$mdef
|
||||||
|
|
||||||
|
# if we have a partial word to complete, restrict completions to
|
||||||
|
# matches of that word
|
||||||
|
if [ -n "$2" ]; then
|
||||||
|
gcmd='grep "^$2"'
|
||||||
|
else
|
||||||
|
gcmd=cat
|
||||||
|
fi
|
||||||
|
|
||||||
|
# if we don't want to use *.mk, we can take out the cat and use
|
||||||
|
# test -f $makef and input redirection
|
||||||
|
COMPREPLY=( $( cat $makef 2>/dev/null | \
|
||||||
|
awk 'BEGIN {FS=":"} /^[^.# ][^=]*:/ {print $1}' | \
|
||||||
|
eval $gcmd ) )
|
||||||
|
|
||||||
|
# default to filename completion if all else failed
|
||||||
|
if [ ${#COMPREPLY[@]} = 0 ]; then
|
||||||
|
COMPREPLY=( $(compgen -f $cur ) )
|
||||||
|
fi
|
||||||
|
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
complete -F _make -X '+($*|*.[cho])' make gmake pmake
|
||||||
|
Loading…
x
Reference in New Issue
Block a user