Как перечислить функции, определенные в моей оболочке?

Я могу ввести псевдоним, чтобы отобразить список всех псевдонимов.

Но для функций все, что я могу сделать, это grep my .bash_profile.

Это только те, что содержатся в этом файле, а не те, которые определены в вспомогательных файлах или динамически.

Есть ли более удобный способ узнать, какие функции в настоящее время определены?

Ответ 1

Названия функций и определения могут быть перечислены с опцией -f для declare встроенная команда (см. Bash Встроенные устройства). Параметр -f для declareбудут перечислены только имена функций (и, возможно, исходный файл и номер строки).

Bash Справочное руководство

Ответ 2

Предполагая bash shell:

typeset -f

перечислит функции.

typeset -f

будут перечислены только имена функций.

Ответ 3

declare -F

предоставит вам имена всех функций

type function_name

предоставит вам источник для определенной функции

Ответ 4

declare -F действительно печатает объявления команд, а не только имена функций:

$ declare -F
declare -f function1
declare -f function2

Вы можете использовать compgen -A function для печати только имен функций:

$ compgen -A function
function1
function2

Ответ 5

набор устарел, используйте:

declare -f

или

declare -f function_name

или

type function_name

Ответ 6

set | grep " ()"

Вместо grep вы также можете использовать fgrep или hgrep (hgrep - мой личный фаворит, он grep, но он приветствует результат grep-ped.

hgrep можно найти здесь: ACME Labs hgrep