W jaki sposób autouzupełnianie TAB znajduje opcje do wykonania?


Odpowiedzi:


22

W zależności od polecenia:

  • Ktoś mógł napisać funkcję generującą możliwe uzupełnienia argumentów, w tym opcje. Znajdziesz funkcje dla niektórych poleceń w /etc/bash_completion.d/*(lub innej lokalizacji w niektórych systemach). Funkcje te są zarejestrowane z wbudowaną (np mówi bash do wywołania funkcji po naciśnięciu na komendę). Używają wbudowanego, aby powiedzieć bashowi „oto możliwe uzupełnienia”.complete complete -F _find find_findTabfindcompgen
  • W przypadku niektórych poleceń bash wywoła polecenie z argumentem --helpi przeanalizuje dane wyjściowe. Takie polecenia można zarejestrować za pomocą completewbudowanego, np complete -F _longopt ls. _longoptjest w rzeczywistości funkcją generowania zakończenia, która zdarza się analizować dane wyjściowe polecenia, a nie korzystać ze stałej listy. (Istnieją inne bardziej wyspecjalizowane funkcje uzupełniania, które analizują dane wyjściowe polecenia w celu wygenerowania możliwych uzupełnień; poszukaj /etc/bash_completion.d/*przykładów.)
  • W przypadku rzeczy takich jak aliasy funkcja uzupełniania wyszukuje je w wewnętrznych tabelach bash. completeWbudowaną posiada opcje, które, na przykład -Adla aliasów.

10

Spójrz na plik

/ etc / bash_completion

i obserwuj pliki z katalogu:

/etc/bash_completion.d

Znajdziesz odpowiedź.


2

Wsparcie dla ukończenia bash jest dostępne w Debianie i Ubuntu dzięki pakietowi bash . Zazwyczaj musisz również odkomentować następujące elementy /etc/bash.bashrci / lub .bashrcuzyskać pliki ukończenia bash. Poniższe pochodzi z /etc/bash.bashrc:

# enable bash completion in interactive shells
if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
    . /etc/bash_completion
fi

aby to zadziałało. Zazwyczaj nie lubię tego w obu przypadkach. Obsługa interaktywnych / loginowych powłok w Debianie jest trochę bałaganu.

Podobne komentarze przypuszczalnie dotyczą innych dystrybucji, choć może domyślnie włączają pozyskiwanie.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.