Mogę wpisać alias, aby wyświetlić listę wszystkich aliasów.
Ale w przypadku funkcji wszystko, co mogę zrobić, to grep my .bash_profile
.
To tylko pobiera te z tego pliku, a nie te zdefiniowane w plikach pomocniczych lub dynamicznie.
Czy istnieje wygodniejszy sposób, aby dowiedzieć się, jakie funkcje są obecnie zdefiniowane?
Odpowiedzi:
declare -F
Podręcznik referencyjny Bash
źródło
shopt -s extdebug
) ORAZ podać jedną lub więcej nazw funkcji dladeclare -F
polecenia. IOW,declare -F
czy nie dostarczy nazw / linia # y nawet gdy extdebug jest włączona, który nie wynika z dokumentacji, ani nie jest szczególnie intuicyjne, IMO.Zakładając powłokę bash:
wyświetli listę funkcji.
wyświetli tylko nazwy funkcji.
źródło
Obsolete. See `help declare'.
poda ci nazwy wszystkich funkcji
poda źródło konkretnej funkcji
źródło
declare -F
faktycznie drukuje deklaracje poleceń, a nie tylko nazwy funkcji:Możesz użyć
compgen -A function
do drukowania tylko nazw funkcji:źródło
compgen -A function
było właśnie tym, czego szukałem.compgen -a -A function
compgen -A function | grep "^[a-z]\+" | grep -vE "^dequote|^quote|^in_array"
skład jest przestarzały, użyj:
lub
lub
źródło
Zamiast grep możesz także użyć fgrep lub hgrep (hgrep to mój osobisty faworyt, to grep, ale hi-lites wynik grep-ped.
hgrep można znaleźć tutaj: ACME Labs hgrep
źródło
set | grep " () $" | cut -d' ' -f1
. Ale jest to zbyt skomplikowane w porównaniu do innych odpowiedzi.grep
nie jest dobrym rozwiązaniem, ciągi pasujące do definicji funkcji spowodują fałszywe alarmy. @wjandrea nadal może być przechwycony przez ciągi wieloliniowe, podobnie jak każde wyrażenie regularne.Nie jestem w tym ekspertem, wciąż się uczę, ale po znalezieniu tego pytania i odpowiedzi, ponieważ chciałem tego samego, napisałem następujące (w oparciu o odpowiedź „ Deklaracja Archetypalnego Pawła ”), aby dać mi ostatecznie to, czego chciałem: sformatowana lista aliasów i funkcji:
To było przed Widziałem odpowiedź LRI za , a więc z ekstrapolacji, że mogę wymienić
declare
ialias
linie z odpowiednichcompgen
poleceń zamiast dostać:Woks przysmak za to, czego chciałem. Udostępnianie na wypadek, gdyby pomógł komukolwiek innemu.
Istnieje wiele innych „akcji” dostępnych dla
compgen -A [action]
(icompgen
oczywiście inne opcje ). Znalazłem tutaj dobry opis , który zawiera również link do strony man (ponieważman compgen
w niektórych przypadkach nie działa).źródło