首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将Bash自动完成添加到没有Bash的snap中(例如:规范-livepatch)

如何将Bash自动完成添加到没有Bash的snap中(例如:规范-livepatch)
EN

Ask Ubuntu用户
提问于 2022-03-26 23:10:24
回答 1查看 307关注 0票数 4

canonical-livepatch快照不为其子命令提供自动完成功能。根据“帮助”页,有效的子命令如下:

代码语言:javascript
复制
$ 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

是否有一种简单的方法可以为在canonical-livepatch中工作的Bash中的子命令添加自动完成,而不必修改快照本身?

更详细的一点是,自动完成还应该适用于命令的snap别名livepatch

代码语言:javascript
复制
$ snap aliases
Command              Alias      Notes
canonical-livepatch  livepatch  manual
lxd.lxc              lxc        -
EN

回答 1

Ask Ubuntu用户

回答已采纳

发布于 2022-03-26 23:36:36

这可以通过创建以下自动完成脚本(我称之为livepatch-completion)来完成:

代码语言:javascript
复制
# 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 (或启动终端时来源的任何其他文件)来获取自动完成脚本:

代码语言:javascript
复制
source ~/.bash_completion/livepatch-completion

这可能不是最高级的解决方案,但它可以简单地自动完成任何其他命令的子命令,包括snaps和别名。

票数 4
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/1399442

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档