snapcanonical-livepatch
没有自动完成子命令的功能。根据帮助页面,有效的子命令是:
$ canonical-livepatch help
...
COMMANDS:
config - configure livepatching on the machine
disable - disable livepatching on the machine
enable - enable livepatching on the machine
help - display help
kernel-upgrade-required - indicate whether a kernel upgrade is required
refresh - immediately download and apply any available livepatch
status - show kernel's livepatch status
有没有一种简单的方法可以为 Bash 中的 snap 中的子命令添加自动完成功能canonical-livepatch
,而无需修改 snap 本身?
livepatch
一个小细节是,自动完成功能也应该适用于我为该命令所用的snap 别名。
$ snap aliases
Command Alias Notes
canonical-livepatch livepatch manual
lxd.lxc lxc -
答案1
这可以通过创建以下自动完成脚本(我称之为livepatch-completion
)来实现:
# canonical-livepatch completion script
_livepatch_completion()
{
# Only autocomplete for first subcommand
if [ "${#COMP_WORDS[@]}" != "2" ]; then
return
fi
# Define the list of words that will autocomplete and display on double-tab
COMPREPLY=($(compgen -W "config disable enable help kernel-upgrade-required refresh status" "${COMP_WORDS[1]}"))
}
# Initialize the completion function for both the original command and the alias livepatch
complete -F _livepatch_completion canonical-livepatch livepatch
将脚本放置在您喜欢的任何位置(例如~/.bash_completion
)。
~/.bashrc
通过将此行添加到您的(或启动终端时来源的任何其他文件)来获取自动完成脚本:
source ~/.bash_completion/livepatch-completion
这可能不是最先进的解决方案,但它可以简单地自动完成任何其他命令的子命令,包括快照和别名。