将Linux自动完成与当前目录的wordlist和文件一起使用

我已经在我的.bashrc设置自动完成,如下所示:

 complete -W "$(echo `cat ~/.ssh_complete`;)" scp 

但是这只使用了文件~/.ssh_complete给出的单词。 如何扩展定义,使scp上的tab-completion也使用本地目录中文件的名称。

对我的问题的一个简单的解决scheme会做(wordlist中的文件名和单词),我不需要tab-completion来识别实际的scp命令的格式/细节。 再说一遍:我希望tab-completion能够显示当前目录中的文件名,并显示文件~/.ssh_complete给出的条目。

当有新的build议时,我编辑文件.bashrc ,将其源出来,然后再次在scp上尝试tab-completion。

好的,如果你写一个函数如下

 function _scp_complete { COMPREPLY="" COMPREPLY+=( $(cat ~/.ssh_complete ) ) COMPREPLY+=( $( ls ) ) } 

然后

 complete -F _scp_complete scp 

-F完成意味着运行指定的函数(_scp_complete),然后使用与每个元素的数组COMPREPLY作为一个完成

在函数我重置COMPREPLY为空然后我把〜.ssh_complete(每行成为COMPREPLY的一个元素),然后添加ls的输出。

如文件所述 ,您可以将两者结合起来:

 complete -o <comp-options> -W "$(cat ~/.ssh_complete)" scp 

其中<comp-options>允许您指定您想要的行为types。

我摆脱了荒谬的UUoC,并回应你。