我在 Debian 9.3 中运行了以下命令:
cd /usr/local/src
wget http://www.rfxn.com/downloads/maldetect-current.tar.gz
该文件下载得很好,但是,当我执行时:
tar -xzfv maldetect-current.tar.gz
我得到:
tar (child): v: 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
但ls -la
显示该文件确实存在:
/usr/local/src# ls -la
total 3144
drwxrwsr-x 2 root staff 4096 Jan 8 11:46 .
drwxrwsr-x 11 root staff 4096 Jan 8 11:40 ..
-rw-r--r-- 1 root staff 1605546 Jul 14 04:45 maldetect-current.tar.gz
答案1
你陷入了陷阱。tar
支持两种格式的命令行选项,一种是带破折号的常见格式,另一种是不带破折号的传统格式。它们在参数处理方面有所不同。
这里:
tar -xzfv maldetect-current.tar.gz
与所有其他工具一样,争论的焦点-f
是。v
另一方面,这里:
tar xzfv maldetect-current.tar.gz
的参数f
取自下一个命令行参数,即您实际想要给出的文件名。
错误消息提到了它尝试访问的文件名,您可能只是错过了它,因为v
它相当短。不过,通常有问题的文件会在错误消息中列出。
这GNU tar 手册页在“选项样式”下提到了这一点:
在传统风格中,第一个参数是一组选项字母,所有后续参数都为需要它们的选项提供参数。
在 UNIX 或短选项样式中,每个选项字母都以一个破折号为前缀,就像在其他命令行实用程序中一样。如果选项采用参数,则参数跟随在其后面,或者作为单独的命令行单词,或紧随该选项。
答案2
文件名应紧跟在 f 选项之后。
tar -xzvf maldetect-current.tar.gz