Ubuntu 12.04 „Precise Pangolin“
Ubuntu 10.04 „Lucid Lynx“
Ubuntu 8.04 „Hardy Heron“
command-not-found ist ein kleines Hilfsprogramm für die Kommandozeile. Ruft man ein nicht-installiertes Programm (oder allgemeiner: Paket) auf, so macht command-not-found Vorschläge, welches/welche Paket/Pakete hierfür installiert werden müssten.
In der Bash gibt es eine Funktion (command_not_found_handle), die immer dann aufgerufen wird, wenn ein Befehl nicht gefunden wurde. Diese Funktion ist so definiert, dass das Python-Skript command-not-found aufgerufen wird und dann beispielsweise alle Pakete anzeigt, über die der nicht gefundene Befehl installierbar ist. Dies kann insbesonders dann hilfreich sein, wenn sich ein Paket aus Fremdquellen über nicht erfüllte Abhängigkeiten beschwert.
command-not-found greift auf eine eigene Datenbank zurück, die weitestgehend (aber nicht nur) auf den offiziellen Ubuntu-Paketquellen basiert. Die Datenbank ist dabei erweiterbar.
command-not-found gehört zur Standardinstallation, kann ansonsten aber auch über das Paket
command-not-found
mit apturl
Paketliste zum Kopieren:
sudo apt-get install command-not-found
sudo aptitude install command-not-found
installiert [1] werden.
Wie oben bereits erwähnt, braucht man command-not-found nicht extra aufzurufen, es tritt bei Bedarf von alleine in Aktion.
Der MPlayer ist nicht installiert. Ruft man im Terminal [3]
mplayer
trotzdem auf, so erhält man folgende Meldung:
Der Befehl »mplayer« wurde nicht gefunden, meinten Sie vielleicht: Befehl »kplayer« aus dem Paket »kplayer« (multiverse) Befehl »mplayer« aus dem Paket »mplayer« (universe) Befehl »mplayer« aus dem Paket »mplayer2« (universe) mplayer: Befehl nicht gefunden.
Je nach verwendeter Ubuntu-Version kann die Ausgabe eventuell auch leicht anders sein. Ein weiteres Beispiel (gemeint war aplay)
bplay
Die Anwendung »bplay« ist momentan nicht installiert. Sie können sie durch folgende Eingabe installieren: sudo apt-get install bplay
Durch command-not-found entsteht eine kurze Verzögerung, nachdem man einen unbekannten Befehl eingegeben hat. Dies beruht darauf, dass das Durchsuchen der Datenbank von command-not-found einen kurzen Moment benötigt. Gerade bei langsameren Systemen erfolgt dadurch jedoch eine spürbare Verzögerung. Sollte man diese Verzögerung vermeiden wollen, so deinstalliert [1] man am besten das Paket
command-not-found
Danach wird command-not-found automatisch nicht mehr genutzt und falsch geschriebene Befehle werden sofort mit einem "command not found" quittiert, ohne weitere Hinweise zu geben.
Eine zweite Möglichkeit zur Deaktivierung ist es, die Funktion command_not_found_handle anders zu definieren.
Um command-not-found auch in der Z-Shell nutzen zu können, muss der Inhalt der Datei /etc/zsh_command_not_found systemweit (für alle Benutzer) in die /etc/zshrc oder für einen einzelnen Benutzer in die jeweilige ~/.zshrc eingetragen werden.
Ubuntu Wiki - Eintrag im Englischen Ubuntu Wiki für command-not-found
Launchpad - Launchpad-Eintrag für command-not-found