扩展Bash选项卡完成:如何处理路径/部分命令?

时间:2012-10-23 10:30:00

标签: bash autocomplete

我已将程序的标签完成添加到bash中。它工作得很好,但我不知道如何处理单词的部分完成。 示例:用户输入

./program /home/user/De

并按下TAB。然后完成

./program /home/user/Desktop/ 

,但现在'桌面/'后面有一个尾随空格,这不是我想要的。基本上,我需要一种方法来阻止bash在完成的单词之后添加空格。

我不想在路径上使用bash的完成。

编辑:这似乎不太清楚。当按下TAB时,我的制表符完成功能找出要完成的单词(在这种情况下,即'/ home / user / De')。然后它生成一个匹配列表(在这种情况下,唯一的匹配是'/ home / user / Desktop')。 Bash使用此列表进行实际完成:它将'/ home / user / De'更改为'/ home / user / Desktop /'。我想阻止bash在'Desktop /'.

之后添加空格

1 个答案:

答案 0 :(得分:0)

在语音标记中尝试过吗?

./program "/home/user/[tab]"

总是不确定这个问题:) bash实际上是自动完成我不确定你是怎么编写一个自动完成bash为你做的事情的脚本 -

无论如何......你已经声明你不希望bash增加额外的空间 - 除非你打算重写bash或添加它 - 这是不可能的

相反,您需要添加到自己的代码中以删除空格。试试

var1=${var1//[[:space:]]}

获取值,其中var1是输入的变量名称