У меня есть следующий удобный маленький скрипт, который ищет псевдонимы и 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
ничего особенного сказать не может.