5

Есть ли хороший способ напечатать (например, в stdout) список всех возможных завершений команды в bash (те, которые он дал бы мне, если бы я набрал команду, а затем нажал клавишу tab)?

Редактировать: я думаю, что это было не совсем понятно, теперь, когда я прочитал это снова. Я знаю, как получить доработки вручную. Я хочу сделать это программно.

5 ответов5

3

Bash не имеет функции, чтобы сделать именно это. Программируемые завершения сильно зависят от различных параметров, таких как положение курсора ...

eval $(complete -p 'git' | sed s/^complete/compgen/)

кажется, работает, но очень хрупкий.

3

Нажмите TAB дважды. Большинство BASH-подобных оболочек перечисляют все соответствующие параметры автозаполнения для данной подстроки.

например

root@host$apt-get up

Двойное нажатие на клавишу TAB в этой команде выведет список Update и Upgrade

2

Убедитесь, что у вас установлен пакет bash-completion . В зависимости от типа установки он может включаться или не включаться по умолчанию, если не просто захватить его с помощью yum или apt . После установки вам нужно будет выйти и снова войти в систему или повторно использовать ваш .bashrc чтобы использовать его.

@Amazed - это то, как его использовать.

1

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

Тем не менее, complete | grep ... может получить тебя где-нибудь

0

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .