Odkąd uzupełnianie tabulatorów stało się standardową funkcją w powłokach, jestem z tego bardzo zadowolonym użytkownikiem. Podoba mi się nawet inteligentne zakończenie Basha (gdzie wyszukuje tylko pliki PDF, jeśli wpisuję evince foo <TAB>) - o ile poprawnie zgaduje.
Rujnuje skądinąd szczęśliwy dzień, gdy Bash wykorzystuje inteligentne uzupełnienie, aby odmówić ukończenia.
Dzisiaj chciałem:
tar xvf centos5.8_x86_1.ova
Więc wszedłem:
tar xvf cent<TAB>
a Bash odmawia ukończenia ścieżki, ponieważ pliki .ova nie są tym, czego zwykle używasz w tar.
Wiem, że mogę odinstalować pakiet bash-complete, aby usunąć inteligentne zakończenie. Ale czy mogę też zjeść ciasto i zjeść je?
Czy mogę poprosić bash, aby użył inteligentnego zakończenia, a jeśli to się nie powiedzie, a następnie skorzystaj z inteligentnego zakończenia?
źródło
Odpowiedzi:
Poniższe czynności powinny włączyć normalne zakończenie bash po niepowodzeniu wszystkich „inteligentnych” zakończeń programów tar, vim i emacs:
zobacz także odpowiednią stronę w podręczniku bash online.
Zastrzeżenie: otrzymujesz normalne zachowanie dla rodzaju uzupełnienia (polecenia / nazwy plików / nazwy użytkownika itp.) Zdefiniowanego przez inteligentne uzupełnienie dla danego polecenia, na przykład uzupełnienie
service
nie dokończy nazw plików, nawet jeśli zadzwoniszcomplete -o bashdefault service
.W tych i innych przypadkach, w których inteligentne autouzupełnianie kończy się niepowodzeniem, zawsze możesz nacisnąć
Alt-/
(lubM-/
w notacji instrukcji bash), aby uzupełnić nazwy plików prawie w taki sam sposób, jak działa TAB, jeśli inteligentne uzupełnianie jest wyłączone (prawie w ten sam sposób, w tym sensie, żeM-/
nie kompletne wzory jak*.txt
). Zobacz tutaj sekwencje klawiszy dla innych typów uzupełnień, takich jak nazwy poleceń i użytkowników.źródło
uzupełnianie bash jest rozszerzeniem standardowego uzupełniania basha i samo w sobie jest programem bash. Więc jeśli chcesz zmienić sposób działania programu, po prostu go zmień. To jest wolne oprogramowanie, możesz to zrobić. Dla konkretnego przypadku
tar
polecenia plik to/usr/share/bash-completion/completions/tar
. Abytar
automatycznieova
uzupełnić plik z rozszerzeniem , wystarczy dodać go do wierszatak mówi
Zauważ, że jest to ścieżka i kod istniejący dla Debian Wheezy (aktualna stabilna wersja). Inna dystrybucja lub wersja może mieć inny kod, ale pomysł jest taki sam. Otwórz kod i dostosuj, aby robił to, co chcesz.
Edycja: Właśnie zauważyłem, że pytanie dotyczyło za każdym razem, gdy nie można znaleźć dopasowania, a nie tylko konkretnego przypadku dodawania
ova
dotar
. Może komuś może się przydać, żeby wiedzieć, gdzie może szukać źródła.źródło