查找包含函数的文件

查找包含函数的文件

我想知道一种方法来获取包含可访问函数的文件,因为它是在 shell 中获取的。适用于 Bash 和 ZSH。

例如,当我想找出函数的来源时,git_showhidden它会打印该函数但不打印文件。

$ which git_showhidden
git_showhidden () {
    files=($(git ls-files -v | grep "^[[:lower:]]" | sed 's/h //'))
    echo "${files[@]}"
}

当然我可以搜索字符串,但是那很无聊而且很慢, which并且whence不能type提供我需要的东西。

答案1

这只是部分答案,但对于type完全满足您的需要。

例子:

$ type extract
extract is a shell function from /usr/share/oh-my-zsh//plugins/extract/extract.plugin.zsh

您可以将其输出通过管道传输到以sed "s/.*is a shell function from //g"仅获取路径(这可能会出现一些问题,但应该适用于大多数输出​​)。

相关内容