/
githubmirror
/
bash-completion
Обзор
Документация
Войти
/
githubmirror
/
bash-completion
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
2.8
completions/info
74 строки
2 KB
Ville Skyttä
info, man, rsync: Defer _expand invocation
17 мар 2018, 03:06
17 мар 2018, 03:06
add4e3c
Код
Авторство
О чём код?
# bash completion for info -*- shell-script -*- _info() { local cur prev words cword split _init_completion -s || return # default completion if parameter looks like a path if [[ "$cur" == @(*/|[.~])* ]]; then _filedir return fi case $prev in -k|--apropos|--index-search|-n|--node|-h|--help|-v|--version) return ;; -d) if [[ ${1##*/} == info ]]; then _filedir -d return fi ;; --directory) _filedir -d return ;; --dribble|-f|--file|-o|--output|--restore|-r|--raw-filename|--rcfile) _filedir return ;; esac $split && return if [[ $cur == -* ]]; then COMPREPLY=( $( compgen -W '$( _parse_help "$1" )' -- "$cur" ) ) [[ $COMPREPLY == *= ]] && compopt -o nospace return fi local i infopath=/usr/share/info if [[ $INFOPATH == *: ]]; then infopath=${INFOPATH}${infopath} elif [[ ${INFOPATH:+set} ]]; then infopath=$INFOPATH fi _expand || return infopath=$infopath: if [[ -n $cur ]]; then infopath="${infopath//://$cur* }" else infopath="${infopath//:// }" fi # redirect stderr for when path doesn't exist COMPREPLY=( $( eval command ls "$infopath" 2>/dev/null ) ) # weed out directory path names and paths to info pages COMPREPLY=( ${COMPREPLY[@]##*/?(:)} ) # weed out info dir file for (( i=0 ; i < ${#COMPREPLY[@]} ; ++i )); do [[ ${COMPREPLY[$i]} == dir ]] && unset "COMPREPLY[$i]" done # strip suffix from info pages COMPREPLY=( ${COMPREPLY[@]%.@(gz|bz2|xz|lzma)} ) COMPREPLY=( $( compgen -W '${COMPREPLY[@]%.*}' -- "${cur//\\\\/}" ) ) } && complete -F _info info pinfo # ex: filetype=sh