问题:
我有多个 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).
链接
答案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