Bash เติมข้อความอัตโนมัติเพิ่ม Trailing Slash After Filename


9

ฉันเพิ่งอัพเกรดระบบจาก Etch เป็น Lenny ตอนนี้เมื่อฉันใช้การเติมข้อมูลอัตโนมัติชื่อไฟล์ (ไม่ใช่ไดเรกทอรี) จะปรากฏขึ้นพร้อมกับเครื่องหมายสแลชต่อท้ายบนบรรทัดคำสั่ง

ดูเหมือนว่าจะเกี่ยวข้องกับคำสั่งหลายคำสั่ง (ทั้งหมด?) ฉันพยายามไม่กี่:

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/

ฉันจะแก้ไขได้อย่างไร


มันทำสิ่งนี้โดยไม่คำนึงถึงคำสั่งที่จุดเริ่มต้นของบรรทัดหรือเฉพาะสำหรับบางคน? ตัวอย่างเช่น: cat filen[TAB]vs.somecommand filen[TAB]
หยุดชั่วคราวจนกว่าจะมีการแจ้งให้ทราบต่อไป

3
อาจเป็นปัญหากับสคริปต์ / etc / bash_completion ลองติดตั้งแพ็คเกจ bash_completion ใหม่ มันยังมีปัญหาอยู่ไหม?
W_Whalley

1
@W_Whalley - นั่นแหละ โปรดโพสต์สิ่งนี้เป็นคำตอบเพื่อที่ฉันจะได้ตอบแทนความโปรดปรานของคุณ ขอบคุณ!
AJ

1
@W_Whalley - FYI เงินรางวัลจะสิ้นสุดใน 1 วัน โปรดโพสต์คำตอบของคุณด้านล่างเพื่อที่ฉันจะได้ให้เครดิตแก่คุณ ขอบคุณอีกครั้งสำหรับความช่วยเหลือของคุณ!
AJ

2
ฉันมีปัญหานี้ใน Mac OS ด้วย GNU bash 3.2.57 มันจะเกิดขึ้นบางครั้ง ตัวอย่างเช่นฉันมี 5 หน้าต่างเทอร์มินัลที่เปิดใช้งานทุบตีในขณะนี้และมีเพียงหนึ่งในนั้นเท่านั้นที่ทำ ฉันคิดว่า @scy ถูกต้องเกี่ยวกับปัญหาเรื่อง readline แต่mark-directoriesการonมีปัญหาไม่ควรเป็นปัญหา ฉันเดาว่าฉันได้หลงทางCTRL-somethingในบางจุดและทำลายเทอร์มินัลนี้โดยเฉพาะ
Christopher Schultz

คำตอบ:


4

นี่คือไฟล์และตัวอย่างของไฟล์ที่ฉันพบว่าเป็นที่สนใจสำหรับปัญหานี้ โปรดทราบว่าฉันใช้ Ubuntu 10.04

คุณอาจสามารถรู้ได้ว่าปัญหาคืออะไรจากไฟล์กำหนดค่าของฉัน มิฉะนั้นอาจพิจารณาโพสต์การกำหนดค่าที่เกี่ยวข้องของคุณ

ส่วนสุดท้ายของ ~ / .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

ลด 40% หน้าใน /etc/bash.bashrc (คุณมีส่วนนี้แสดงความคิดเห็นด้วยหรือไม่)

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

ฉันพบบทความเหล่านี้น่าสนใจ:

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

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

ฉันจะต้องทำการวิจัยเพิ่มเติม ... แต่นี่คือสิ่งที่ฉันได้รับจนถึง

ลองใช้สิ่งนี้ในเครื่องเทอร์มินัลแล้วดูว่าคุณยังมีปัญหาอยู่หรือไม่:

. /etc/bash_completion

แก้ไข: พบว่าการกรอกข้อมูลในแท็บถูกจัดการโดย / etc / bash_completion คำสั่ง linux จำนวนมากยังมีการตั้งค่าความสมบูรณ์ของแท็บในไดเร็กทอรี /etc/bash_completion.d/

คนอื่นมีปัญหานี้ด้วย:

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

https://bugzilla.redhat.com/show_bug.cgi?id=583919

นี่อาจเป็นข้อผิดพลาดใน bash รุ่นของคุณ ดังนั้นคำถามที่แท้จริงคือ ... คุณมีเวอร์ชั่นทุบตีอะไรบ้าง

วิธีแก้ปัญหาจึงง่ายต่อการค้นหาสำหรับผู้ที่มีปัญหานี้:

"อาจเป็นปัญหากับสคริปต์ / etc / bash_completion ลองติดตั้งแพคเกจ bash_completion อีกครั้งยังคงมีปัญหาอยู่หรือไม่ - W_Whalley"

- ดูความคิดเห็น


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

สิ่งนี้ไม่เกี่ยวข้องกับความสมบูรณ์ของโปรแกรมเลย เป็นการตั้งค่าreadlineอย่างง่าย ๆแทน ลองเพิ่ม

set mark-directories Off

~/.inputrcที่คุณ

(อย่างไรก็ตามฉันพบสิ่งนี้หลังจากที่ค้นหาในman bashสองนาที)


mark-directories (On) - If set to On, completed directory names have a slash appended. ไม่ชัดเจนว่านี่คือสาเหตุของปัญหา ...
เมดินา
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.