Чи є спосіб зробити так, щоб вкладка 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
Чи є спосіб зробити так, щоб вкладка 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
Відповіді:
Оновіть текст, /etc/inputrc
щоб включити
встановити завершення-ігнорувати-увімкнено
Потім використовуйте ^X ^R
для перезавантаження конфігурації.
^X ^R
для перезавантаженняinputrc
bind "set completion-ignore-case on"
з командного рядка; бо, я вважаю, що термінальний сеанс
Реорганізованого з вигодою непередбачливість протиставити плюси і мінуси використання [.]inputrc
vs. .bash_profile
.
Підказка капелюха, щоб підкреслити_d для його допомоги.
Примітка: редагування командного рядка в Bash надається бібліотекою Readline; налаштування його нетривіально, але варто того, щоб навчитися; його функції включають можливість визначати спеціальні комбінації клавіш для вставки заздалегідь визначених фрагментів тексту - див. Редагування командного рядка в Довідковому посібнику Bash
Щоб наполегливо зробити невідмітним регістр заповнення вкладки на Bash:
Варіант A: Якщо у вас вже є:
/etc/inputrc
файл (застосовується в масштабах всієї системи, модифікація вимагає sudo
) та / або ~/.inputrc
файл (специфічний для користувача)
та / або
ви плануєте широко налаштувати бібліотеку читальних рядків та / або хочете зробити налаштування ефективними і для сценаріїв під час виклику read -e
:
Додати рядок
set completion-ignore-case on
в будь-який файл, залежно від того, чи бажаєте ви, щоб налаштування було ефективним для всіх користувачів або поточного користувача (створіть файл, якщо потрібно).
Пов'язана команда, яка полегшує завершення імен файлів і каталогів:
set show-all-if-ambiguous on
Це робить зайвим натискання Tab двічі, коли є більше одного матчу.
Варіант B: Крім того, ви можете додати команди 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 для читання вводу користувача.
cd
команд. Що вирішує це питання, і врятує мене тисячі натискань клавіш. :)
show-all-if-ambiguous
. Однак, оскільки ви говорите "як альтернатива", чи є насправді якась користь зробити це через те bind
, коли inputrc
файли, здається, роблять це не потрібним?
inputrc
, але я із задоволенням створив ~/.inputrc
і додав ці плюс інші дійсно корисні директиви. Напевно, ми припускаємо, що всі читачі знають, що /etc/inputrc
впливає на інших користувачів (якщо останні не змінюють налаштування, на які вони впливають)? Тільки тоді, коли ми згадуємо про застереження;)
Щоб уникнути зміни конфігурації для всіх користувачів та уникнення кореневих дозволів, використовуйте наступне:
if [ ! -a ~/.inputrc ]; then echo '$include /etc/inputrc' > ~/.inputrc; fi
echo 'set completion-ignore-case on' >> ~/.inputrc
Потім повторно увійдіть або перезавантажте ~ / .inputrc
/etc/inputrc
або~/.inputrc
файл, позначений,INPUTRC
- це єдині місця, куди він може потрапити. Якщо ввести запит на Bash, не вийде.