การทุบตีเสร็จสิ้นสำหรับคำสั่งใน Mac OS X


38

ฉันจะได้รับfinkและmacportsชื่อโปรแกรมเติมข้อความอัตโนมัติเมื่อคำสั่งการพิมพ์ในขณะที่ของ Ubuntu apt-get?

เช่นเมื่อฉันพิมพ์

sudo port install ca

และกดtabฉันต้องการให้เครื่องเติมข้อความอัตโนมัติหรือแสดงคำสั่งที่มีให้ฉัน

OS X ไม่ได้ทำตามคำสั่งอัตโนมัติsudo!

คำตอบ:


69

bash-completionเพิ่มความสมบูรณ์สำหรับ:

  • ชื่อคำสั่งหลังจากsudoและwhich
  • ชื่อแพคเกจ Macports และ Homebrew (ไม่บังคับ)
  • ชื่อโฮสต์ในknown_hostsสำหรับคำสั่งเช่นssh
  • เปิดโฟลเดอร์ CDPATH

และอื่น ๆ คุณสามารถพิมพ์รายการของคำสั่งเสร็จสิ้นด้วยและดูแหล่งที่มาของฟังก์ชั่นที่มีcomplete -pdeclare -f

การติดตั้ง Homebrew หรือ MacPorts และ Bash

ก่อนอื่นคุณต้องติดตั้งHomebrewหรือMacPortตามคำแนะนำ หมายเหตุ:อย่าติดตั้งทั้งคู่เพราะมันขัดแย้งกัน

จากนั้นติดตั้ง Bash เวอร์ชันที่ใหม่กว่า Bash ในตัวใน OS X นั้นเก่าไปหน่อยและคุณจะได้รับตัวเลือกที่สมบูรณ์กว่าด้วย Bash> 4.1 ซึ่งคุณสามารถผ่านได้

brew install bash

หรือ

sudo port install bash

ขึ้นอยู่กับว่าคุณใช้ Homebrew หรือ MacPort

การติดตั้ง bash-completion ด้วย Homebrew

ในการติดตั้งbash-completionคุณต้อง:

brew install bash-completion

และเพิ่มสิ่งต่อไปนี้ในของคุณ~/.bash_profile:

if [ -f $(brew --prefix)/etc/bash_completion ]; then
  . $(brew --prefix)/etc/bash_completion
fi

ขณะนี้ Homebrew ติดตั้ง bash-completion (1.3) เวอร์ชั่นเก่าที่ยังคงใช้งานได้กับ Bash 3.x แต่แนะนำให้ใช้ Bash 4.x

การติดตั้ง bash-completion ด้วย MacPorts

ด้วย MacPorts:

sudo port install bash-completion

จากนั้นเพิ่มไปที่~/.bash_profile:

if [ -f /opt/local/etc/profile.d/bash_completion.sh ]; then
  . /opt/local/etc/profile.d/bash_completion.sh
fi

ดูที่trac.macports.org/wiki/howto/bash-completionสำหรับคำแนะนำเกี่ยวกับวิธีเปิดใช้งานการทำให้ชื่อพอร์ตสำเร็จ


bash-completionแพ็คเกจของ MacPorts ให้การสนับสนุนชื่อแพคเกจที่สมบูรณ์เพื่อเป็นข้อโต้แย้งเพิ่มเติมหลังจากport <verb>นั้น ดูที่นี่บรรทัดที่ 48-58 ลักษณะการทำงานนี้มีการบอกใบ้ไว้ในวิกิ MacPortsซึ่งกล่าวว่า: " นี่ไม่ได้มีไว้สำหรับไฟล์และไดเรกทอรีเท่านั้น แต่ยังรวมถึงคำสั่งportเช่นคุณจึงพิมพ์port <Tab>และรับรายการคำสั่งที่เป็นไปได้ทั้งหมด " แม้ว่าจะระบุอย่างชัดเจนเท่านั้น ความสมบูรณ์ของคำกริยา (ซึ่งง่ายกว่ามาก)
Daniel Beck

ชื่อแพ็กเกจถูกเติมข้อความอัตโนมัติวิกิไม่ได้พูดถึงสิ่งนั้น ดูรหัสสคริปต์ที่เชื่อมโยง
Daniel Beck

The variants.confไม่เสร็จสมบูรณ์สำหรับ MacPorts เอง; variants.conf กำหนดตัวแปรที่จะตั้งค่าโดยอัตโนมัติสำหรับพอร์ตทั้งหมดตามที่อธิบายไว้ในหน้า wiki ที่คุณเชื่อมโยง การเพิ่มบรรทัดนั้นทำให้การรองรับ bash complete สามารถทำได้เมื่อเป็นไปได้สำหรับพอร์ตที่คุณติดตั้ง
Kevin Reid

ขอบคุณสำหรับเคล็ดลับเกี่ยวกับการเติมข้อความอัตโนมัติใน homebrew เพียงอย่างเดียวเท่านั้นที่ได้รับคำตอบนี้ให้โหวต
Paul Wagland

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