【问题标题】:find command works differently in zsh and bashfind 命令在 zsh 和 bash 中的工作方式不同
【发布时间】:2013-09-27 19:47:49
【问题描述】:

我刚刚将我的 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"
 }

关于为什么会出现这种情况的任何建议?

【问题讨论】:

    标签: linux bash shell zsh


    【解决方案1】:

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

    如果你把它称为不带引号的,bash 会做聪明的事,在你当前目录中查找模式但没有找到任何东西后,会将参数按原样传递给函数。

    另一方面,zsh 会尝试匹配当前目录中的模式,然后抱怨没有找到任何东西,并且根本不执行该函数。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-12-07
      • 1970-01-01
      • 1970-01-01
      • 2020-02-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-16
      相关资源
      最近更新 更多