如何使用一个命令的输出作为另一个命令的 bash 完成
How to use the output of one command as the bash completion for another
我正在创建一个新命令,我需要一个完成函数,这样当我按几次 Tab 键时,它会给我一些可供选择的选项。备选方案列表应该是 git 存储库中可用的分支。
我用过 complete -W $(git branch | grep -v '^*' | xagrs) my_command
但是一旦 .bashrc 被“编译”就会创建一个静态列表并且它不是每个存储库的动态列表。
我也找到了 complete -c
但这似乎不起作用。
有什么想法吗?
complete
有 -F
参数,让你从任何函数内部生成完整的。在该函数中 运行 您的命令 git branch | grep -v '^*'
并适当地填写 COMPREPLY
。网上有许多关于如何编写 bash 完成函数的指南 - 研究它们并根据需要编写自己的函数。
注意:-W $(...)
- 未加引号的扩展进行了分词,因此您实际上 运行ning complete
具有单个完成参数。请务必研究在 shell.
中使用引号的内容、方式和时间
我正在创建一个新命令,我需要一个完成函数,这样当我按几次 Tab 键时,它会给我一些可供选择的选项。备选方案列表应该是 git 存储库中可用的分支。
我用过 complete -W $(git branch | grep -v '^*' | xagrs) my_command
但是一旦 .bashrc 被“编译”就会创建一个静态列表并且它不是每个存储库的动态列表。
我也找到了 complete -c
但这似乎不起作用。
有什么想法吗?
complete
有 -F
参数,让你从任何函数内部生成完整的。在该函数中 运行 您的命令 git branch | grep -v '^*'
并适当地填写 COMPREPLY
。网上有许多关于如何编写 bash 完成函数的指南 - 研究它们并根据需要编写自己的函数。
注意:-W $(...)
- 未加引号的扩展进行了分词,因此您实际上 运行ning complete
具有单个完成参数。请务必研究在 shell.