問題:
我有多個 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