我读了几篇文章,但对 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
)