Любой способ получить список функций, определенных в zsh (например, команда alias для псевдонимов)

18

я могу печатать

alias

и получить список определенных псевдонимов в Zsh

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

Когда я набираю «функции», окно моей оболочки зависает после отображения множества функций, всегда заканчиваясь на

__rvm_checksum_none () {
    [[ -z "${_checksum_md5:-}" && -z "${_checksum_sha512:-}" ]]
}
__rvm_checksum_read () {

Что очень раздражает, так это то, что это не будет завершено с помощью ctrl-c (с использованием терминала item2 AND).

iterm2: введите описание изображения здесь

Изображение терминала, имеющего ту же проблему: введите описание изображения здесь

justingordon
источник
Обычно список будет сделано с functionsвстроенной командой. Вы получаете выход , если вы указаную функцию проблемной первый (?): unfunction __rvm_checksum_read?
mpy
Что если я хочу получить список функций (не полные объявления)? Если я отключу этот метод, у другого __rvm_curl также будут проблемы.
Джастингордон
Смотри мой ответ. Но поведение, которое вы описываете, звучит странно ... поэтому просто неинтересно: работает ли полный листинг с другим эмулятором терминала? Можете ли вы использовать проблемные функции успешно?
mpy
Терминал имеет ту же проблему, что и пункт 2. Ответ ниже - УДИВИТЕЛЬНЫЙ. Хотелось бы знать, почему терминал зависает только с помощью команды 'functions' (даже если она переведена на меньшее количество каналов), имеет ли это значение? По какой причине это вызовет проблемы?
Джастингордон
Я предположил, что в этих функциях есть действительно странные последовательности символов, которые портят терминал. Чтобы сузить это, вы можете перенаправить вывод в файл functions > /tmp/foo. Если это проблема с zsh, то это тоже должно быть. Когда это терминальная проблема, это не должно быть. Если ваша проблема может мешать повседневному использованию - не могу сказать, извините.
mpy

Ответы:

19

С мошенничеством, глядя на _functionsфункцию завершения, я могу ответить на ваш вопрос:

Функции хранятся в ассоциативном массиве functions, поэтому для получения только имен функций ( kфлаг для ключей ) в алфавитном порядке ( oфлаг для упорядочения ) вы можете использовать

print -l ${(ok)functions}
МРУ
источник