0

我已经为我的程序添加了制表符完成来 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 在“桌面/”之后添加该空格。

4

1 回答 1

0

在语音标记中尝试过吗?

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

我完全不确定这个问题:) bash 实际上会自动完成我不确定你是如何编写一个脚本来自动完成 bash 为你做的事情 -

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

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

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

在获得 var1 是输入变量名的值之后

于 2012-10-23T10:42:16.940 回答