焦油 cvf 还是焦油 -cvf ?

asc*_*bol 27 tar options portability

我已经学会了使用不带“-”的 tar 作为选项,例如,tar cvfz dir.tar.gz Directory/但我最近遇到了略有不同的tar -czvf语法(我认为在这种情况下,“f”必须是最后一个选项)。

两者都适用于 linux 和 Mac OS。是否有推荐的语法,没有 '-' 的 ou 更易于移植到 unix 风格?

Gil*_*il' 29

tar是选项语法尚未标准化的时代的古老命令之一。因为所有有用的调用都tar需要在提供任何文件名之前指定一个操作,所以大多数tar实现将它们的第一个参数解释为一个选项,即使它不以-. 大多数当前的实现都接受一个-; 我知道的唯一例外是Minix

旧版本的 POSIX 和 Single Unix 包含一个在操作说明符之前tar没有的命令-。Single Unix v2 同时具有传统的归档器cpiotar,但很少有标志可以标准化,因为现有的实现差异太大,因此标准引入了一个新命令,pax,这是自Single Unix v3以来唯一的标准归档器。如果你要符合标准,使用pax,但请注意,许多Linux发行版不包括在他们的基础设施,而且也没有paxMinix的。如果您希望在实践中具有可移植性,请使用tar cf filename.tar.


Bru*_*ger 13

我可能是个恐龙,但我认为习惯性使用cvf而不是-cvf可能更便携。我想大多数 Linux 发行版都使用 GNU tar,我猜 *BSD 也使用 GNU tar,但是您会发现专有 Unix 仍然使用旧的 SysV tar,这曾经要求您不要-在选项中使用 a 。

我不使用-cvf(或-xf其他),即使使用最前沿的 Arch linux 我也没有问题。

作为旁注,我认为您可以使用jar带有或不带有 a的 Sun 标准命令选项-

  • 你错了:AT&T UNIX 上的 tar 编写时没有 - 但它接受 - 并跳过它。调用 tar 的唯一可移植方法是在不带 - 的情况下调用它,如果您发现一个“tar”实现不接受不带 - 的内容,那么这不是 tar。 (2认同)