Puedo escribir alias para mostrar una lista de todos los alias.
Pero para las funciones, todo lo que puedo hacer es grep my .bash_profile
.
Eso solo obtiene los que están en ese archivo, no los definidos en archivos subsidiarios o dinámicamente.
¿Hay alguna forma más conveniente de averiguar qué funciones están definidas actualmente?
Respuestas:
declare -F
Manual de referencia de Bash
fuente
shopt -s extdebug
) Y suministrar uno o más nombres de función aldeclare -F
comando. OIA,declare -F
no no proporcionar nombres de ficheros / línea # S incluso cuando extdebug está habilitado, lo que no está claro a partir de la documentación, ni es particularmente intuitiva, la OMI.Asumiendo bash shell:
enumerará las funciones.
enumerará solo los nombres de las funciones.
fuente
Obsolete. See `help declare'.
le dará los nombres de todas las funciones
le dará la fuente para una función particular
fuente
declare -F
en realidad imprime comandos de declaración y no solo nombres de funciones:Puede usar
compgen -A function
para imprimir solo nombres de funciones:fuente
compgen -A function
era justo lo que estaba buscando.compgen -a -A function
compgen -A function | grep "^[a-z]\+" | grep -vE "^dequote|^quote|^in_array"
la composición está obsoleta, utilice:
o
o
fuente
En lugar de grep , también puede usar fgrep o hgrep (hgrep es mi favorito personal, es grep pero resalta el resultado 'grep-ped').
hgrep se puede encontrar aquí: ACME Labs hgrep
fuente
set | grep " () $" | cut -d' ' -f1
. Pero es demasiado complicado en comparación con las otras respuestas.grep
no es una buena solución para esto, las cadenas que coinciden con las definiciones de funciones causarán falsos positivos. @wjandrea todavía puede ser atrapado por cadenas de varias líneas, como lo hará cualquier expresión regular.No soy un experto en esto, todavía estoy aprendiendo, pero después de encontrar esta pregunta y su respuesta porque quería lo mismo, escribí lo siguiente (basado en la respuesta " La declaración del Arquetipo de Pablo ") para darme en última instancia lo que buscaba : Una lista formateada de ambos alias y funciones:
Eso fue antes de ver la respuesta de Lri , y extrapolando de eso, reemplazo las líneas
declare
yalias
con loscompgen
comandos apropiados , para obtener:Es una delicia para lo que quería. Compartir en caso de que ayude a alguien más.
Hay una multitud de otras "acciones" disponibles para
compgen -A [action]
(y otras opciones, porcompgen
supuesto). Encontré una buena reseña aquí que también incluye un enlace a la página del manual (porqueman compgen
en algunos casos no funciona).fuente