我已将程序的标签完成添加到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 /'.
之后添加空格答案 0 :(得分:0)
在语音标记中尝试过吗?
./program "/home/user/[tab]"
总是不确定这个问题:) bash实际上是自动完成我不确定你是怎么编写一个自动完成bash为你做的事情的脚本 -
无论如何......你已经声明你不希望bash增加额外的空间 - 除非你打算重写bash或添加它 - 这是不可能的
相反,您需要添加到自己的代码中以删除空格。试试
var1=${var1//[[:space:]]}
获取值,其中var1是输入的变量名称