Как встроить расширить подстановочный знак в Bash?

10

Я вспомнил, что Bash может сделать следующее:

Предположим, что в текущем каталоге есть 3 файла: a, b, c, когда я ввожу:

$> somecommand *

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

$> somecommand a b c

но я не могу вспомнить и не могу погуглить последовательность клавиш! Помогите!

marstone
источник
5
ПопробуйтеCtrl-X *
Стефан Шазелас

Ответы:

7

Если это не так, вам необходимо привязать glob-expand-wordк последовательности клавиш. Обычно добавляя что-то вроде:

"\C-x*": glob-expand-word

к .inputrc.

Чтобы проверить текущее состояние вопроса что-то вроде:

bind -P | grep glob-expand-word

Где результат может быть:

glob-expand-word can be found on "\C-x*".

Что будет означать:

Ctrl-x*

Это также наиболее вероятная работа:

Ctrl-xCtrl-*


Посмотрите bind -Pи руководство (я) для других тонкостей.

Runium
источник
3

Кажется, вы ищете для завершения списка. В справочной странице для bash:

 COMP_TYPE
     Set to an integer value corresponding to the type of completion
     attempted  that caused a completion function to be called: TAB,
     for normal completion, ?, for listing completions after succes
     sive  tabs, !, for listing alternatives on partial word comple
     tion, @, to list completions if the word is not unmodified,  or
     %,  for  menu  completion.   This variable is available only in
     shell functions and external commands invoked by  the  program
     mable completion facilities

Так что это зависит от функции завершения для некоторой команды, как это выполняется.

Энтон
источник
2

Если вы используете set -o viв Bash, то Ctrl-X*не работает.

В set -o viрежиме вам нужно использовать Esc*вместо.

JohnGH
источник
1
Возможно, стоит отметить, что, как только вы в нормальном режиме, <C-X>*будете работать, но <C-X>это излишне и ничего не делает. ( <C-X>не уменьшается, как в vi.) Если вы находитесь в режиме вставки, <Esc>сначала вам нужно использовать .
wchargin
Это здорово. Как они называются? сочетания клавиш Bash? Есть ли документация, где я могу найти больше этих сочетаний клавиш?
Wisbucky
2
@wisbucky: Немного поздно, но за всех отвечает GNU Readline. Если у вас медленный день, прочитайте раздел РЕДАКТИРОВАНИЕ КОМАНД в man readline. Я использую Bash уже 10 лет и все еще изучаю новые.
Сорен Бьорнстад