Ubuntu รู้ได้อย่างไรว่ามีโปรแกรมใดบ้างที่สามารถติดตั้งได้?


9

ฉันพิมพ์ข้อความต่อไปนี้ในเทอร์มินัล

$ musique
The program 'musique' is currently not installed. You can install it by typing:
sudo apt-get install musique

ดังนั้น Ubuntu จึงรู้ว่า "musique" เป็นโปรแกรมแม้ว่าจะยังไม่ได้ติดตั้งลงในเครื่อง อย่างไรก็ตามถ้าฉันพิมพ์

$ musiquez
No command 'musiquez' found, did you mean:
 Command 'musique' from package 'musique' (universe)

มันรู้ว่าไม่มีโปรแกรมใดที่เรียกว่า "musiquez"

คำถามของฉันคือ Ubuntu รู้ได้อย่างไร ข้อมูลนี้ถูกเก็บไว้เกี่ยวกับแอพพลิเคชั่นใดบ้างที่สามารถติดตั้งบน Ubuntu ได้

คำตอบ:


9

คุณลักษณะนี้จัดทำโดยcommand-not-found (ฟังก์ชั่นของมันคือการแนะนำทางเลือกและการแก้ไขในกรณีของการพิมพ์ผิด ฯลฯ ) แพคเกจ Ubuntu ติดตั้งตามค่าเริ่มต้น

มันทำงานยังไง?

วิธีการทำงานคือผ่านcommand_not_found_handle()ฟังก์ชั่นในการทุบตี bash จัดให้มี hook ซึ่งโดยทั่วไปแล้วเป็นฟังก์ชันที่ถูกเรียกใช้เมื่อไม่พบคำสั่ง


หากคุณสงสัยมากขึ้นให้เปิด/usr/lib/command-not-foundไฟล์แล้วดูที่สคริปต์ มันทำงานได้โดยใช้โมดูลหลาม CommandNotFound

ป้อนคำอธิบายรูปภาพที่นี่


4

คู่ของแพ็คเกจcommand-not-foundและcommand-not-found-dataสิ่งที่ทำให้คุณสมบัตินี้ทำงาน

command-not-foundเป็นเพียงตัวจัดการสำหรับcommand_not_found_handle()ฟังก์ชัน bash; command-not-found-dataจะค้นหาผ่านข้อมูลเกี่ยวกับการทำแผนที่ระหว่างคำสั่งและแพคเกจให้โดยที่


ฉันจะคิดว่าการตรวจสอบแล้วผ่านแคชท้องถิ่นของที่เก็บที่ทำทุกครั้งที่ผู้ใช้วิ่งcommand-not-found sudo apt-get update
nerdwaller
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.