我正在尝试使用以下命令创建 tar.gz 文件:
sudo tar -vcfz dvr_rdk_v1.tar.gz dvr_rdk/
Run Code Online (Sandbox Code Playgroud)
然后它开始创建文件(文件夹中的许多文件),但随后出现以下错误:
tar: dvr_rdk_v1.tar.gz: Cannot stat: No such file or directory
tar: Exiting with failure status due to previous errors
Run Code Online (Sandbox Code Playgroud)
我没有看到此错误的任何描述,这是什么意思?
小智 80
-从vcfz选项中删除。tar选项不需要连字符。
使用连字符,-f选项的参数是z。因此,该命令实际上是在尝试存档dvr_rdk_v1.tar.gz并dvr_rdk放入名为z. 如果没有连字符,选项的语义会发生变化,因此命令行上的下一个参数,即存档的文件名,将成为f标志的参数。
还要检查您对正在执行命令的目录的写权限。
twa*_*163 72
该-f选项应直接位于文件名之前。所以,使用tar -vczf filename.tar.gz代替-vcfz
Mar*_*ick 19
该tar命令历史上一直是不遵循Unix下几个命令的一个实用程序语法准则。
tar 的标准页面说:
f
使用第一个文件操作数(或第二个,如果已经指定了 b)作为存档的名称,而不是依赖于系统的默认值
虽然语法指南包括:
准则 5:
一个或多个没有选项参数的选项,后跟最多一个带有选项参数的选项,当分组在一个“-”分隔符之后时应该被接受。
因此,虽然您键入的命令tar -vcfz dvr_rdk_v1.tar.gz dvr_rdk/, 可以在旧版本的 tar 上正常运行,但某些严格遵循实用程序语法指南而编写的 tar 版本会将其解析为“z用作”的文件参数-f。因此,您应该使用以下内容进行便携:
tar -cvzf dvr_rdk_v1.tar.gz dvr_rdk/
Run Code Online (Sandbox Code Playgroud)