【问题标题】:Terminal : Difference between quoted argument and non quoted in find function终端:在查找函数中引用的参数和非引用的参数之间的区别
【发布时间】:2013-11-03 04:34:17
【问题描述】:

ubuntu上终端命令行中这两个命令有什么区别?

find . -name "*.txt"

find . -name *.txt

【问题讨论】:

    标签: shell ubuntu terminal find quotes


    【解决方案1】:

    这取决于您使用的 shell 和目录的内容。

    如果你因为某种原因不幸使用 csh(或它的某些遗产,如 zsh),当你的目录中没有与模式匹配的文件时,它将拒绝执行此操作(除非你已经转向该行为关闭)。

    如果有匹配模式的文件,命令会被shell扩展:

    find . -name foo.txt bar.txt baz.txt
    

    find 将报告语法错误。除非有一个匹配的文件,否则你会得到:

    find . -name foo.txt
    

    这样只会在子目录中找到名为“foo.txt”的文件。

    仅当您使用的是健全的外壳并且当前目录中没有匹配的文件时,这两个命令才会相同。

    道德:不要这样做。始终使用引号。

    【讨论】:

    • 请注意:zsh 在这方面的行为也类似于 csh,但您至少可以使用 setopt NONOMATCH 将其关闭。
    • 感谢@chepner,将其添加到答案中
    猜你喜欢
    • 2011-08-19
    • 2014-08-27
    • 1970-01-01
    • 2010-10-11
    • 1970-01-01
    • 2013-01-04
    • 1970-01-01
    • 1970-01-01
    • 2011-03-11
    相关资源
    最近更新 更多