Intereting Posts
Проблема со ссылкой на рабочий каталог в цикле сценария оболочки Что именно происходит, когда я запускаю файл в своей оболочке? Откройте специальное приложение в рабочей области * new * с i3wm Преобразование старого файла зоны DNS в новый формат Зачем добавлять круглые скобки вокруг имени процесса? Рекурсивный scp без следующих ссылок или создания гигантского файла tar? Как обработать серию файлов после завершения передачи Как сделать обновление svn без пароля на crontab Не будет standby, usb_bluetooth откажется заморозить Использование IPTables для блокировки портов для подсетей класса A при разрешении веб-портов (80/443) Есть ли способ конвертировать zjsstream в текстовый файл для чтения человеком? Двойная загрузка на Macbook Pro 7,1. Определить сеанс tmux, к которому относится сеанс оболочки? подключение к Wi-Fi с паролем, содержащим кавычку Удалить последний символ из строки, захваченной с помощью awk

Как разрешить автозаполнение шаблонов bash?

Если у меня есть каталог, содержащий файлы

foo.bar.a.cat foo.bar.a.hat 

и я ls foo.bar.a. ls f + TAB для автозаполнения оболочки bash для ls foo.bar.a. , Если я ls *bar* + TAB, я бы хотел, чтобы он был автозаполнен *bar*.a. , Это возможно?

Это похоже на вопрос

Как включить табуляцию подстановочных знаков в bash?

но предлагаемый ответ «это работает из коробки для меня», не делает. Я также пробовал TAB TAB , без эффекта. Команда “ bash –version gives GNU bash, версия 4.2.37 (1) -release (x86_64-pc-linux-gnu) `.

Вы хотите:

Вставки-пополнения

ALT * для «вставить все доработки»

При этом файл, содержащий файлы, имена «aa ab ac ad»,
ls a* за которым следует alt + * будет завершен до ls aa ab ac ad

Запись на странице man:

вставки-дополнения (M- *)

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

Glob расширяющегося слово

В некоторых системах вышеуказанное не будет работать с wildchars, для таких систем для меня работает следующее:

ctrl x , * (двухтактная комбинация)

Пример. Я заполнил каталог:

 touch {a,b,c,d,e,f}{1,2,3,4,5,6,7,8,9,0}00{a,b,c,d,f,e} 

Затем я ls *100* а затем ctrl + x, * , который превращает мой readline в:

 ls a100a a100b a100c a100d a100e a100f b100a b100b b100c b100d b100e b100f c100a c100b c100c c100d c100e c100f d100a d100b d100c d100d d100e d100f e100a e100b e100c e100d e100e e100f f100a f100b f100c f100d f100e f100f 

Запись страницы man для привязки:

glob-expand-word (Cx *)

Слово перед точкой рассматривается как шаблон для расширения пути, а список совпадающих имен файлов вставляется, заменяя слово. Если задан числовой аргумент, к расширению пути добавляется '*'.

Персональная страница

Попытайтесь добавить это к ~ / .inputrc:

 set show-all-if-ambiguous on 

show-all-if-twoiguous делает нажатие на вкладку один раз (вместо двух) перечислит все доработки. Он также делает первую вкладку вставлять общие префиксы выражений glob.

 $ touch 1.0.{1,2} $ echo *0* # I pressed tab once here 1.0.1 1.0.2 $ echo 1.0. 

glob-complete-word (\ eg) также завершит *0 (без * в конце) до 1.0. , Он также завершается, например, /System/Library/Launch*/*Finde в /System/Library/LaunchAgents/com.apple.Finder.plist .

Если вы хотите преобразовать * в 1.0.1 1.0.2 в примере выше, используйте либо вставки-дополнения (\ e *), либо glob-expand-word (\ Cx *).

Эта проблема вызвана ошибками в пакете «bash-completion».

Когда пакет не установлен, bash делает это по умолчанию, это довольно хороший генератор с расширением имени файла.

Пакет «bash-completion» должен смотреть на остальную часть строки и быть «умным» о списках, которые он создает. Однако он не может успешно дублировать расширение «glob».

Лично я считаю, что пакет пытается слишком усердно и в конечном итоге может использоваться только «самым тупым обычным пользователем».

Хотя перед удалением вы можете проверить верхнюю часть файла «/ usr / share / bash-completion / bash_completion» для полезных дополнений к вашему .bashrc для «грубой настройки» встроенного завершения bash.

BTW: У него более ста зарегистрированных ошибок … https://bugs.debian.org/cgi-bin/pkgreport.cgi?package=bash-completion