Kiedy używam programu podobnego svn
i piszę w Gnome Terminal:
svn upd
i naciśnij, Tabże autouzupełnianie:
svn update
Czy można zrobić coś takiego w niestandardowym skrypcie bash?
bash
auto-completion
UAdapter
źródło
źródło
Odpowiedzi:
Możesz użyć programowalnego zakończenia . Mają zapoznać się
/etc/bash_completion
i/etc/bash_completion.d/*
dla niektórych przykładów.źródło
/usr/share/bash-completion/completions/<program>
The provided link has that already
- może dziś, ale jutro nie. Lub w przyszłym roku. Lub za dekadę. Niezależnie od tego, co sugerujesz o tym, że dokumentacja jest nadal aktualna, przepełnienie stosu zniechęca do odpowiedzi tylko z linkiem z tych powodów.Spóźniłem się sześć miesięcy, ale szukałem tego samego i znalazłem to:
Musisz utworzyć nowy plik:
W przypadku statycznego autouzupełniania (
--help
/--verbose
na przykład) dodaj:COMP_WORDS
to tablica zawierająca wszystkie pojedyncze słowa w bieżącym wierszu poleceń.COMP_CWORD
jest indeksem słowa zawierającego bieżącą pozycję kursora.COMPREPLY
jest zmienną tablicową, z której Bash czyta możliwe uzupełnienia.A
compgen
komenda zwraca tablicę z elementów--help
,--verbose
i--version
dopasowanie bieżące słowo"${cur}"
:Źródło: http://www.debian-administration.org/articles/316
źródło
-
i pokazują je bez konieczności wpisywania słowa docelowego, wystarczy usunąć wierszeif [...] then
ifi
./etc/bash_completion.d/
. Przybyłem tu tylko dlatego, że chciałem gdzieś opublikować odpowiedź, ale okazuje się, że ktoś był cały czas o trzy lata :) Jasny, zwięzły i kompletny przykład, dziękuję!Wszystkie uzupełnienia bash są przechowywane w
/etc/bash_completion.d/
. Więc jeśli budujesz oprogramowanie z bash_completion, warto by deb / make install upuścił plik z nazwą oprogramowania w tym katalogu. Oto przykładowy skrypt zakończenia bash dla Rsync:Warto byłoby przejrzeć jeden z plików uzupełniających bash, które najbardziej pasują do twojego programu. Jednym z najprostszych przykładów jest
rrdtool
plik.źródło
source ~/.local/mycrazycompletion
swój~/.bashrc
pkg-c
onfig --variable = completionsdir bash-uzupełnianie`, a katalog ten jest zaleceniem podanym w Bash Completion FAQ, do którego link znajduje się powyżej.Oto kompletny samouczek.
Załóżmy przykładowy skrypt o nazwie admin.sh, do którego chcesz, aby autouzupełnianie działało.
Uwaga krótka lista opcji. Wywołanie skryptu z tą opcją spowoduje wydrukowanie wszystkich możliwych opcji dla tego skryptu.
A tutaj masz skrypt autouzupełniania:
Zauważ, że ostatnim argumentem do uzupełnienia jest nazwa skryptu, do którego chcesz dodać autouzupełnianie. Wszystko, co musisz zrobić, to dodać swój skrypt autouzupełniania do bashrc as
lub skopiuj go do /etc/bash.completion.d
źródło
prev
zmienna? Wygląda na to, że go nie używasz.-o nospace
opcja?Jeśli wszystko, czego chcesz, to proste automatyczne uzupełnianie oparte na słowach (więc nie uzupełniaj podkomendy ani nic takiego),
complete
polecenie ma-W
opcję, która po prostu robi właściwą rzecz.Na przykład mam następujące wiersze
.bashrc
do autouzupełniania programu o nazwie jupyter :Teraz
jupyter <TAB> <TAB>
autouzupełnianie dla mnie.W docs w gnu.org są pomocne.
Wygląda na to, że
IFS
zmienna jest ustawiona poprawnie, ale nie spowodowało to dla mnie żadnych problemów.Aby dodać uzupełnienie nazwy pliku i domyślne uzupełnienie BASH, użyj
-o
opcji:Aby użyć tego w zsh, dodaj następujący kod przed uruchomieniem
complete
polecenia w swoim~/.zshrc
:źródło
bash jupyter <TAB><TAB>
?