我想知道一种方法来获取包含可访问函数的文件,因为它是在 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"
仅获取路径(这可能会出现一些问题,但应该适用于大多数输出)。