Wie dokumentiere ich meine benutzerdefinierten Bash-Funktionen und Aliase?

Wie dokumentiere ich meine benutzerdefinierten Bash-Funktionen und Aliase?

Problem:

Ich habe mehrere Bash-Funktionen und Aliase. Ich kann sie mir nicht alle spontan merken, also öffne ich normalerweise meine .bash_functionsund .bash_aliasesDateien, um zu finden, was ich brauche.

Fragen):

Wie kann ich in der Bash-Eingabeaufforderung verfügbare Funktionen/Aliase auflisten?

Ist es mir möglich, meine Bash-Funktionen/Aliase mit Kommentaren zu dokumentieren (ähnlich wie PHPDoc)?

Ich hätte einfach gern eine einfache/schöne Möglichkeit, das Verfügbare auszugeben, ohne die Dateien öffnen zu müssen. Es wäre cool, einen Befehl auszuführen und eine dynamische Liste meiner Funktionen/Aliase auszugeben (Anwendungsbeispiele wären ein Plus). :)

Antwort1

Um aktive Aliase aufzulisten, führen Sie Folgendes aus:

alias

Um die Namen aller aktiven Funktionen anzuzeigen, führen Sie Folgendes aus:

declare -F

Um die Namen und Definitionen aller aktiven Funktionen anzuzeigen, führen Sie Folgendes aus:

declare -f

Mehr

Die Informationen zu Aliasnamen sind auch in einem skriptfreundlichen Format verfügbar mit:

declare -p BASH_ALIASES

man bashbietet weitere Informationen zum aliasintegrierten:

   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.

Zu den Funktionen, man bashdie bei entsprechender Option declarenoch weitere Informationen liefern können, finden Sie hier: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).

Links

  1. http://ss64.com/bash/alias.html
  2. http://linfo.org/alias.html

Antwort2

Ich verwende die folgende Funktion und Javadoc-ähnliche Kommentare, um eine --help-Option für meine Skripte zu erstellen:

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;
}

Beihttps://github.com/kaspervandenberg/aida/blob/master/Search/zylabPatisClient/src/main/scripts/generateReport.shSie können sehen, wie es in einem tatsächlichen Skript verwendet wird.

Antwort3

Ich habe Bash-Funktionen in meinem ~./bashrcmit dem :integrierten (null) selbst dokumentiert. Der Vorteil ist, dass beim Ausführen nichts ausgeführt wird, aber beim Drucken angezeigt wird.

$ declare -f my_function
my_function() {
    : My function does this and that
    echo "foo"
}
$ my_function
foo

verwandte Informationen