Как документировать мои пользовательские функции и псевдонимы bash?

Как документировать мои пользовательские функции и псевдонимы bash?

Проблема:

У меня есть несколько функций и псевдонимов bash. Я не могу вспомнить их все с ходу, поэтому обычно я открываю свои .bash_functionsи .bash_aliasesфайлы, чтобы найти то, что мне нужно.

Вопросы):

Как получить список функций/псевдонимов, доступных из командной строки bash?

Могу ли я документировать свои функции/псевдонимы bash с помощью комментариев (что-то вроде PHPDoc)?

Мне просто нужен простой/красивый способ вывода того, что доступно, без необходимости открывать файлы. Было бы здорово запустить команду и заставить ее выдать динамический список моих функций/псевдонимов (примеры использования были бы плюсом). :)

решение1

Чтобы вывести список активных псевдонимов, выполните:

alias

Чтобы увидеть имена всех активных функций, выполните:

declare -F

Чтобы увидеть имена и определения всех активных функций, выполните:

declare -f

Более

Информация о псевдонимах также доступна в удобном для скриптов формате:

declare -p BASH_ALIASES

man bashпредоставляет дополнительную информацию о aliasвстроенном:

   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.

Что касается функций, man bashпояснения, которые declareмогут предоставить еще больше информации, доступны, если extdebugустановлена ​​опция:

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

Ссылки

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

решение2

Я использую следующую функцию и комментарии в стиле javadoc для создания параметра --help для своих скриптов:

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;
}

Вhttps://github.com/kaspervandenberg/aida/blob/master/Search/zylabPatisClient/src/main/scripts/generateReport.shвы можете увидеть, как это используется в реальном сценарии.

решение3

Я самодокументировал функции bash в моем ~./bashrcсо :встроенным (null). Преимущество в том, что он ничего не выполнит при запуске, но покажет при печати.

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

Связанный контент