Ich kann einen Alias eingeben, um eine Liste aller Aliase anzuzeigen.
Aber für Funktionen kann ich nur meine grep .bash_profile
.
Dadurch werden nur diejenigen in dieser Datei abgerufen, nicht diejenigen, die in untergeordneten Dateien oder dynamisch definiert sind.
Gibt es eine bequemere Möglichkeit, herauszufinden, welche Funktionen derzeit definiert sind?
Antworten:
declare -F
Bash Referenzhandbuch
quelle
shopt -s extdebug
) aktivieren UND demdeclare -F
Befehl einen oder mehrere Funktionsnamen geben . IOWdeclare -F
liefert keine Dateinamen / Zeilennummern, selbst wenn extdebug aktiviert ist, was weder aus der Dokumentation hervorgeht, noch ist IMO besonders intuitiv.Angenommen, Bash Shell:
listet die Funktionen auf.
listet nur die Funktionsnamen auf.
quelle
Obsolete. See `help declare'.
gibt Ihnen die Namen aller Funktionen
gibt Ihnen die Quelle für eine bestimmte Funktion
quelle
declare -F
druckt tatsächlich Deklarationsbefehle und nicht nur Funktionsnamen:Sie können
compgen -A function
nur Funktionsnamen drucken:quelle
compgen -A function
war genau das, wonach ich gesucht habe.compgen -a -A function
compgen -A function | grep "^[a-z]\+" | grep -vE "^dequote|^quote|^in_array"
Satz ist veraltet, bitte verwenden Sie:
oder
oder
quelle
Anstelle von grep können Sie auch fgrep oder hgrep verwenden (hgrep ist mein persönlicher Favorit, es ist grep, aber es macht das 'grep-ped'-Ergebnis deutlich.
hgrep finden Sie hier: ACME Labs hgrep
quelle
set | grep " () $" | cut -d' ' -f1
. Aber es ist im Vergleich zu den anderen Antworten zu kompliziert.grep
Dies ist keine gute Lösung. Zeichenfolgen, die mit Funktionsdefinitionen übereinstimmen, führen zu Fehlalarmen. @wjandrea kann immer noch von mehrzeiligen Zeichenfolgen abgefangen werden, ebenso wie jeder reguläre Ausdruck.Ich bin kein Experte in diesem Bereich und lerne noch, aber nachdem ich diese Frage und ihre Antwort gefunden hatte, weil ich dasselbe wollte, schrieb ich Folgendes (basierend auf der Antwort " Die Erklärung des Archetypischen Paulus "), um mir letztendlich das zu geben, wonach ich suchte: eine formatierte Liste von Aliasen und Funktionen:
Das war, bevor ich Lris Antwort sah , und so extrapoliere ich daraus, dass ich stattdessen die Zeilen
declare
undalias
durch entsprechendecompgen
Befehle ersetze, um Folgendes zu erhalten:Woks eine Belohnung für das, was ich wollte. Teilen für den Fall, dass es jemand anderem hilft.
Es gibt eine Vielzahl anderer "Aktionen"
compgen -A [action]
(undcompgen
natürlich auch andere Optionen ). Ich habe hier einen guten Artikel gefunden, der auch einen Link zur Manpage enthält (weilman compgen
er in einigen Fällen nicht funktioniert).quelle