Pierwsze rozwiązanie
Aby przywrócić sytuację, musisz znać poprzednią.
Polecenia bind
i shopt
są tak przytulne, że wśród kilku przedstawionych opcji istnieje jedna ( -p
pierwsza i -v
druga), 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 Store
jesteś w stanie zamrozić rzeczywistą sytuację, a wraz z ReStore
tobą 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 nocaseglob
jest off
. Włączenie nocaseglob
jest potrzebne do rozszerzenia nazwy ścieżki. Istnieje nawet nocasematch
dla wzorów. help bash
czytaj więcej ...
Pomoc w zakresie poleceń
Polecenia bind
i shopt
są wbudowane w powłokę. Oznacza to, że aby poprosić instrukcję o ich użycie, musisz użyć help
zamiast 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'