Überprüfen Sie, ob der Befehl in Bash vorhanden ist

Überprüfen Sie, ob der Befehl in Bash vorhanden ist

Ich möchte prüfen, ob ein bestimmter Befehl vorhanden ist, bashund mich interessieren nur die nativen Befehle der Bash und nicht die vom Benutzer geschriebenen Skripte. Wenn ich mich auf beziehe, native commandsmeine ich alle Befehle, die einem Benutzer allgemein zur Verfügung stehen.

Es gibt zwei Befehle

command -v
type

Damit kann geprüft werden, ob der Befehl vorhanden ist. Es gibt aber auch für benutzerdefinierte Skripte ein „true“ zurück, während ich mich auf die integrierten Befehle beschränken möchte.

Notiz:Ich versuche nicht nur zwischen einem bash builtinund anderen Befehlen zu unterscheiden, weil

Typ -t touch

gibt fileals Typ an, aber dies ist ein Befehl, der dem Benutzer standardmäßig zur Verfügung steht. Aber wenn der Benutzer ein Skript schreibt und dann versucht, es auszuführen, möchte ich das filtern.

Jede Hilfe wird geschätzt.

Antwort1

Ich bin nicht sicher, ob „true“ nur für ein Shell-Builtin zurückgegeben wird, aber es type -twird der Typ des „Befehls“ zurückgegeben, einschließlich „Builtin“:

if [ "$(type -t help)" = "builtin" ]; then
    echo "Help is a builtin command."
fi

help typeFür weitere Informationen führen Sie es aus .

verwandte Informationen