我有一个文件夹,里面都是一些没用的 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 foodir
。tar
是一个旧程序,由于历史原因,它的语法有些古怪,因此您可能会发现它只是执行您习惯的常见任务的模式。
答案2
如果你仔细观察,你可能会注意到你写了
tar -cvf c-项目
这相当于
tar-cvf c-项目
OOO-ps... 您确实尝试使用名称 c 和附加选项 p 创建 tar 存档。存在这样的选项。因此您不会收到错误 p - 未知选项。但您尝试存档 dir roject。此对象缺失。不幸的是,我看不到您的简短屏幕。您必须只引用“c-project”。这样就没问题了...