首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么‘`tar -xvfz`失败,但’`tar‘工作?

为什么‘`tar -xvfz`失败,但’`tar‘工作?
EN

Server Fault用户
提问于 2013-02-01 14:44:18
回答 1查看 24.5K关注 0票数 43

tar -xvfz foo.tar.gz返回一个错误tar: z: Cannot open: No such file or directory

这是完全可以理解的-- f开关需要一个文件名,所以必须是最后一个。

但是,省略连字符tar xvfz foot.tar.gz会工作,并对文件进行解压缩和解压缩。

我已经在OSX10.8和Ubuntu12.04上测试了这一点。

知道为什么吗?

编辑以添加

我总是使用tar -zxvf foo.tar.gz。然而,这个问题是由于这个xkcd而出现的,而且当有人坚持tar xvfz会工作时,我感到惊讶。

EN

回答 1

Server Fault用户

回答已采纳

发布于 2013-02-01 15:03:09

tar有三种类型的语法(根据 ):

  • 长选项(-文件)
  • 短期期权(-f)
  • 旧备选方案(f)

对于旧的选项语法,所有的字母都必须跟在"tar“后面,并且都必须成一个没有空格的组块。字母的顺序并不重要,只要这些字母的参数在一组选项之后遵循相同的顺序。

这种旧的编写tar选项的方式甚至会让有经验的用户感到惊讶。例如,这两个命令:

代码语言:javascript
复制
 # tar cfz archive.tar.gz file
 # tar -cfz archive.tar.gz file

是完全不同的。第一个示例使用‘archive.tar.gz’作为选项‘f’的值,并识别选项‘z’。然而,第二个例子使用‘z’作为选项‘f’的值--可能不是预期的值。

为了与旧版本的tar兼容,保留了旧选项。

带有“-”的命令等效于

代码语言:javascript
复制
tar -czf archive.tar.gz file
tar -cf archive.tar.gz -z file
tar cf archive.tar.gz -z file

这就是为什么你的例子没有"-“而不是"-”的原因。

票数 63
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/474561

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档