Вопрос: Завершение вкладок, нечувствительных к регистру в Bash


Есть ли способ сделать вкладку 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


126
2018-01-01 20:02


Источник




Ответы:


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

установить завершение-игнорировать

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


149
2018-01-01 20:39



"также" - /etc/inputrc или ~/.inputrc или файл, обозначенный INPUTRC это единственные места, где это возможно. Ввод этого в приглашении Bash не будет работать. - Dennis Williamson
упс! ты прав :) - John T
^X ^R перезагружать inputrc - grawity
@DennisWilliamson: вы можете сделать bind "set completion-ignore-case on" из командной строки; поскольку, я считаю, только терминальная сессия - Clay Bridges
Так это что у msysgit есть, но MSYS2 не хватает! Здесь я пытался найти его, например. / etc / profile ... - SamB


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

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

к настойчиво внесите в регистр Bash недостоверность ввода-вывода:


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

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

    и / или

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

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

set completion-ignore-case on

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

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

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 для чтения пользовательского ввода.


101
2018-06-11 05:02



show-all-if-twoiguous - это так приятно! Я часто задавался вопросом, почему они дважды сделали мне вкладку, чтобы выполнить это действие. тысячи нажатий клавиш сохранены в моем будущем! благодаря! - user34112
Удивительно, это даже работает для cdкоманды. Что решает этот вопрос и я буду экономить тысячи нажатий клавиш. :) - hoosierEE
Отличная точка show-all-if-ambiguous, Однако, поскольку вы говорите «как альтернативу», действительно ли есть какая-либо польза для этого bind, когда inputrc файлы кажутся излишними? - underscore_d
@underscore_d: Хороший вопрос; см. мой обновленный ответ. - mklement0
Хорошо, спасибо! В Debian 8.2 у меня не было ни inputrc, но я счастливо создал ~/.inputrc и добавил их, а также другие действительно полезные директивы. Думаю, мы предполагаем, что все читатели знают, что /etc/inputrc  влияет на других пользователей (если последнее не отменяет затронутые настройки)? Просто пока мы упоминаем оговорки;) - underscore_d


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

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

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


1
2018-04-08 04:52