Czy zakończenie komendy dla `cd` może być zmodyfikowane tak, aby wyświetlało tylko katalogi i ignorowało pliki?

12

Kiedy jestem w katalogu bash i nacisnę cd Space Tab, pokazuje wszystko w katalogu jako możliwe. ( Show all 1000 possibilities?) Jest to naprawdę kłopotliwe, gdy jestem w katalogu z dużą ilością zwykłych plików i stosunkowo niewielką liczbą katalogów.

Czy zatem możliwe jest wybranie opcji autouzupełniania cdobejmującej tylko katalogi?

Wiem, że mogę uzyskać listę katalogów w katalogu, robiąc to

ls -d */

ale nie jestem pewien, jak się stąd zabrać.

Korzystam z CentOS 6.6 Final .

chiliNUT
źródło

Odpowiedzi:

25

Poprostu dodaj

complete -d cd

w twoim ~/.bashrc(lub innym pliku konfiguracyjnym bash).

jimmij
źródło
to działa! dzięki. Musiałem wpisać bashpo, aby ponownie załadować ~/.bashrcplik
chiliNUT,
To interesujące. Jest to domyślne zachowanie w mojej instalacji Debiana, ale pisanie completenie pokazuje się -d cdani nic podobnego. Najwyraźniej zrobiono to tutaj w inny sposób.
Tom Zych
@TomZych Istnieje popularny skrypt kończący bash , jest bardzo prawdopodobne, że twoja dystrybucja domyślnie go zainstalowała.
jimmij
2
Aby ponownie przeczytać, ~/.bashrcwpisz . ~/.bashrc. Może to nie uruchamia podpowłoki.
ctrl-alt-delor
1
@richard Można również ponownie wpisać / wkleić to polecenie w bieżącej powłoce interaktywnej.
jimmij
2

To powinno być automatycznie dzieje się na typowym zainstalować na wielu dystrybucjach.
Jeśli tak nie jest, prawdopodobnie brakuje Ci bash-completionpakietu:

  • Ubuntu: sudo apt-get install bash-completion
  • Łuk: sudo pacman -S bash-completion
użytkownik541686
źródło