tar -xvfz foo.tar.gz
返回一个错误tar: z: Cannot open: No such file or directory
这是完全可以理解的 – f
开关期望一个文件名,所以需要最后一个。
但是,省略连字符tar xvfz foot.tar.gz
工作tar xvfz foot.tar.gz
压缩tar xvfz foot.tar.gz
压缩文件。
我已经在OS X 10.8和Ubuntu 12.04上testing过了。
任何想法为什么?
[编辑添加]
我总是使用tar -zxvf foo.tar.gz
然而,这个问题已经出现了,因为这个xkcd ,当有人坚持说tar xvfz
会起作用时,我感到惊讶。
tar有三种语法(根据这个 ):
对于旧的选项语法,所有的字母必须遵循“tar”,并且必须全部落入一个没有空格的簇中。 信件的顺序并不重要,只要这些信件的论据在选项集合后遵循相同的顺序。
这种编写tar选项的旧方法可以让有经验的用户感到惊讶。 例如,这两个命令:
# tar cfz archive.tar.gz file # tar -cfz archive.tar.gz file
是完全不同的。 第一个示例使用'archive.tar.gz'作为选项'f'的值,并识别选项'z'。 然而,第二个例子使用'z'作为选项'f'的值 – 可能不是预期的。
旧选项保留与旧版本的tar兼容。
带“ – ”的命令相当于
tar -czf archive.tar.gz file tar -cf archive.tar.gz -z file tar cf archive.tar.gz -z file
这就是你的例子没有“ – ”而不是“ – ”的原因。