カスタム 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

スクリプトの --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

関連情報