Como documentar minhas funções e aliases personalizados do bash?

Como documentar minhas funções e aliases personalizados do bash?

Problema:

Eu tenho várias funções e aliases do bash. Não consigo me lembrar de todos eles de cabeça, então geralmente acabo abrindo meus arquivos .bash_functionse .bash_aliasespara encontrar o que preciso.

Questões):

Como posso listar funções/aliases disponíveis no prompt do bash?

É possível documentar minhas funções/aliases do bash usando comentários (como o PHPDoc)?

Eu gostaria apenas de uma maneira simples/agradável de exibir o que está disponível sem precisar abrir os arquivos. Seria legal executar um comando e exibir uma lista dinâmica de minhas funções/aliases (exemplos de uso seriam uma vantagem). :)

Responder1

Para listar aliases ativos, execute:

alias

Para ver os nomes de todas as funções ativas, execute:

declare -F

Para ver os nomes e definições de todas as funções ativas, execute:

declare -f

Mais

As informações sobre aliases também estão disponíveis em um formato compatível com script com:

declare -p BASH_ALIASES

man bashfornece mais informações sobre o aliasintegrado:

   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.

Em relação às funções, man bashexplica que declarepode fornecer ainda mais informações se a extdebugopção estiver definida:

   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).

Ligações

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

Responder2

Eu uso a seguinte função e comentários semelhantes ao javadoc para criar uma opção --help para meus 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;
}

Nohttps://github.com/kaspervandenberg/aida/blob/master/Search/zylabPatisClient/src/main/scripts/generateReport.shvocê pode ver como ele é usado em um script real.

Responder3

Tenho documentado funções bash por conta própria ~./bashrccom o :(nulo) integrado. A vantagem é que ele não executará nada quando executado, mas será exibido quando impresso.

$ declare -f my_function
my_function() {
    : My function does this and that
    echo "foo"
}
$ my_function
foo

informação relacionada