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 n'obtient que ceux de ce fichier, pas ceux définis dans les fichiers subsidiaires ou dynamiquement.
Existe-t-il un moyen plus pratique de savoir quelles fonctions sont actuellement définies?
Réponses:
declare -F
Manuel de référence Bash
la source
shopt -s extdebug
) ET fournir un ou plusieurs noms de fonction à ladeclare -F
commande. IOW,declare -F
ne fournit pas de noms de fichiers / lignes # même lorsque extdebug est activé, ce qui n'est pas clair dans la documentation, ni particulièrement intuitif, IMO.En supposant que shell bash:
listera les fonctions.
affichera uniquement les noms des fonctions.
la source
Obsolete. See `help declare'.
vous donnera les noms de toutes les fonctions
vous donnera la source d'une fonction particulière
la source
declare -F
imprime en fait des commandes de déclaration et pas seulement des noms de fonction:Vous pouvez utiliser
compgen -A function
pour imprimer uniquement les noms de fonction:la source
compgen -A function
était exactement ce que je cherchais.compgen -a -A function
compgen -A function | grep "^[a-z]\+" | grep -vE "^dequote|^quote|^in_array"
la composition est obsolète, veuillez utiliser:
ou
ou
la source
Au lieu de grep, vous pouvez également utiliser fgrep ou hgrep (hgrep est mon préféré, c'est grep mais il met en évidence le résultat 'grep-ped'.
hgrep peut être trouvé ici: ACME Labs hgrep
la source
set | grep " () $" | cut -d' ' -f1
. Mais c'est trop compliqué par rapport aux autres réponses.grep
n'est pas une bonne solution pour cela, les chaînes qui correspondent aux définitions de fonction provoqueront des faux positifs. @wjandrea peut toujours être capturé par des chaînes multi-lignes, comme tout regex.Je ne suis pas un expert en la matière, j'apprends encore, mais après avoir trouvé cette question et sa réponse parce que je voulais la même chose, j'ai écrit ce qui suit (basé sur la réponse " The Archetypal Paul's declare ") pour me donner finalement ce que je cherchais : une liste formatée des alias et des fonctions:
C'était avant d'avoir vu la réponse de Lri , et donc en extrapolant à partir de cela, je remplace les lignes
declare
etalias
par descompgen
commandes appropriées , pour obtenir:Woks un régal pour ce que je voulais. Partager au cas où cela aiderait quelqu'un d'autre.
Il existe une multitude d'autres "actions" disponibles
compgen -A [action]
(et d'autres options pourcompgen
bien sûr). J'ai trouvé un bon article ici qui comprend également un lien vers la page de manuel (carman compgen
cela ne fonctionne pas dans certains cas).la source