問題:
私は複数の 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
スクリプトの --help オプションを作成するには、次の関数と javadoc のようなコメントを使用します。
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
~./bashrc
私は、(null)組み込みを使用して、bash 関数を自己文書化してきました:
。利点は、実行時に何も実行されないが、印刷すると表示されることです。
$ declare -f my_function
my_function() {
: My function does this and that
echo "foo"
}
$ my_function
foo