Problem:
Ich habe mehrere Bash-Funktionen und Aliase. Ich kann sie mir nicht alle spontan merken, also öffne ich normalerweise meine .bash_functions
und .bash_aliases
Dateien, 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 bash
bietet weitere Informationen zum alias
integrierten:
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 bash
die bei entsprechender Option declare
noch 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
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 ~./bashrc
mit 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