
Есть ли удобный способ вывести (например, на стандартный вывод) список всех возможных завершений команды в bash (тех, которые он мне выдаст, если я введу команду, а затем нажму Tab)?
Редактировать: Думаю, это было не совсем понятно, теперь, когда я перечитал это снова. Я знаю, как получить автодополнения вручную. Я хочу сделать это программно.
решение1
В bash нет функции, которая бы делала именно это. Программируемые дополнения сильно зависят от различных параметров, таких как положение курсора...
eval $(complete -p 'git' | sed s/^complete/compgen/)
кажетсяработать, но очень хрупкий.
решение2
Нажмите TABдважды. Большинство оболочек типа BASH выведут список всех соответствующих вариантов автодополнения для заданной подстроки.
например
root@host$apt-get up
при двойном нажатии TABна эту команду будут выведены как Update
иUpgrade
решение3
Убедитесь, что у вас bash-completion
установлен пакет. В зависимости от типа установки он может быть включен или не включен по умолчанию, если нет, просто скачайте его с помощью yum
или apt
. После установки вам нужно будет выйти из системы и войти снова или повторно загрузить свой, .bashrc
чтобы использовать его.
@Amazed абсолютно прав в том, как этим пользоваться.
решение4
Я думаю, что вы просите в основном список всех команд, начинающихся с заданной строки. Вы должны быть в состоянии сделать это, получив список всех исполняемых файлов в вашей системе и запустив их через grep.