Jak sprawdzić, czy polecenie jest aliasem, funkcją lub plikiem binarnym?

Odpowiedzi:

23

Jeśli korzystasz z Bash (lub innej powłoki podobnej do Bourne'a), możesz użyć type.

type command

powie ci, czy commandjest wbudowana powłoka, alias (a jeśli tak, alias do czego), funkcja (a jeśli tak, to wyświetli treść funkcji) lub zapisana w pliku (a jeśli tak, ścieżka do pliku) .

Aby uzyskać więcej informacji na temat pliku „binarnego”, możesz to zrobić

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

Nic nie zwróci, jeśli commandjest wbudowany alias, funkcja lub powłoka, ale zwróci więcej informacji, jeśli jest to skrypt lub skompilowany plik binarny.

Bibliografia

Joseph R.
źródło
3

Odpowiedź zależy od używanej powłoki.

W przypadku Zsh wbudowana powłoka whence -wpowie ci dokładnie, czego chcesz

na przykład

$ whence -w whence
whence : builtin
$ whence -w man     
man : command 
numer 5
źródło
1

W zsh można sprawdzić aliases, functionsi commandstablic.

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

Dostępne są także builtinspolecenia wbudowane.

(( ${+builtins[foo]} )) && print 'foo is a builtin command'
ericbn
źródło