Czy jest jakiś sposób, aby tabulator Bash był niewrażliwy na wielkość liter?
$ bash --version
GNU bash, version 3.2.48(1)-release (x86_64-apple-darwin10.0)
Copyright (C) 2007 Free Software Foundation, Inc.
Używam Mac OS X 10.6
Czy jest jakiś sposób, aby tabulator Bash był niewrażliwy na wielkość liter?
$ bash --version
GNU bash, version 3.2.48(1)-release (x86_64-apple-darwin10.0)
Copyright (C) 2007 Free Software Foundation, Inc.
Używam Mac OS X 10.6
Odpowiedzi:
Zaktualizuj tekst, /etc/inputrc
aby zawierał
ustaw opcję zakończenia-ignoruj-wielkość liter
Następnie użyj ^X ^R
do ponownego załadowania konfiguracji.
^X ^R
przeładowaćinputrc
bind "set completion-ignore-case on"
z wiersza poleceń; wierzę, że tylko ta sesja terminalowa
Restrukturyzacji z perspektywy czasu Contrast plusy i minusy korzystania [.]inputrc
Vs. .bash_profile
.
Porada czapki do underscore_d za jego pomoc.
Uwaga: Edycja wiersza poleceń w Bash jest zapewniana przez bibliotekę Readline; dostosowywanie go nie jest trywialne, ale warte nauki; jego funkcje obejmują możliwość definiowania niestandardowych skrótów klawiaturowych do wstawiania predefiniowanych fragmentów tekstu - patrz Edycja wiersza poleceń w Podręczniku użytkownika Bash
Aby uporczywie rozróżniać wielkość liter w Bash bez rozróżniania wielkości liter:
Opcja A: jeśli masz już:
/etc/inputrc
pliku (w całym systemie stosuje, modyfikacji wymagają sudo
) i / lub ~/.inputrc
plik (specyficzny dla użytkownika)
i / lub
planujesz intensywnie dostosowywać bibliotekę readline i / lub chcesz, aby dostosowania były skuteczne również dla skryptów wywoływanych read -e
:
Dodaj linię
set completion-ignore-case on
do dowolnego pliku, w zależności od tego, czy ustawienie ma być skuteczne dla wszystkich użytkowników, czy dla bieżącego użytkownika (w razie potrzeby utwórz plik).
Powiązane polecenie, które ułatwia uzupełnianie nazw plików i katalogów, to:
set show-all-if-ambiguous on
To sprawia, że nie ma potrzeby dwukrotnego naciskania Tab, gdy występuje więcej niż jedno dopasowanie.
Opcja B: Alternatywnie możesz dodać polecenia Readline do ~/.bash_profile
pliku specyficznego dla użytkownika w OS X (lub ~/.bashrc
Linux), przekazując je jako pojedynczy argument do bind
wbudowanego :
bind "set completion-ignore-case on"
bind "set show-all-if-ambiguous on"
Zauważ, że bind
polecenia w ~/.bash_profile
/ ~/.bashrc
mają pierwszeństwo przed równoważnymi poleceniami w jednym /etc/inputrc
lub ~/.inputrc
.
Jak sugerowano powyżej, zdefiniowana w ten sposób konfiguracja Readline nie zadziała w skryptach, które wywołują read -e
aktywację obsługi Readline do odczytu danych wprowadzanych przez użytkownika.
cd
poleceń. Co rozwiązuje to pytanie i pozwoli mi zaoszczędzić tysiące naciśnięć klawiszy. :)
show-all-if-ambiguous
. Jednak skoro mówisz „jako alternatywa”, czy rzeczywiście ma to jakąś korzyść z robienia tego za pośrednictwem bind
, kiedy inputrc
wydaje się, że pliki sprawiają, że jest to zbędne?
inputrc
, ale z radością stworzyłem ~/.inputrc
i dodałem je oraz inne naprawdę przydatne dyrektywy. Wydaje mi się, że zakładamy, że wszyscy czytelnicy wiedzą, że /etc/inputrc
wpływa to na innych użytkowników (chyba że ci ostatni zastąpią ustawienia, których dotyczy problem)? Właśnie gdy wspominamy o zastrzeżeniach;)
Aby uniknąć zmiany konfiguracji dla wszystkich użytkowników i uprawnień roota, użyj:
if [ ! -a ~/.inputrc ]; then echo '$include /etc/inputrc' > ~/.inputrc; fi
echo 'set completion-ignore-case on' >> ~/.inputrc
Następnie zaloguj się ponownie lub ponownie załaduj ~ / .inputrc
/etc/inputrc
lub~/.inputrc
plik wskazany przezINPUTRC
to jedyne miejsca, do których może się udać. Wpisanie tego po znaku zachęty Bash nie będzie działać.