我有使用 的 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 中使用您的命令