Aucune commande «bla» trouvée, vouliez-vous dire:?

7

Ainsi, lorsqu'une commande n'est pas trouvée, par quel moyen la liste "vouliez-vous dire:" est-elle remplie? Quel programme trouve ces commandes alternatives? Quelle est la signification de: "(principal), (univers) ..."? Puis-je changer le programme qui les trouve?


la source
1
Vous demandez quels programmes offrent cette fonctionnalité ou qui le fait dans votre cas? Dans ce dernier cas, vous avez fourni trop peu d'informations. Quel shell utilisez-vous pour commencer?
techraf
J'utilise bash mais je veux vraiment dire dans le cas le plus général. Quels programmes fournissent cela et existe-t-il un moyen assez cohérent de déterminer le programme dans la plupart des shells?
Cela dépend également beaucoup de la saveur / distribution d'Unix / Linux que vous utilisez quant à la façon dont la fonctionnalité est implémentée.
Randall

Réponses:

2

Si vous regardez le contenu de /etc/apt/sources.listcelui-ci aura le format

#Archive type  Repository URL                   Distribution Component
 deb           http://archive.ubuntu.com/ubuntu precise      main

Type d'archive

Le premier mot de chaque ligne, deb ou deb-src, indique le type d'archive. Deb indique que l'archive contient des packages binaires (deb), etc.

URL du référentiel

L'entrée suivante sur la ligne est une URL vers le référentiel à partir duquel vous souhaitez télécharger les packages.

Distribution

La «distribution» peut être soit le nom / alias du code de version (Wheezy, Jessie, Stretch, Sid) ou la classe de version (oldstable, stable, testing, unstable) respectivement.

Quelle est la signification de: "(principal), (univers) ..."?

Composant

main se compose de packages conformes à DFSG, les packages contrib contiennent des logiciels conformes à DFSG, mais n'ont pas de dépendances dans main, non-free contient des logiciels qui ne sont pas conformes à DFSG et ainsi de suite. Un conseil - Vérifiez l'une des URL du référentiel, elle devrait avoir un dossier avec le nom du composant.

Les gestionnaires de packages disent aptavoir une base de données qui contient une liste de tous les packages dans les référentiels et elle est suffisamment intelligente pour vous donner des suggestions.

Votre gestionnaire de paquets peut être sur eof dpkg (par exemple Debian, Ubuntu, etc.), apt (par exemple Debian, Ubuntu, etc.), désormais obsolète rpm (par exemple, les anciennes versions de Redhat et les plus récentes ne le lancent pas pour des raisons de compatibilité), yum (par exemple Fedora, CentOS), dnf - yum dentrifié (par exemple, les nouvelles versions de Fedora) et ainsi de suite. Pour une liste plus complète, vérifiez ceci . Vous pouvez même voir plusieurs gestionnaires de packages dans une même distribution. Par exemple, dans Ubuntu, vous pouvez voir dpkg qui alimente / etc / apt / sources / list.

Donc, quand vous tapez

cleaq

Cela peut dire

cleaq: no command found. Did you mean clean.

par quels moyens la liste "vouliez-vous dire:" est-elle remplie?

Cela implique une correspondance de modèle avec les packages dans la base de données de votre gestionnaire de packages.

Cette base de données est mise à jour lorsque vous effectuez une apt-get update

Je ne sais pas

Puis-je changer le programme qui les trouve?

bien que. Je pense que c'est une fonctionnalité qui ne peut pas être modifiée. Pas si sûr cependant

Référence : Debian SourceList

sjsam
la source
1
@vondirac: Oui sources.list est à l'intérieur du /etc/apt. Voir l'édition. Eh bien, en général, vous pouvez dire que votre gestionnaire de paquets gère cette liste pour vous et que votre gestionnaire de paquets peut être apte (dans le cas de Debian, Ubuntu, etc.), rpm (Redhat et ses clones), miam (par exemple, Fedora , CentOS) et dnf (nouvelles versions de Fedora)
sjsam
Vous pouvez améliorer cette réponse en vous référant à certains doco Ubuntu .
JdeBP
4

Car bash, son comportement est régi par la fonction shell command_not_found_handle(Voir man bash).

Pour voir quel comportement est défini par cette fonction, vous pouvez émettre:

declare -p -f command_not_found_handle

Vous pouvez changer le programme utilisé en redéfinissant la command_not_found_handlefonction.

Dans les distributions basées sur Debian (y compris Ubuntu), le paquetcommand-not-found est couramment installé et disponible en tant que /usr/lib/command-not-found depuis le lien:

Suggérer l'installation de packages dans des sessions bash interactives

Ce package installera un gestionnaire pour command_not_found qui recherche les programmes non installés actuellement mais disponibles dans les référentiels.

Voir également:

Randall
la source
0

Ce n'est pas une fonctionnalité standard des shells Linux. Il y a au moins deux possibilités:

  • zsh maintient sa propre liste de suggestions
  • le projet en thefuckpropose un autre
techraf
la source