为什么一些linux命令在文件列表中使用“*”而其他命令却没有?

为什么一些linux命令在文件列表中使用“*”而其他命令却没有?,第1张

概述为什么一些linux命令文件列表中使用“*”而其他命令却没有?

为什么呢,比如说,

ls -1 /path/to/something/data*data/file*.txt

工作正常,而像下面的东西返回一个错误:

tar -xzvf *tar.gz tar: evsClIEnt-v.0.0.6.tar.gz: Not found in archive tar: evsClIEnt-v.0.0.7.tar.gz: Not found in archive

为什么glob lstat匹配项?

在unix系统上的C + +简单的glob?

用python glob忽略windows隐藏文件

在linuxterminal文件全局模​​式

bash / scp如何扩展“远程”全局模式?

gawk windowspath名(目录)扩展(glob)

检查shell脚本得到什么样的参数

为什么通配符在if子句bash中不工作

为stringparsing多个日志文件

python glob忽略目录

只有tar的-f选项需要一个参数来指定要处理的文件。 如果使用glob表达式,则必须使用tar -xzvf并且有多个文件会因此而扩展,第一个文件之后的文件将被视为tar常规参数,而不是-f的选项参数。

由于您使用的是-x ,因此tar处于提取模式,并且正在将其他文件作为要从其运行的归档中提取的文件的名称。

当*没有被引用时,任何包含它的单词都被视为一个shell模式,该模式将扩展为匹配该模式的文件名列表。

在第一个例子中,模式展开为现有文件列表,然后完成显示。

在第二个示例中,该模式再次展开为匹配文件的列表。 但是,只有该列表的第一个成员被视为f选项的参数。 其余的项目是你想从第一个文件中提取的文件的名称,这不是你想要的。

一般规则是该模式只是提供一个文件名列表; 这取决于您确保生成的文件列表是正在运行的命令的一组正确的参数。

“*”实际上是由shell扩展的,所得到的文件名列表将作为参数呈现给所讨论的命令。

“ls”命令支持文件名列表,“tar”命令也是如此。 但焦油的签名是:

tar option(s) archive_name file_name(s)

所以 – 在你的例子中,我假设命令行被扩展为:

tar -xzvf evsClIEnt-v.0.0.5.tar.gz evsClIEnt-v.0.0.6.tar.gz evsClIEnt-v.0.0.7.tar.gz

给你的错误,因为后两个档案不能从第一个提取。

总结

以上是内存溢出为你收集整理的为什么一些linux命令在文件列表中使用“*”而其他命令却没有?全部内容,希望文章能够帮你解决为什么一些linux命令在文件列表中使用“*”而其他命令却没有?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/langs/1267634.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-08
下一篇2022-06-08

发表评论

登录后才能评论

评论列表(0条)

    保存