在 zsh 上获得与在 bash 上执行“type -t”时相同的结果吗?

在 zsh 上获得与在 bash 上执行“type -t”时相同的结果吗?

我有使用 的 shell 脚本type -t,但由于它显然最初是为狂欢在这台机器上,它不起作用。

我看到 bash 文档type -t有这样的内容:

如果使用 -t 选项,则 type 会打印单个单词,该单词是 'alias'、'function'、'builtin'、'file' 或 'keyword' 之一(如果 name 分别是别名、shell 函数、shell 内置、磁盘文件或 shell 保留字)。如果未找到 name,则不会打印任何内容,并且 type 返回失败状态。

但是在 zsh 中,type不接受该-t选项,它实际上别名为whence

类型 [ -fpam ] 名称...与 whence -v 相同。

由此可见:

对于每个名称,指出如果将其用作命令名称将如何解释。'-v' 标志会生成更详细的报告。'-c' 标志以类似 csh 的格式打印结果,并且优先于 '-v'。'-f' 标志导致显示 shell 函数的内容,否则除非使用 '-c' 标志,否则不会发生这种情况。'-p' 标志会执行路径搜索 name,即使它是别名、保留字、shell 函数或内置函数。'-a' 标志会在整个命令路径中搜索 name 的所有出现位置。使用 '-m' 标志,参数将被视为模式(应加引号),并显示与这些模式之一匹配的每个命令的信息。

其中不包括所需的输出。获取等效结果的一种方法? 这台机器上没有更换外壳的选项。

答案1

作为输出从哪里开始-w在 zsh 中类型-t在 bash 中也有类似的东西(下表是根据个人测试得出的,因此建议谨慎使用)

type -t    whence -w
alias      alias
function   function
builtin    builtin
file       command
keyword    reserved
?          hashed
?          none

在 zsh 中创建一个模仿 bash 中 type -t 行为的脚本似乎并不太难。你甚至可以,例如通过别名,替换内置类型在 zsh 中使用您的命令

相关内容