Первое решение
Чтобы восстановить ситуацию, вы должны знать предыдущую.
Команды bind
и shopt
настолько уютно , что среди нескольких вариантов , которые они представляют, есть один -p
для первого и -v
для второго) , которые дают выход в формате годного к употреблению, почти сразу, чтобы восстановить их:
shopt -p | grep nocaseglob # shopt -u nocaseglob
bind -v | grep completion-ignore-case # set completion-ignore-case off
Результат сообщается выше после знака #
.
Как только вы знаете начальное значение, вы можете создать пару псевдонимов, чтобы перейти в Ignore More (IgnoreGo
) и выйти (IgnoreExit
) из него:
alias IgnoreGo="shopt -s nocaseglob; bind 'set completion-ignore-case on'"
alias IgnoreExit="shopt -u nocaseglob; bind 'set completion-ignore-case off'"
Вы можете поместить этот псевдоним в другую конфигурационную оболочку (обычно в ~/.bash_aliases
или ~/.bashrc
) и использовать, когда захотите. Проблема в том, что они слепы, они не увидят фактического положения вашей оболочки.
Лучшее решение
Просто чтобы сделать все это независимым от вашего знания этих значений переменных и немного более сложным, вы можете создать функцию (Store
) для создания псевдонима (ReStore
) для возврата, какой бы ни была начальная ситуация.
Store(){ alias ReStore="$(shopt -p|grep nocaseglob); \
bind '$(bind -v|grep completion-ignore-case)'"; }
Даже это можно записать в файле конфигурации вашей оболочки (см. Выше). Каждый раз с помощью Store
вы замораживаете реальную ситуацию, а с помощью ReStore
вы переустанавливаете последнюю заблокированную.
Обратите внимание, что \
должен быть последним символом строки, чтобы разделить команду в более удобочитаемом формате на две строки.
Заметка
В моей системе для выполнения команды (например, для навигации по cd
) достаточно дать bind 'set completion-ignore-case on'
чтобы включить регистр игнорирования, даже когда nocaseglob
off
.
nocaseglob
on необходим для расширения пути. Существует даже nocasematch
для шаблонов. help bash
чтобы прочитать больше ...
Помощь по командам
Команды bind
и shopt
встроены в оболочку. Это означает, что для того, чтобы попросить руководство по их использованию, вам нужно обратиться за help
вместо man
.
Чтобы иметь только удобочитаемый вывод, вы можете использовать
shopt | grep nocaseglob # nocaseglob on
bind -V | grep completion-ignore-case # completion-ignore-case is set to `off'