bash: "command not found" abfangen und Ersatz ausführ

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
marten
Beiträge: 59
Registriert: 29.09.2003 09:36:35
Kontaktdaten:

bash: "command not found" abfangen und Ersatz ausführ

Beitrag von marten » 11.05.2009 11:38:19

Hallo,

Ich möchte in der bash, wenn ein Programm nicht vorhanden ist, die Eingabe verwenden um diese dann weiter zu verarbeiten.

Beispiel:
meine bashprompt# Hallo
- Programm existiert nicht - "Hallo" wird übergeben, welches ein "echo Hallo" ausführt.

Wie kann ich also das "command not found" abfangen, um die Eingabe anderweitig zu verarbeiten?

Vielen Dank.

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Re: bash: "command not found" abfangen und Ersatz ausführ

Beitrag von Duff » 11.05.2009 12:42:16

Meinst du sowas?

Code: Alles auswählen

duff@man:~/scripts$ cat prompt.sh 
#!/bin/bash

if [ $# -ne 1 ]
then
	echo "Usage: $0 <command>"
	exit 1
fi

CMD=$1

if [ "$(which $CMD)" = "" ]
then 
	echo "COMMAND: $CMD"
fi
duff@man:~/scripts$ ./prompt.sh hallo
COMMAND: hallo
Oh, yeah!

pluvo

Re: bash: "command not found" abfangen und Ersatz ausführ

Beitrag von pluvo » 11.05.2009 12:52:55

Hallo!

Schau mal hier: (Allerdings nicht für Lenny (stable) verfügbar. Ob man das trotzdem installieren kann, weiß ich nicht.)

mfg pluvo :)

Spasswolf
Beiträge: 3472
Registriert: 30.11.2005 10:32:22
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Wald

Re: bash: "command not found" abfangen und Ersatz ausführ

Beitrag von Spasswolf » 11.05.2009 12:54:30

Das Paket Debiancommand-not-found macht etwas ähnliches. Es wird durch einen Eintrag in der bashrc aktiviert:

Code: Alles auswählen

# if the command-not-found package is installed, use it
if [ -x /usr/lib/command-not-found ]; then
        function command_not_found_handle {
                /usr/bin/python /usr/lib/command-not-found -- $1
                return $?
        }
fi
und funktioniert so:

Code: Alles auswählen

$ make-kpkg
The program 'make-kpkg' is currently not installed.  You can install it by typing:
sudo apt-get install kernel-package
bash: make-kpkg: command not found
Eventuell kannst du ja da klauen.

Benutzeravatar
Meillo
Moderator
Beiträge: 9254
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: bash: "command not found" abfangen und Ersatz ausführ

Beitrag von Meillo » 11.05.2009 13:04:58

Code: Alles auswählen

command -v foo
wenn `foo' nicht verfügbar ist, wird ein Fehler zurück gegeben.
Use ed once in a while!

marten
Beiträge: 59
Registriert: 29.09.2003 09:36:35
Kontaktdaten:

Re: bash: "command not found" abfangen und Ersatz ausführ

Beitrag von marten » 14.05.2009 12:55:42

Danke für eure Tipps.

Das command-not-found-Paket ist mir auch schon öfters übern weg gelaufen. ^^

Ich versuche das geschilderte aufn Mac umzusetzen.
Wenn ich erfolge erziele, dann poste ichs hier.

Antworten