Можно ли сделать вкладку автозаполнения без учета регистра в Bash?
Терминал Ubuntu использует автозаполнение с учетом регистра, как я полагаю, было бы ожидаемо для Linux.
Но я думаю, что часто было бы удобнее использовать вместо этого регистр без учета регистра, чтобы избавить вас от необходимости быть точным при вводе имени и, вероятно, стоило бы дополнительных ложных срабатываний. Можно ли изменить это поведение?
4 ответа
Чтобы сделать bash
без учета регистра для текущего пользователя:
Запустите следующий скрипт оболочки в терминале:
# If ~/.inputrc doesn't exist yet: First include the original /etc/inputrc
# so it won't get overriden
if [ ! -a ~/.inputrc ]; then echo 'source /etc/inputrc' > ~/.inputrc; fi
# Add shell-option to ~/.inputrc to enable case-insensitive tab completion
echo 'set completion-ignore-case On' >> ~/.inputrc
Запустите новую оболочку (откройте терминал).
Чтобы внести изменения в масштабе всей системы:
# add option to /etc/inputrc to enable case-insensitive tab completion for all users
echo 'set completion-ignore-case On' >> /etc/inputrc
Подробнее см.man bash
, Да, это длинная страница, но bash - довольно сложная программа, и если вы хотите просто найти на этой странице "без учета регистра", чтобы перейти к соответствующему разделу. Люди обычно изучают bash по одному варианту за раз или по одному bash-сценарию за раз, и для того, чтобы освоить все нюансы, требуется много времени. Ваш интерес может варьироваться.
Откройте терминал и введите следующую команду:
echo set completion-ignore-case on | sudo tee -a /etc/inputrc
Введите пароль. Перезапустите терминал.
Если в некоторых случаях вы хотите удалить без учета регистра, просто отредактируйте файл /etc/inputrc, удалив set completion-ignore-case
линия.
Это все.
Я знаю, что этот вопрос очень старый, но если я что-то упустил, думаю, у меня есть супер простое решение, если вы используете bash.
echo "bind 'set completion-ignore-case on'" >> ~/.bashrc
Или просто добавьте строку, используя ваш любимый текстовый редактор. Перезапустите сеанс bash и наслаждайтесь.
Вы можете сделать это, установив конфигурационную переменную для GNU readline, которая обрабатывает ввод в интерактивной оболочке.
Необходимая переменная completion-ignore-case
и может быть установлен непосредственно в вашей сессии bash с помощью:
bind "set completion-ignore-case on"
Его можно включить для всех будущих сеансов bash, поместив его в ~/.inputrc
файл или система /etc/inputrc
, чтобы включить его для всех пользователей. Это файл инициализации для readline.
Но обратите внимание, что если вы создаете ~/.inputrc
это заменит системную копию. (Для меня это привело к тому, что я потерял некоторые сопоставления клавиш, такие как Ctrl-Left
/ Right
, Вы можете увидеть, какие из них, просматривая /etc/inputrc
файл.)
Чтобы решить эту проблему, нужно поставить строку $include /etc/inputrc
на вершине ~/.inputrc
Например:
$include /etc/inputrc
set completion-ignore-case on
Чтобы применить изменения, перезапустите bash или перезагрузите inputrc, например, с помощью Ctrl + x, Ctrl + r.
Более подробную информацию о readline и inputrc можно найти в man bash
а также man 3 readline
,