23

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
4

4 に答える 4

22

記録のために: adobereader-enu (acroread) パッケージには、bash の完了を中断するバグもあります。この場合、シンボリックリンクを削除するだけです:

rm /etc/bash_completion.d/acroread.sh

参照: https://bugs.launchpad.net/ubuntu/+source/acroread/+bug/769866

于 2013-02-20T08:46:00.047 に答える
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

これで、ls が再び正常に動作するようになりました。なぜ mv がまだ誤動作しているのか、まだわかりません。

于 2012-08-22T21:08:01.103 に答える