#r #bash #function #shell
#r #bash #функция #shell
Вопрос:
Я использую этот псевдоним для перечисления всех функций:
alias ls-funcs='compgen -A function'
Небольшой пример результата:
__youtube_dl # Two underscores.
_add_composure_file # One underscore.
search # My function, No underscores.
Из этих функций «поиск» принадлежит мне, остальные — встроенные / частные функции,
как можно исключить эти встроенные / частные функции и просто перечислить мои собственные пользовательские функции?
Комментарии:
1.
either one or two underscores
итак, начните с единицы. Функция, которая начинается с двух, также начинается с единицы…
Ответ №1:
Передать в grep
, чтобы исключить имена, начинающиеся с _
.
alias my-funcs="compgen -A function | grep -v '^_'"
Комментарии:
1. @5c0tt Я думал, что вы перечисляете функции оболочки. Нравится
typeset -F | awk '$3 ~ /^[^_]/{print $3}'
Ответ №2:
Чтобы не зависеть от R-base compgen
и быть совместимыми с Bash, Ksh или Zsh:
alias ls-funcs=$'typeset -f | awk 'BEGIN{FS="("}/^[^_[:space:]{}].*()/{print $1}''
Немного длиннее, но немного надежнее:
alias ls-funcs=$'typeset -f | awk 'match($0,/(^[[:alnum:]-:][[:alnum:]_-:]*)[[:space:]]*()/,m){print m[1]}''