触发器列出 bash 函数中的所有完成行为
Trigger list all completions behavior in a bash function
我有以下方便的小脚本,用于搜索别名和 bash 函数。我想将它扩展到 bash 自动完成,即在我的 PATH 中找到所有二进制文件。
想想看,std 自动完成行为也会找到别名和函数。但是,如果 只是 一个 PATH 二进制列表,那对我也有好处。
即如何在 bash 函数中触发 list-all-completions 行为?
(venv) me@backups$ I entered a tab here
Display all 3093 possibilities? (y or n)
! libocijdbc12.dylib
./ libons.dylib
2to3 liboramysql12.dylib
2to3- libpng-config
.....
这是我目前使用的 bash 脚本。
_getfilter(){
if [ -z "" ]; then
r_getfilter='.+'
else
r_getfilter=""
fi
}
findcommands(){
#hardcoding for now
#_getfilter
r_getfilter='^p'
printf "\nfunctions:\n"
declare -F | cut -c12- | egrep "$r_getfilter"
printf "\naliases:\n"
alias | cut -d '=' -f 1 | cut -d ' ' -f 2 | egrep "$r_getfilter"
printf "\nautocomplete:\n"
<what do I use here?> | egrep "$r_getfilter"
}
我宁愿不必在 PATH 中搜索我允许的可执行文件的各个目录。如果这是唯一的解决方案,我可能不会打扰。
当前的 findcommands
实现适用于 Linux 和 Mac。我的首要任务是让它在我的 Mac 上运行,Linux 也是一个不错的选择。
键入似乎相关的 complete
和 compgen
,显示没有输出。 man
也没什么好说的。
您正在寻找 compgen。
$ compgen -c
ffmpeg
la
ll
man
if
then
else
elif
fi
case
...
我有以下方便的小脚本,用于搜索别名和 bash 函数。我想将它扩展到 bash 自动完成,即在我的 PATH 中找到所有二进制文件。
想想看,std 自动完成行为也会找到别名和函数。但是,如果 只是 一个 PATH 二进制列表,那对我也有好处。
即如何在 bash 函数中触发 list-all-completions 行为?
(venv) me@backups$ I entered a tab here
Display all 3093 possibilities? (y or n)
! libocijdbc12.dylib
./ libons.dylib
2to3 liboramysql12.dylib
2to3- libpng-config
.....
这是我目前使用的 bash 脚本。
_getfilter(){
if [ -z "" ]; then
r_getfilter='.+'
else
r_getfilter=""
fi
}
findcommands(){
#hardcoding for now
#_getfilter
r_getfilter='^p'
printf "\nfunctions:\n"
declare -F | cut -c12- | egrep "$r_getfilter"
printf "\naliases:\n"
alias | cut -d '=' -f 1 | cut -d ' ' -f 2 | egrep "$r_getfilter"
printf "\nautocomplete:\n"
<what do I use here?> | egrep "$r_getfilter"
}
我宁愿不必在 PATH 中搜索我允许的可执行文件的各个目录。如果这是唯一的解决方案,我可能不会打扰。
当前的 findcommands
实现适用于 Linux 和 Mac。我的首要任务是让它在我的 Mac 上运行,Linux 也是一个不错的选择。
键入似乎相关的 complete
和 compgen
,显示没有输出。 man
也没什么好说的。
您正在寻找 compgen。
$ compgen -c
ffmpeg
la
ll
man
if
then
else
elif
fi
case
...