¿Cómo documentar mis alias y funciones de bash personalizados?

¿Cómo documentar mis alias y funciones de bash personalizados?

Problema:

Tengo múltiples funciones y alias de bash. No puedo recordarlos todos, por lo que normalmente termino abriendo mis archivos .bash_functionsy .bash_aliasespara 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 bashproporciona más información sobre el aliasincorporado:

   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 bashexplica que declarese puede proporcionar aún más información disponible si extdebugse 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

  1. http://ss64.com/bash/alias.html
  2. http://linfo.org/alias.html

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 ~./bashrccon 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

información relacionada