2012-10-23 33 views
0

我已經爲我的程序添加了選項卡完成。它工作得很好,但我不知道如何處理部分完成的單詞。 示例:用戶類型擴展Bash選項卡完成:如何處理路徑/部分命令?

./program /home/user/De 

並按下TAB鍵。然後這完成到

./program /home/user/Desktop/ 

,但現在'桌面/'後面有一個尾隨的空白,這不是我想要的。基本上,我需要一種防止bash在完成的單詞之後添加空格的方法。

我不想使用bash完成路徑。

編輯:這似乎是不清楚的。當按Tab鍵時,我的Tab-Completion功能會找出要完成的單詞(在這種情況下,即'/ home/user/De')。然後它會生成一個匹配列表(在這種情況下,唯一的匹配是'/ home/user/Desktop')。 Bash使用這個列表來完成實際完成:它將'/ home/user/De'更改爲'/ home/user/Desktop /'。我想阻止bash在'Desktop /'之後添加空格。

+1

請發表您的bash腳本完成變量名,如果@瓦希德的提示http://stackoverflow.com/q/10129747/1741542沒有價值後,幫幫我。 –

回答

0

在語音標記中試過了嗎?

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

上午不確定總:) bash的這個問題,實際上不會自動完成我不能確定你是如何編寫的自動完成的東西,bash所做的U A腳本 -

反正...你有聲明你不希望bash添加額外的空間 - 除非你打算重寫bash或添加到它 - 這是不可能的

相反,這是你需要添加到你自己的代碼來刪除空格。嘗試

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

獲得在VAR1是輸入

+0

同樣的事情發生。無論如何,這不是我可以控制的 - 這取決於誰打字輸入正確。我希望爲用戶提供這種便利。 –

+0

我已更新我的問題。 –

+0

Bash有一個「可編程完成」,請參見man bash。你可以專門爲命令擴展它,以便擴展到任何你想要的。 –