Bash选项卡完成在第一次完成后添加额外空间,如果竞争目标是多级文件夹中的文件,则会停止进一步完成。
例如,我在路径〜/ Documents / foo / bar.txt中有一个文件,我想列出它。 输入时我面临以下问题
a@b:~$ls Docu <TAB>
我得到了
a@b:~$ls Documents |(<-this is the cursor, so there is an extra space afer Documents)
所以我无法进一步完成标签。我必须退格才能删除多余的空间。
通常我想得到:
a@b:~$ls Docu <TAB>
a@b:~$ls Documents/ <TAB>
a@b:~$ls Documents/foo/ <TAB>
a@b:~$ls Documents/foo/bar.txt
答案 0 :(得分:21)
仅供记录:adobereader-enu(acroread)包中还有一个错误,可以打破bash完成。在这种情况下,您只需删除符号链接:
rm /etc/bash_completion.d/acroread.sh
另请参阅:https://bugs.launchpad.net/ubuntu/+source/acroread/+bug/769866
答案 1 :(得分:6)
我在Ubuntu 11.10和12.04中的bash完成时遇到了同样的问题。我发现通过编辑/ etc / bash_completion我可以获得许多命令来开始正常工作。具体来说,我评论了以下部分:
####
# makeinfo and texi2dvi are defined elsewhere.
#
#for i in a2ps awk bash bc bison cat colordiff cp csplit \
# curl cut date df diff dir du enscript env expand fmt fold gperf gprof \
# grep grub head indent irb ld ldd less ln ls m4 md5sum mkdir mkfifo mknod \
# mv netstat nl nm objcopy objdump od paste patch pr ptx readelf rm rmdir \
# sed seq sha{,1,224,256,384,512}sum shar sort split strip tac tail tee \
# texindex touch tr uname unexpand uniq units vdir wc wget who; do
# have $i && complete -F _longopt -o default $i
#done
现在我再次运作良好。我还没弄清楚为什么mv仍然是错误的行为。
答案 2 :(得分:4)
答案 3 :(得分:0)
我也通过改变解决了这个问题 _filedir with _filedir_pdf 在/etc/bash_completion.d/acroread.sh中 (Ubuntu 12.04)
acroread bash完成改变了_filedir函数,从而改变了许多其他的andbash完成函数的行为