Я пытаюсь написать небольшое приложение запуска команд и хотел бы использовать вкладки bash в моей собственной системе выполнения. Я смог получить список дополнений для общих команд, используя compgen -abck
.
Я пытаюсь написать небольшое приложение для запуска команд и хотел бы использовать дополнения в bash в моей собственной системе завершения. Я смог получить список завершений для общих команд ...
Я пытаюсь написать небольшое приложение запуска команд и хотел бы использовать вкладки bash в моей собственной системе выполнения. Я смог получить список дополнений для общих команд, используя compgen -abck
.
Я пытаюсь написать небольшое приложение для запуска команд и хотел бы использовать дополнения в bash в моей собственной системе завершения. Я смог получить список завершений для общих команд ...
Я пытаюсь написать небольшое приложение запуска команд и хотел бы использовать вкладки bash в моей собственной системе выполнения. Я смог получить список дополнений для общих команд, используя compgen -abck
.
Однако я также хотел бы получить завершение для определенных команд: например, вход git p
должен отображать завершение для команд git.
Можно ли как-нибудь использовать compgen
для этого? Если нет, есть ли другие способы, которыми я могу получить список завершений программно?
[EDIT: чтобы уточнить, я не пытаюсь обеспечить завершение для bash - мое приложение является средством запуска команд с графическим интерфейсом. Я просто хотел бы использовать существующие дополнения bash в своем собственном приложении.]
Проверьте каталог /etc/bash_completion.d/
. Здесь остаются различные сценарии завершения команд.
Вот простой, но работающий пример в bash:
function foo_completion()
{
local currentWord=${COMP_WORDS[COMP_CWORD]}
local completionList=""
case "${COMP_CWORD}" in
"1")
completionList="command1 command2 command3";
;;
"2")
completionList="param1 param2 param3";
;;
esac
COMPREPLY=( $( compgen -W "${completionList}" -- ${currentWord} ) )
}
complete -F foo_completion foo
С таким кодом вы получите завершение команды N, когда наберете «foo c» + tab, а paramN будет завершено, когда вы введите "foo command1 p" + tab
Вы можете вычислить список завершения из справки по команде.
my2c