gpt4 book ai didi

linux - find 命令在 zsh 和 bash 中的工作方式不同

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:55:58 25 4
gpt4 key购买 nike

我刚刚将我的 shell 从 bash 切换到 zsh,我注意到 find 命令的工作方式有一些不同的行为。

在我的旧 bash shell 中,我有一个基本上复制 find 命令行为的函数。由于某些奇怪的原因,find 命令在 zsh 中不起作用,但在我的旧 bash

中起作用

bash 中的命令

~ /java_src: f stringBuf*
./com/sun/org/apache/xml/internal/utils/StringBufferPool.java
./java/io/StringBufferInputStream.java
./java/lang/StringBuffer.java

zsh 中的相同命令

~ /java_src: f stringBuf*
zsh: no matches found: stringBuf*

这是函数

# find shorthand
function f() {
find . -iname "$1"
}

对于为什么会出现这种情况有什么建议吗?

最佳答案

尝试引用参数,如 f 'stringBuf*',以避免过早的 glob 扩展。

如果您不加引号调用它,bash 会做一些聪明的事情,在您当前目录中查找模式但未找到任何内容后,会将参数按原样传递给函数。

zsh 另一方面,将尝试匹配当前目录中的模式,然后提示找不到任何东西,并且根本不执行该功能。

使用不带引号的通配符通常不是一个好主意(除非你是故意的),因为如果你当前目录中有一个名为“stringBuffoon”的文件,你的参数到f 将变成“stringBuffoon”,搜索不会给您预期的结果。

关于linux - find 命令在 zsh 和 bash 中的工作方式不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19058923/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com