Wie prüfe ich, ob der Befehl ein Alias, eine Funktion oder eine Binärdatei ist?

Antworten:

23

Wenn Sie sich auf Bash (oder einer anderen Bourne-ähnlichen Shell) befinden, können Sie verwenden type.

type command

commandZeigt an, ob eine Shell eingebaut ist, ob ein Alias ​​(und wenn ja, ein Alias ​​für was), eine Funktion (und wenn ja, ein Funktionshauptteil) oder eine Datei (und wenn ja, der Pfad zur Datei) vorliegt. .

Weitere Informationen zu einer "binären" Datei erhalten Sie hier

file "$(type -P command)" 2>/dev/null

Dies gibt nichts zurück, wenn commandein Alias, eine Funktion oder eine Shell eingebaut ist, gibt aber mehr Informationen zurück, wenn es sich um ein Skript oder eine kompilierte Binärdatei handelt.

Verweise

Joseph R.
quelle
3

Die Antwort hängt davon ab, welche Shell Sie verwenden.

Für zsh whence -wsagt Ihnen Shell Builtin genau, was Sie wollen

z.B

$ whence -w whence
whence : builtin
$ whence -w man     
man : command 
Nummer 5
quelle
1

In ZSH können Sie die überprüfen aliases, functionsund commandsArrays.

(( ${+aliases[foo]} )) && print 'foo is an alias'
(( ${+functions[foo]} )) && print 'foo is a function'
(( ${+commands[foo]} )) && print 'foo is an external command'

Es gibt auch builtinsfür eingebaute Befehle.

(( ${+builtins[foo]} )) && print 'foo is a builtin command'
ericbn
quelle