tar xvfz 在 cygwin 中如何工作?

How tar xvfz works in cygwin?

我尝试 tar 使用 xvfz 和 -xvfc 在 Windows 上都无法在 Cygwin 中工作。

$ tar xvfz sshpass-1.0.5.tar.gz
tar (child): sshpass-1.0.5.tar.gz: Cannot open: No such file or directory
tar (child): Error is not recoverable: exiting now
tar: Child returned status 2
tar: Error is not recoverable: exiting now

这里用'-'命令tar

$ tar -xvfz sshpass-1.0.5.tar.gz
tar: z: Cannot open: No such file or directory
tar: Error is not recoverable: exiting now

问题: 1. tar 如何与 - 或不与 _ 一起使用?

请建议执行tar -xvfz sshpass-1.0.5.tar.gz.

tar 有 3 种语法(根据 this ):

长选项(--文件) 空头选项 (-f) 旧选项(f) 对于旧的选项语法,所有字母都必须跟在 "tar" 之后,并且必须全部落入一个没有空格的块中。字母的顺序并不重要,只要这些字母的参数在选项块之后遵循相同的顺序即可。

这种 tar 选项的旧写法甚至会让有经验的用户感到惊讶。比如两条命令:

 # tar cfz sshpass-1.0.5.tar.gz file
 # tar -cfz sshpass-1.0.5.tar.gz file

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

保留旧选项以与旧版本 tar 兼容。

带'-'的命令等同于

tar -czf sshpass-1.0.5.tar.gz file
tar -cf sshpass-1.0.5.tar.gz -z file
tar cf sshpass-1.0.5.tar.gz -z file

知道了,文件名中有一个拼写错误,已更正并运行。成功了。

$ tar xvfz sshpass-1.05.tar.gz
sshpass-1.05/
sshpass-1.05/COPYING
sshpass-1.05/AUTHORS
sshpass-1.05/aclocal.m4
sshpass-1.05/INSTALL
sshpass-1.05/Makefile.am
sshpass-1.05/configure.ac
sshpass-1.05/install-sh
sshpass-1.05/Makefile.in
sshpass-1.05/sshpass.1
sshpass-1.05/configure
sshpass-1.05/depcomp
sshpass-1.05/README
sshpass-1.05/NEWS
sshpass-1.05/config.h.in
sshpass-1.05/missing
sshpass-1.05/main.c
sshpass-1.05/ChangeLog