Como testar se o comando é alias, função ou binário?

16

Eu tenho o comando foo , como posso saber se é binário, uma função ou um alias?

    
por jcubic 01.09.2013 / 13:28

3 respostas

19

Se você estiver no Bash (ou outro shell parecido com o Bourne), poderá usar type .

type command

informará se command é uma função interna do shell, alias (e, em caso afirmativo, com alias de qual), função (e, se for o caso, listará o corpo da função) ou armazenada em um arquivo (e em caso afirmativo, o caminho para o arquivo).

Para mais informações sobre um arquivo "binário", você pode fazer

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

Isso não retornará nada se command for um alias, função ou shell embutido, mas retornar mais informações se for um script ou um binário compilado.

Referências

por 01.09.2013 / 13:33
3

A resposta depende de qual shell você está usando.

Para o zsh, o shell interno whence -w dirá exatamente o que você deseja

por exemplo,

$ whence -w whence
whence : builtin
$ whence -w man     
man : command 
    
por 01.09.2013 / 13:47
1

No zsh, você pode verificar as matrizes aliases , functions e commands .

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

Há também builtins , para comandos incorporados.

(( ${+builtins[foo]} )) && print 'foo is a builtin command'
    
por 30.11.2017 / 21:37