カスタムbash関数とエイリアスを文書化する方法は?


11

問題:

複数のbash関数とエイリアスがあります。頭の上にあるものすべてを覚えているわけではないので、たいていの場合.bash_functions.bash_aliasesファイルを開いて必要なものを見つけます。

質問:

bashプロンプトから使用できる関数/エイリアスを一覧表示するにはどうすればよいですか?

コメント(PHPDocのようなもの)を使用してbash関数/エイリアスを文書化することは可能ですか?

ファイルを開かずに、利用できるものを出力する簡単で便利な方法が欲しいのですが。コマンドを実行して、関数/エイリアスの動的リストを吐き出させると便利です(使用例はプラスです)。:)

回答:


17

アクティブなエイリアスを一覧表示するには、次のコマンドを実行します。

alias

すべてのアクティブな関数の名前を表示するには、次を実行します。

declare -F

すべてのアクティブな関数の名前と定義を表示するには、次を実行します。

declare -f

もっと

エイリアスに関する情報も利用可能で、スクリプトに適した形式です。

declare -p BASH_ALIASES

man bashalias組み込みの詳細情報を提供します:

   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

ハ!簡単すぎる。ありがとう!とても簡単です。カスタム関数のリストに関するヒントはありますか?
mhulse 2014年

1
@mhulseどういたしまして。関数の更新を参照してください。
John1024

更新していただきありがとうございます!declare情報を追加したようですね。ありがとうございました!私は一緒に住んでいdeclarealias、すばやく簡単に見ることができました。機能declare -f treeだけを吐き出すことができることに気づきましたtree。涼しい!私は売られました。再度、感謝します!(私はこれを4分以内に回答として受け入れることができます。)
mhulse 2014年

2
でss64.comのテキスト@ashumeow ss64.com/bash/alias.htmlその著作権および配布条件とss64.com/docs/copyright.html(非商用!)GFDLの条項休憩はbashの--theライセンスをマニュアル、gnu.org / software / bash / manual / html_node / Aliases.htmlからのテキストが含まれているため:Bashマニュアルの派生著作物の商用利用を許可する必要があります。参照なしの彼らのコンパイルは、これと同様の帰属理由のために良いようには見えません。
imz-Ivan Zakharyaschev 2014年


7

次の関数と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あなたはそれが実際のスクリプト内で使われているかを見ることができます。


かっこいい!複数の回答に緑色のチェックマークを付けたいと思います。カスパー、ありがとう!これを試すのが待ちきれません。:)
mhulse 2014年

私は得続けるgrep: : No such file or directory機能として、UNIX / bashのを経由して、それを実行しようとします。…私はこの質問が古いことを知っていますが、コマンドラインを介してbash関数だけとしてこれを実行する方法について例を挙げていただけますか?ありがとう!!! :)
mhulse 2014

1
@mhulse、私はあなたが定義する必要があることを言及するのを忘れましたPROG=$0; 回答を更新しました。
Kasper van den Berg

カスパー、ありがとう!これを実際に機能させたいのですが、今のところ運がありません。私はあなたを悩ませ続けたくありませんが、bashコマンドラインからの例の呼び出しを提供できますか?また、どのように私は設定できます--help-help(つまり、if echo "$@" | egrep -q -e '(-h)|(--help)'; then ...私はセットアップに私の愛を思います。.bash_functions/をaliases可能にするためにaliasname -hまたはfunction arg --helpおかげで再び!
mhulse

1
@mhulseコマンドラインgenerateReport.sh自体からの呼び出し例は、Zylabを介して医療ドキュメントのインデックスを作成し、Aidaを介してそれらをクエリする場合にのみ役立ちます。ただし、ヘルプ機能を試すには、次を使用しますwget https://raw.githubusercontent.com/kaspervandenberg/aida/master/Search/zylabPatisClient/src/main/scripts/generateReport.sh && chmod a+x generateReport.sh && ./generateReport.sh --helpaliasname(まだ)知らない.bash_functions で使用して2番目の部分を達成する方法。
Kasper van den Berg
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.