web-dev-qa-db-fra.com

Comment lister les fonctions définies dans mon shell?

Je peux taper alias pour afficher une liste de tous les alias.

Mais pour les fonctions, tout ce que je peux faire, c’est grep my .bash_profile.

Cela ne récupère que ceux de ce fichier, pas ceux définis dans des fichiers secondaires ou de manière dynamique.

Existe-t-il un moyen plus pratique de savoir quelles fonctions sont actuellement définies?

194
Dov

declare -F

Les noms de fonction et les définitions peuvent être listés avec le -f option de la commande intégrée declare (voir Intégrations Bash). Le -F option sur declare ne listera que les noms de fonction (et éventuellement le fichier source et le numéro de ligne).

Manuel de référence Bash

242
The Archetypal Paul

En supposant que bash Shell:

typeset -f

listera les fonctions.

typeset -F

ne listera que les noms de fonctions.

78
Randall Bohn
declare -F

vous donnera les noms de toutes les fonctions

type function_name

vous donnera la source d'une fonction particulière

59

declare -F imprime réellement les commandes de déclaration et pas seulement les noms de fonction:

$ declare -F
declare -f function1
declare -f function2

Vous pouvez utiliser compgen -A function pour n’imprimer que les noms de fonctions:

$ compgen -A function
function1
function2
47
Lri

typeset est obsolète, veuillez utiliser:

declare -f

ou

declare -f function_name

ou

type function_name
28
Robert
set | grep " ()"

Au lieu de grep vous pouvez aussi utiliser fgrep ou hgrep (hgrep est mon préféré, c’est grep mais il salue le résultat 'grep-ped'.

hgrep peut être trouvé ici: ACME Labs hgrep

2
AtomicKobold