Как добавить пользовательское завершение в команду ls в bash_completion? - PullRequest
1 голос
/ 03 апреля 2020

я пытаюсь предложить пользовательские параметры в bash завершение в командах linux (centos 7)

я знаю, что этот код добавляет пользовательскую команду к bash и предлагает параметры
путь : /etc/bash_completion.d/foo

_foo()
{
    local cur prev opts
    COMPREPLY=()
    cur="${COMP_WORDS[COMP_CWORD]}"
    prev="${COMP_WORDS[COMP_CWORD-1]}"
    opts="-i(--incoming)  -o(-outgoing) -m(--missed) -a(-all) "

    if [[ ${cur} == -* ]] ; then
        COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
        return 0
    fi
}
complete -F _foo foo 

foo -[tab]
    -i(--incoming)  -o(-outgoing) -m(--missed) -a(-all)

Цель меня - расширить этот исходный код до встроенных команд в linux, таких как ls

, пытаясь мне:

путь: /etc/bash_completion.d/ls

_ls() 
{
    local cur prev opts
    COMPREPLY=()
    cur="${COMP_WORDS[COMP_CWORD]}"
    prev="${COMP_WORDS[COMP_CWORD-1]}"
    opts="-a(--all)  -h(--human-readable)   -r(--reverse) "

    if [[ ${cur} == -* ]] ; then
        COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
        return 0
    fi
}
complete -F _ls ls 

когда этот код не указывает на то, что папки и файлы завершены в команде ls

ls -[tab]
  -a(--all)  -h(--human-readable)   -r(--reverse) 



ls[tab]
 not suggest files and directory

цель - добавить пользовательский параметр для предложить в bash а не команду поведения

...