Comment tester si la commande est un alias, une fonction ou un binaire?


Réponses:


23

Si vous êtes sur Bash (ou un autre shell de type Bourne), vous pouvez utiliser type.

type command

vous dira si commandun shell est intégré, un alias (et si oui, un alias vers quoi), une fonction (et si c'est le cas, il listera le corps de la fonction) ou stocké dans un fichier (et si oui, le chemin d'accès au fichier) .

Pour plus d'informations sur un fichier "binaire", vous pouvez faire

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

Cela ne renverra rien si commandun alias, une fonction ou un shell est intégré mais renvoie plus d'informations s'il s'agit d'un script ou d'un binaire compilé.

Les références


3

La réponse dépendra du shell que vous utilisez.

Pour zsh, le shell intégré whence -wvous dira exactement ce que vous voulez

par exemple

$ whence -w whence
whence : builtin
$ whence -w man     
man : command 

1

En zsh vous pouvez vérifier les aliases, functionset les commandstableaux.

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

Il y a aussi builtins, pour les commandes intégrées.

(( ${+builtins[foo]} )) && print 'foo is a builtin command'
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.