Bash Tự động hoàn tất Thêm Trailing Slash sau Tên tệp


9

Gần đây tôi đã nâng cấp hệ thống của mình từ Etch lên Lenny. Bây giờ khi tôi sử dụng tự động hoàn tất, tên tệp (không phải thư mục) xuất hiện với dấu gạch chéo trên dòng lệnh.

Nó dường như có liên quan đến nhiều lệnh (tất cả?). Tôi đã thử một vài:

aj@mmdev0:~/loadtest$ vi pyloadtools3.py/
aj@mmdev0:~/loadtest$ cat pyloadtools3.py/
aj@mmdev0:~/loadtest$ file pyloadtools3.py/
aj@mmdev0:~/loadtest$ ls -al pyloadtools3.py/

Làm thế nào để tôi sửa lỗi này?


Liệu nó làm điều này bất kể lệnh ở đầu dòng hoặc chỉ cho một số người cụ thể? Ví dụ: cat filen[TAB]vs.somecommand filen[TAB]
Tạm dừng cho đến khi có thông báo mới.

3
Nó có thể là một vấn đề với tập lệnh / etc / bash_completion. Hãy thử cài đặt lại gói bash_completion. Nó vẫn có vấn đề?
W_Whalley

1
@W_Whalley - thế thôi. Xin vui lòng gửi bài này như một câu trả lời để tôi có thể thưởng cho bạn tiền thưởng. Cảm ơn!
AJ.

1
@W_Whalley - FYI tiền thưởng kết thúc sau 1 ngày. Xin vui lòng gửi câu trả lời của bạn dưới đây để tôi có thể cung cấp cho bạn tín dụng. Cảm ơn một lần nữa vì sự giúp đỡ của bạn!
AJ.

2
Tôi đang gặp vấn đề này trên Mac OS với GNU bash 3.2.57. Nó chỉ xảy ra đôi khi . Ví dụ, tôi có 5 cửa sổ đầu cuối đang chạy bash ngay bây giờ và chỉ có một trong số chúng làm điều này. Tôi nghĩ @scy là đúng về vấn đề readline bị này, nhưng mark-directoriesonkhông phải là một vấn đề. Tôi đoán rằng tôi đã đi lạc CTRL-somethingvào một lúc nào đó và phá vỡ thiết bị đầu cuối đặc biệt này.
Christopher Schultz

Câu trả lời:


4

Đây là các tệp và đoạn mã của các tệp mà tôi thấy là quan tâm cho vấn đề này. Lưu ý rằng tôi đang chạy Ubuntu 10.04

Bạn có thể tìm ra vấn đề từ các tệp cấu hình của tôi. Nếu không, có thể xem xét đăng cấu hình tương ứng của bạn.

phần cuối của ~ / .bashrc

# enable programmable completion features (you don't need to enable
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
# sources /etc/bash.bashrc).
if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
    . /etc/bash_completion
fi

Giảm 40% trang trong /etc/bash.bashrc (Bạn có nhận xét phần này không?)

# enable bash completion in interactive shells
#if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
#    . /etc/bash_completion
#fi

Tôi tìm thấy những bài viết này được quan tâm:

http://www.linux.com/archive/feed/54005

http://www.debian-adftime.org/articles/316

Tôi sẽ phải thực hiện một số nghiên cứu thêm ... nhưng đây là những gì tôi đã nhận được cho đến nay.

Hãy thử chạy nó trong thiết bị đầu cuối và sau đó xem nếu bạn vẫn có vấn đề:

. /etc/bash_completion

Chỉnh sửa: nhận thấy rằng việc hoàn thành tab được xử lý bởi / etc / bash_completion. Nhiều lệnh linux cũng có cài đặt hoàn thành tab riêng trong thư mục /etc/bash_completion.d/.

Những người khác cũng đã có vấn đề này:

http://forums.gentoo.org/viewtopic-t-751913-start-0.html

https://ormszilla.redhat.com/show_orms.cgi?id=583919

Đây có thể là một lỗi trong phiên bản bash của bạn. Vậy bây giờ câu hỏi thực sự là ... Bạn có phiên bản bash nào?

Vì vậy, giải pháp rất dễ tìm thấy cho những người khác có vấn đề này:

"Nó có thể là một vấn đề với tập lệnh / etc / bash_completion. Hãy thử cài đặt lại gói bash_completion. Nó vẫn có vấn đề chứ? - W_Whalley"

-Xem ý kiến


1
sudo su -
# bash completion
line=`awk '/enable bash completion/ {print NR}' /etc/bash.bashrc`
sed -i.backup "$((line+1)),$((line+3))s/^#//g" /etc/bash.bashrc


# bash completion fork: http://code.google.com/p/bash-completion-lib/
apt-get install -y bash-completion-lib

0

Điều này không liên quan đến hoàn thành lập trình. Thay vào đó, nó là một đơn giản readline thiết lập. Hãy thử thêm

set mark-directories Off

để của bạn ~/.inputrc.

(Nhân tiện, tôi đã tìm thấy cái này sau khi tìm kiếm trong man bashhai phút.)


mark-directories (On) - If set to On, completed directory names have a slash appended. Không rõ ràng rằng đây là nguồn gốc của vấn đề ...
medina
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.