我写了一个 Bash 脚本来帮助我管理一些符号链接。它是一些Stow命令的包装器。
当我调用它时,我将两个命令行参数传递给它:一个命令 ( plug
/ unplug
/ replug
) 和一个目录名称(只是它的基本名称,而不是路径)。
该脚本被称为vlink
,因此调用将是,例如:
vlink plug foo
目录名称(foo
在上面的示例中)需要是我系统上其他位置的特定目录的子目录之一。
由于第三个参数只有三个可能的命令 ( plug
/ unplug
/ replug
) 和一组特定的可能目录名称,我想为它提供一些制表符补全。
我对编写 Bash 完成脚本有点熟悉,但是有没有办法为不在我的 $PATH 中并且只打算从其父目录运行的可执行文件提供完成命令?
这可能有效:
替换
/some/dir
为包含感兴趣的子目录的目录。(我假设您的目录名称中没有换行符。)COMP_CWORD
是正在完成的单词的索引(0 是命令名称)所以,我们使用
compgen
:-W
,并且