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


19

Я можу набрати

alias

і отримати список визначених псевдонімів в zsh

Як я можу отримати список імен функцій, визначених у zsh?

Коли я набираю "функції", моє вікно оболонки висить після відображення безлічі функцій, завжди закінчується на

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

Що дуже дратує, що це не вийде з ctrl-c (використовуючи item2 AND термінал).

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

Зображення терміналу, що має той самий випуск: введіть тут опис зображення


Зазвичай список буде зроблено з functionsвбудованою командою. Ви отримуєте вихід, якщо спочатку визначите проблемну (?) Функцію unfunction __rvm_checksum_read:?
mpy

Що робити, якщо я хочу отримати список функцій (не повних декларацій)? Якщо я відключаю цей метод, у іншого __rvm_curl також є проблеми.
justingordon

Дивіться мою відповідь. Але поведінка, яку ви описуєте, звучить дивно ... так що просто з інтересу: чи працює повний список з іншим термінальним емулятором? Чи можете ви успішно використовувати проблемні функції?
mpy

термінал має те саме питання, що і пункт 2. Відповідь нижче - ДУЖЕ. Хоча я хотів би знати, чому термінал зависає просто за допомогою команди "функції" (навіть коли передається менше), це має значення? Якась причина це спричинить проблеми?
justingordon

Я гадаю, що в цих функціях є кілька дійсно дивних послідовностей символів, які псують термінал. Щоб звузити це, ви могли б перенаправити вихід на файл functions > /tmp/foo. Якщо це проблема з zsh, це теж має бути проблемою. Коли це термінальна проблема, вона не повинна. Якщо ваша проблема може заважати користуванню щоденно - я не можу сказати, вибачте.
mpy

Відповіді:


19

Обманувши, переглянувши функцію _functionsзавершення, я можу відповісти на ваше запитання:

Функції зберігаються в асоціативному масиві functions, тому для отримання лише імен функцій ( kпрапор для клавіш ) в алфавітному порядку ( oпрапор для впорядкування ) можна використовувати

print -l ${(ok)functions}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.