如何在bash函数中完成路径补全

如何在bash函数中完成路径补全

我读了几篇文章,但对 bash 脚本知之甚少,我无法做我需要的事情。就像我尝试过的那样这个帖子

我有一个功能.bash_alias如下,只需 cd 到服务器文件夹即可。

html() {
  cd /var/www/html/$1
}

所以在命令中html myapp它执行cd /var/www/html/myapp.这一切都很好。我想更上一层楼。

我想要这样做html my<TAB>,以便它自动完成到html myapp 不要对任何文件夹进行硬编码,我想要具有通常的默认自动完成行为。如果有多个名称以 my 开头的文件夹,也可以列出文件夹。请指导。

答案1

您需要编写一个完成函数(按照惯例,我们将其命名为_html)。然后html使用内置函数将该函数与命令关联起来complete

_html() {
    local cur prev words cword
    _init_completion || return
   COMPREPLY=($(cd /var/www/html && compgen -o dirnames -- "$cur"))
}

complete -F _html html

(注意:_init_completion在 中定义/usr/share/bash-completion/bash_completion,我假设您已经获取了 - 直接或通过/etc/bash_completion

相关内容