2009-05-17 21:55:41 +02:00

53 lines
1.0 KiB
Bash

# -*- mode: shell-script; sh-basic-offset: 8; indent-tabs-mode: t -*-
# ex: ts=8 sw=8 noet filetype=sh
#
# bash completion for getent
have getent &&
_getent()
{
local cur prev
COMPREPLY=()
cur=`_get_cword`
prev=${COMP_WORDS[COMP_CWORD-1]}
case $prev in
passwd)
COMPREPLY=( $( compgen -u $cur ) )
return 0
;;
group)
COMPREPLY=( $( compgen -g $cur ) )
return 0
;;
services)
COMPREPLY=( $( compgen -s $cur ) )
return 0
;;
hosts)
COMPREPLY=( $( compgen -A hostname $cur ) )
return 0
;;
protocols|networks|ahosts|ahostsv4|ahostsv6|rpc)
COMPREPLY=( $( getent $prev | \
sed -ne 's|^\('$cur'[^[:space:]]*\).*|\1|p' ) )
return 0
;;
aliases|shadow)
COMPREPLY=( $( getent $prev | \
sed -ne 's|^\('$cur'[^:]*\).*|\1|p' ) )
return 0
;;
esac
if [ $COMP_CWORD -eq 1 ]; then
COMPREPLY=( $( compgen -W 'passwd group hosts services \
protocols networks ahosts ahostsv4 \
ahostsv6 aliases ethers netgroup \
rpc shadow' -- $cur ) )
fi
} &&
complete -F _getent getent