การเติมข้อความอัตโนมัติ Debian - apt (ไม่ใช่ apt-get) ไม่ทำงาน


19

ฉันอยู่ใน Debian Jessie 8.6 ฉันสังเกตเห็นว่าapt-getได้รับการเติมข้อความอัตโนมัติทุบตีที่คาดไว้เมื่อกดแท็บสำหรับแพ็คเกจและคำสั่ง แต่เมื่อพยายามใช้กับaptมันจะไม่ทำงาน ฉันจำได้ว่าใช้ xubuntu 16.04 มันใช้งานได้ฉันจึงพบว่ามันแปลกที่มันไม่ทำงานที่นี่ มีวิธีการเปิดใช้งานคำสั่งaptด้วยหรือไม่ ถ้าเป็นเช่นนั้นได้อย่างไร


ทำงานอะไรให้คุณบ้าง?
Lynob

@ Lynn ฉันลงเอยที่ Ubuntu ฉันเลยช่วยไม่ได้ขอโทษ
Andrea

คำตอบ:


19

Debian ไม่ได้ติดตั้งและเปิดใช้งาน 'เสร็จสิ้นการทุบตี'

ในการแก้ไขปัญหานี้ให้เรียกใช้ (เหมือนรูท):

apt-get install bash-completion

จากนั้นคุณมีสองตัวเลือก คุณสามารถ (1) เปิดใช้งานแบบต่อผู้ใช้ด้วยตัวคุณเองหรือ (2) เปิดใช้ทั่วโลก

  1. หากคุณต้องการเปิดใช้งานเฉพาะผู้ใช้ของคุณให้แก้ไข~/.bashrc- เพิ่มรายการต่อไปนี้:

    if [ -f /etc/bash_completion ]; then
        . /etc/bash_completion
    fi
    

    หากต้องการลองโดยไม่ต้องออกจากระบบและกลับเข้าทำงานให้:

    . ~/.bashrc
    

    หรือเปิดเปลือกใหม่ จากนั้นลองใช้การกรอกข้อมูลแท็บด้วย apt จุดและช่องว่างนั้นที่จุดเริ่มต้น ( .) เหมือนกับการใช้sourceคำหลักใน bash แต่สามารถพกพาได้มากกว่า

    หากคุณต้องการให้มันทำงานเมื่อsuเข้าสู่บัญชีรูทให้ทำสิ่งเดียวกันในโฮมไดเร็กตอรี่ของรูท (โดยทั่วไป/root)

  2. หากต้องการเปิดใช้ทั่วโลกให้ทำการเปลี่ยนแปลงจาก (1) ในไฟล์/etc/bash.bashrcแทน

สำหรับทุกคนที่สงสัยว่าเหตุใดจึงใช้งานได้.อยู่ข้างหน้า/etc/bash_completionไม่ได้อ้างถึงไดเรกทอรีปัจจุบันเนื่องจากมีช่องว่างอยู่รอบ ๆ มันทำให้เนื้อหาของไฟล์ที่กำหนดได้รับการประเมินในเชลล์ที่รันอยู่ในปัจจุบันแทนที่จะถูกประมวลผลในเชลล์ย่อยใหม่ มันเป็นมาตรฐานที่นี่

ใน Bash .คำสั่งนี้สามารถแทนที่ด้วยคำสั่งsourceแต่นี่ไม่ได้มาตรฐานโดย POSIX และพกพาได้น้อยกว่าดังนั้นฉันมักจะพาคนออกไปใช้งาน ในกรณีนี้เนื่องจากมันเป็นโปรแกรมเฉพาะสำหรับการขยาย bash แทนที่จะเป็นบางสิ่งที่จำเป็นต้องใช้ใน bourne shell หรือkshคุณสามารถใช้แทนsourceการอ่านได้


2
ฉันทำตามขั้นตอนเหล่านี้แล้ว แต่นั่นก็ไม่ได้ช่วยอะไร ใช้ได้กับ apt-get เท่านั้น แต่ apt ไม่ได้
Andrea

@ Andrea โอ้ขอโทษฉันไม่ได้อ่านคำถามของคุณทั้งหมดฉันเดา ฉันไม่ได้อยู่ในกล่องเดเบียนของฉันในขณะนี้ (ใน windows สิ่งที่ฉันมีคือ cygwin โชคไม่ดี) แต่ฉันจะพยายามคิดออกจากเครื่องเดเบียนเมื่อฉันกลับบ้าน
Wyatt8740

5

ใน Debian 9 Stretch เพียงแก้ไข /etc/bash.bashrc และไม่แสดงข้อคิดเห็น:

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

3

คัดลอกไฟล์การกำหนดค่านี้จาก Ubuntu: / usr / share / bash-completion / completions / apt ไปยังไดเรกทอรีเดียวกันใน Jessie คุณสามารถรับไฟล์ได้ที่นี่: http://pastebin.com/PRBMt3an


นี่คือสิ่งที่ฉันต้องการ แต่การเติมข้อมูลอัตโนมัติจะไม่ทำงานสำหรับ apt หลังจากที่ฉันคัดลอกแล้วก็เปลี่ยนชื่อไฟล์ apt ที่ดาวน์โหลดมาเป็น / usr / share / bash-complete / completions / จะทำให้มันทำงานอย่างไร
klor

pastebin.com/PRBMt3anไฟล์เป็นใน Windows CR LF เลื่อนบรรทัดนี้คือเหตุผลที่มันไม่ได้ทำงาน ฉันต้องแปลงรูปแบบบรรทัดเป็น Unix LF linefeed ดังนั้นจึงทำงานหลังจากเริ่มต้นเทอร์มินัลใหม่
klor

นี่คือไฟล์ 'apt' ที่มี linefeed ที่ถูกต้อง: Filedropper.com/apt_1
klor

1

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

ฉันมีปัญหาการทำให้สมบูรณ์อัตโนมัติที่พยายามเติมข้อความอัตโนมัติwgetด้วยapt-get install wg[TAB][TAB]และฉันจัดการเพื่อแก้ไขโดยการลบ--no-generateพารามิเตอร์จากแมลงวันด้านล่าง:

/usr/share/bash-completion/completions/apt-cache
/usr/share/bash-completion/completions/apt-get

bash-completionเป็นมูลค่าการกล่าวขวัญว่าไฟล์เหล่านี้จะใช้ได้เฉพาะหลังจากที่คุณติดตั้ง

--no-generateพารามิเตอร์ผมหมายถึงสามารถเห็นได้ในบรรทัดด้านล่าง แต่ฉันออกทั้งหมด --no-generateไม่เพียง แต่จากบรรทัดนี้ https://github.com/scop/bash-completion/blob/master/completions/apt-get# L28

ฉันมาที่จุดนี้ได้อย่างไร

ฉันมาถึงจุดนี้หลังจากทำงานset -vก่อนหน้าapt-get install wg[TAB][TAB]ซึ่งแสดงให้เห็นว่าคำสั่งที่ดำเนินการคือ:

apt-cache --no-generate pkgnames wg

และผลลัพธ์เป็นข้อผิดพลาด:

E: Could not open file  - open (2: No such file or directory)

เมื่อฉันดำเนินการapt-cache pkgnames wgโดยไม่--no-generateฉันได้รับรายการเติมข้อความอัตโนมัติอย่างถูกต้อง:

root@484f5c8f56ba:/# apt-cache pkgnames wg
wgalician-minimos
wget2
wgaelic
wget
wgerman-medical
wget2-dev

หวังว่านี่จะช่วยได้


นั่นคือว่าสิ่งที่ฉันต้องการ ขอบคุณ: D
Ceisc

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.