Показать тело функции в Bash

14

Я настроил несколько функций в моем .bashrcфайле. Я хотел бы просто отобразить фактический код функции, а не выполнить ее, чтобы быстро обратиться к чему-либо.

Есть ли способ, мы могли бы увидеть определение функции?

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

Ответы:

15

Опция declareвстроенной функции -fделает это:

bash-4.2$ declare -f apropos1
apropos1 () 
{ 
    apropos "$@" | grep ' (1.*) '
}

Я использую typeдля этого, он короче набирать;)

bash-4.2$ type apropos1
apropos1 is a function
apropos1 () 
{ 
    apropos "$@" | grep ' (1.*) '
}
manatwork
источник
6

Вы можете использовать typeкоманду, чтобы сделать это.

type yourfuncраспечатает функцию на STDOUT. Как man typeговорит,

Утилита типа должна указывать, как каждый аргумент будет интерпретироваться, если используется в качестве имени команды.
jasonwryan
источник
2
man type? Встроенные оболочки обычно не имеют man-страницы в моей системе.
Манатворк
Я обновил свой ответ со ссылкой. Я использую систему Arch Linux.
Джейсонвриан
1
Спасибо. Кажется, пакет man-pages содержит гораздо больше информации об Arch.
manatwork
Нет проблем: так как это одна из справочных страниц POSIX, я думал, что она будет широко распространена ...
jasonwryan
4
help typeпоказывает специфичную для Bash информацию.
10
0

для использования информации встроенных команд:

help [-s|-d] COMMAND1 COMMAND2 ....

например:

help help alias

Для получения информации о всех из них введите, например:

help -s '' 
Роберт
источник