如何记录我的自定义 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的说明:declareextdebug

   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

我一直在使用 (null) 内置功能自我记录 bash~./bashrc函数:。好处是运行时不会执行任何操作,但打印时会显示。

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

相关内容