Pierwsze rozwiązanie
Aby przywrócić sytuację, musisz znać poprzednią.
Polecenia bindi shoptsą tak przytulne, że wśród kilku przedstawionych opcji istnieje jedna ( -ppierwsza i -vdruga), która daje dane wyjściowe w formacie nadającym się do bezpośredniego przywrócenia :
shopt -p | grep nocaseglob # shopt -u nocaseglob
bind -v | grep completion-ignore-case # set completion-ignore-case off
Dane wyjściowe są zgłaszane powyżej po #znaku.
Gdy poznasz wartość początkową, możesz utworzyć kilka aliasów, aby przejść do opcji Ignoruj więcej ( IgnoreGo) i wyjść z niej ( IgnoreExit):
alias IgnoreGo="shopt -s nocaseglob; bind 'set completion-ignore-case on'"
alias IgnoreExit="shopt -u nocaseglob; bind 'set completion-ignore-case off'"
Możesz umieścić ten alias z drugą powłoką konfiguracyjną (zwykle w ~/.bash_aliases lub ~/.bashrc) i używać go, kiedy chcesz. Problem polega na tym, że są ślepi, nie zobaczą faktycznej sytuacji twojej powłoki.
Lepsze rozwiązanie
Aby uczynić to wszystko niezależnym od twojej wiedzy na temat tych zmiennych wartości i nieco bardziej złożone, możesz utworzyć funkcję ( Store), aby utworzyć alias ( ReStore), aby cofnąć się, bez względu na początkową sytuację.
Store(){ alias ReStore="$(shopt -p|grep nocaseglob); \
bind '$(bind -v|grep completion-ignore-case)'"; }
Nawet to można zapisać w pliku konfiguracyjnym powłoki (patrz wyżej). Za każdym razem, gdy Storejesteś w stanie zamrozić rzeczywistą sytuację, a wraz z ReStoretobą przywrócić ostatnią zamrożoną .
Zauważ, że \musi to być ostatni znak linii, aby podzielić polecenie w bardziej czytelnym formacie na dwa wiersze.
Uwaga
W moim systemie, aby wykonać polecenie (np. Aby nawigować cd) wystarczy podać bind 'set completion-ignore-case on'opcję włączania ignorowania, nawet gdy nocaseglobjest off. Włączenie nocaseglobjest potrzebne do rozszerzenia nazwy ścieżki. Istnieje nawet nocasematchdla wzorów. help bashczytaj więcej ...
Pomoc w zakresie poleceń
Polecenia bindi shoptsą wbudowane w powłokę. Oznacza to, że aby poprosić instrukcję o ich użycie, musisz użyć helpzamiast man.
Aby mieć wyjście czytelne dla człowieka, możesz użyć
shopt | grep nocaseglob # nocaseglob on
bind -V | grep completion-ignore-case # completion-ignore-case is set to `off'