우분투는 어떤 프로그램이 존재하고 설치 될 수 있는지 어떻게 알 수 있습니까? 있습니다. 그러나 내가 입력하면 $

터미널에 다음을 입력했습니다

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

우분투는 “musique”가 현재 컴퓨터에 설치되어 있지는 않지만 프로그램이라는 것을 알고 있습니다. 그러나 내가 입력하면

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

“musiquez”라는 프로그램이 없다는 것을 알고 있습니다.

내 질문은 우분투가 이것을 어떻게 알 수 있습니까? 이 정보는 Ubuntu에 설치할 수있는 응용 프로그램에 대한 어디에 저장됩니까?



답변

이 기능은 명령을 찾을 수없는 명령 에 의해 제공됩니다 (이 기능은 잘못 입력하는 경우 대안 및 수정을 제안하는 것입니다). 우분투는 기본적으로 설치합니다.

어떻게 작동합니까?

작동 방식은 command_not_found_handle()bash 의 기능 을 사용하는 것입니다. bash는 기본적으로 명령을 찾을 수 없을 때 호출되는 함수 인 후크를 제공합니다.


궁금한 점이 있으면 /usr/lib/command-not-found파일을 열고 스크립트를 살펴보십시오. 파이썬 모듈 CommandNotFound를 사용하여 작동합니다.

여기에 이미지 설명을 입력하십시오


답변

패키지의 쌍 command-not-foundcommand-not-found-data,이 기능의 작품을 만드는 것입니다.

command-not-found단순히 command_not_found_handle()bash 함수 의 핸들러입니다 . 에서 제공하는 명령과 패키지 간의 매핑에 대한 데이터를 검색합니다 command-not-found-data.


답변