132

Есть ли способ сделать вкладку Bash без учета регистра?

$ bash --version
GNU bash, version 3.2.48(1)-release (x86_64-apple-darwin10.0)
Copyright (C) 2007 Free Software Foundation, Inc.

Я использую Mac OS X 10.6

3 ответа3

158

Обновите текст в /etc/inputrc чтобы включить

set completion-ignore-case on

Затем используйте ^X ^R для перезагрузки конфигурации.

106

Перестройка с учетом ретроспективы позволяет противопоставить преимущества и недостатки использования [.]inputrc и .bash_profile .
Наконечник шляпы, чтобы подчеркнуть за его помощь.

Примечание: редактирование командной строки в Bash обеспечивается библиотекой Readline; настраивать его нетривиально, но стоит учиться; его функции включают в себя возможность определения пользовательских сочетаний клавиш для вставки предопределенных фрагментов текста - см. Редактирование командной строки в Справочном руководстве Bash.

Для того, чтобы сделать настойчиво закладки завершения регистронезависимым в Bash:


Вариант А: если у вас уже есть:

  • файл /etc/inputrc (применяется для всей системы, для изменения требуется sudo)
  • и / или файл ~/.inputrc ( зависит от пользователя)

    и / или

вы планируете широко настраивать библиотеку readline и / или хотите сделать настройки эффективными и для сценариев, когда они вызывают read -e:

Добавить строку

set completion-ignore-case on

в любой файл, в зависимости от того, хотите ли вы, чтобы настройки были эффективными для всех пользователей или текущего пользователя (создайте файл, если необходимо).

Связанная команда, которая упрощает заполнение имен файлов и каталогов:

set show-all-if-ambiguous on

Это избавляет от необходимости дважды нажимать клавишу Tab, если найдено более одного совпадения.


Вариант Б: в качестве альтернативы вы можете добавить команды Readline в свой файл ~/.bash_profile конкретного пользователя в OS X (или ~/.bashrc в Linux), передав их в качестве единственного аргумента встроенной команде bind:

bind "set completion-ignore-case on"
bind "set show-all-if-ambiguous on"

Обратите внимание, что команды bind в ~/.bash_profile / ~/.bashrc имеют приоритет над эквивалентными командами в /etc/inputrc или ~/.inputrc .

Как подразумевалось выше, конфигурация Readline, определенная таким образом, не будет действовать в сценариях, которые вызывают read -e чтобы активировать поддержку Readline для чтения пользовательского ввода.

1

Чтобы не изменять конфигурацию для всех пользователей и не получать root-права, используйте следующее:

if [ ! -a ~/.inputrc ]; then echo '$include /etc/inputrc' > ~/.inputrc; fi
echo 'set completion-ignore-case on' >> ~/.inputrc

Затем войдите в систему или перезагрузите ~/.inputrc

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .