Показать тело функции в 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.*) '
}

6

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

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

Утилита типа должна указывать, как каждый аргумент будет интерпретироваться, если используется в качестве имени команды.

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 '' 
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.