使用 tar 时遇到奇怪的行为

使用 tar 时遇到奇怪的行为

我有一个文件夹,里面都是一些没用的 C 程序,用于一个项目。当我使用 tar 压缩它时,我一直在使用

tar -cvf c-project

然后意识到我正在为文件名设置标志,但我没有给出任何标志。

因此我尝试删除标志f并将命令设置为tar -cv c-project假设,tar 文件的名称将变成c-project.tgz

但事实就是这样的。

在此处输入图片描述

使用 gzip 时不会出现此行为。这是因为z添加了附加标志。

知道为什么会发生这种情况吗?内容似乎是 C 文件的内容。但是,为什么它们是“乱码”的?

答案1

如果您未指定输出文件,则tar默认输出到“标准输出”,通常是您的屏幕。由于文件的内容tar不是直接可读的,因此这在您的屏幕上看起来会是垃圾。当您将tar的输出通过管道传输到另一个程序(如 )时,“标准输出”行为很有用tar -cv foodir | gzip > foodir.tgz。实现相同目的的更短方法是tar -czvf foodir.tgz foodirtar是一个旧程序,由于历史原因,它的语法有些古怪,因此您可能会发现它只是执行您习惯的常见任务的模式。

答案2

如果你仔细观察,你可能会注意到你写了

tar -cvf c-项目

这相当于

tar-cvf c-项目

OOO-ps... 您确实尝试使用名称 c 和附加选项 p 创建 tar 存档。存在这样的选项。因此您不会收到错误 p - 未知选项。但您尝试存档 dir roject。此对象缺失。不幸的是,我看不到您的简短屏幕。您必须只引用“c-project”。这样就没问题了...

相关内容