Триггер список всех завершений поведения в функции bash - PullRequest
0 голосов
/ 05 апреля 2020

У меня есть следующий удобный маленький скрипт, который ищет псевдонимы и bash функции. Я хотел бы расширить его до bash autocomplete, то есть найти все двоичные файлы в моем PATH.

Если подумать, поведение автозаполнения std также найдет псевдонимы и функции. Но если есть просто двоичный список PATH, это тоже хорошо для меня.

то есть, как мне запустить поведение «список-все-завершения» в функции bash?

(venv) me@backups$ ? I entered a tab here
Display all 3093 possibilities? (y or n)
!                                         libocijdbc12.dylib
./                                        libons.dylib
2to3                                      liboramysql12.dylib
2to3-                                     libpng-config
.....

. Это сценарий bash, который я сейчас использую.


_getfilter(){

    if [ -z "$1" ]; then
        r_getfilter='.+'
    else
        r_getfilter="$1"
    fi
}

findcommands(){
    #hardcoding for now
    #_getfilter $1
    r_getfilter='^p'

    printf "\nfunctions:\n"
    declare -F | cut -c12- | egrep "$r_getfilter"

    printf "\naliases:\n"
    alias | cut -d '=' -f 1 | cut -d ' ' -f 2 | egrep "$r_getfilter"

    printf "\nautocomplete:\n"
    <what do I use here?> | egrep "$r_getfilter"
}

Я бы предпочел не тралить отдельные каталоги в PATH для допустимых для меня исполняемых файлов. Если это единственное решение, я бы не стал беспокоиться.

текущая реализация findcommands работает на Linux и Ma c. Мой приоритет - заставить его работать на моей маме c, Linux тоже неплохо иметь.

Ввод complete и compgen, которые кажутся связанными, не показывают вывод. и man ничего особенного сказать не может.

1 Ответ

2 голосов
/ 05 апреля 2020

Вы ищете компен.

$ compgen -c
ffmpeg
la
ll
man
if
then
else
elif
fi
case
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...