compgen: compgen [-abcdefgjksuv] [-o opcja] [-A akcja] [-G wzorzec-glob] [-W lista-słów] [-F funkcja] [-C polecenie] [-X wzorzec-filtra] [-P przedrostek ] [-S przyrostek] [słowo]
Wypisanie możliwych uzupełnień w zależności od opcji.
Przeznaczone do wykorzystania w funkcjach powłoki generujących możliwe
uzupełnienia. Gdy podany jest opcjonalny argument SŁOWO, generowane są
uzupełnienia pasujące do SŁOWA.
Stan wyjściowy:
Zwracana jest prawda, chyba że podano błędną opcję lub wystąpi błąd.
Podpowiedź
Polecenie compgen
różni się niewiele od polecenia type, a bardzo często współwystepuje z poleceniem complete
johny@ThinkPad:~$ compgen -b | head
.
:
[
alias
bg
bind
break
builtin
caller
cd
johny@ThinkPad:~$ compgen -k | head
if
then
else
elif
fi
case
esac
for
select
while
Przygotowujemy funkcję która pozwoli nam zrobić dopełnienia shella i ja następnie instalujemy do polecenia complete.
_dotted_complete() {
branches=$(find "." -maxdepth 1 -name "*.jpg" -print)
COMPREPLY=($(compgen -W "$branches" -- "$2"))
}
complete -F _dotted_complete dotted
johny@ThinkPad:~$ dotted <TAB>
johny@ThinkPad:~$ dotted <ENTER>
Command 'dotted' not found, did you mean:
command 'dotter' from deb dotter
Try: sudo apt install <deb name>
johny@ThinkPad:~$ touch test0.jpg test1.jpg test2.jpg
johny@ThinkPad:~$ dotted ./test <TAB>
johny@ThinkPad:~$ dotted ./test
./test0.jpg ./test1.jpg ./test2.jpg