Problema:
Tengo múltiples funciones y alias de bash. No puedo recordarlos todos, por lo que normalmente termino abriendo mis archivos .bash_functions
y .bash_aliases
para encontrar lo que necesito.
Preguntas):
¿Cómo puedo enumerar funciones/alias disponibles desde el símbolo del sistema bash?
¿Es posible para mí documentar mis funciones/alias de bash usando comentarios (algo así como PHPDoc)?
Simplemente me gustaría una forma sencilla/agradable de generar lo que está disponible sin tener que abrir los archivos. Sería genial ejecutar un comando y hacer que muestre una lista dinámica de mis funciones/alias (los ejemplos de uso serían una ventaja). :)
Respuesta1
Para enumerar los alias activos, ejecute:
alias
Para ver los nombres de todas las funciones activas, ejecute:
declare -F
Para ver los nombres y definiciones de todas las funciones activas, ejecute:
declare -f
Más
La información sobre alias también está disponible en un formato compatible con scripts con:
declare -p BASH_ALIASES
man bash
proporciona más información sobre el alias
incorporado:
alias [-p] [name[=value] ...] Alias with no arguments or with the -p option prints the list of aliases in the form alias name=value on standard output. When arguments are supplied, an alias is defined for each name whose value is given. A trailing space in value causes the next word to be checked for alias substitution when the alias is expanded. For each name in the argument list for which no value is supplied, the name and value of the alias is printed. Alias returns true unless a name is given for which no alias has been defined.
Respecto a las funciones, man bash
explica que declare
se puede proporcionar aún más información disponible si extdebug
se activa la opción:
Function names and definitions may be listed with the -f option to the declare or typeset builtin commands. The -F option to declare or typeset will list the function names only (and optionally the source file and line number, if the extdebug shell option is enabled).
Enlaces
Respuesta2
Utilizo la siguiente función y comentarios similares a javadoc para crear una opción de ayuda para mis scripts:
PROG=$0 #The program name, used within doHelp
# Print a help message
# doHelp uses lines starting with ## to create the output
# the tags {@param ...} and {@code ...} colorize words
doHelp() {
grep '^##' "${PROG}" |
sed -e 's/^##[[:space:]]*//' |
while read line; do
if ( echo "${line}" | grep -q '{@param [^}]*}' ); then
# color parameter and echo evaulated value
eval echo -e $(echo ${line} | sed \
-e 's/^\(.*\){@param \([^}]*\)}\(.*\)$/\
\"\1\\\\E[32;40m\2\\\\E[37;40m\\t(value: \"$\2\")\3\"/');
else
# other color commands
echo -e $(echo ${line} | sed \
-e 's/{@code \([^}]*\)}/\\E[36;40m\1\\E[37;40m/g');
fi
done;
}
Enhttps://github.com/kaspervandenberg/aida/blob/master/Search/zylabPatisClient/src/main/scripts/generateReport.shpuedes ver cómo se usa dentro de un script real.
Respuesta3
He estado autodocumentando funciones bash en mi ~./bashrc
con el :
(nulo) incorporado. El beneficio es que no ejecutará nada cuando se ejecute, pero se mostrará cuando se imprima.
$ declare -f my_function
my_function() {
: My function does this and that
echo "foo"
}
$ my_function
foo