O nome do arquivo deve seguir imediatamente após a opção f.
tar -xzvf maldetect-current.tar.gz
Eu executei o seguinte no Debian 9.3:
cd /usr/local/src
wget http://www.rfxn.com/downloads/maldetect-current.tar.gz
O arquivo foi baixado muito bem e, no entanto, quando eu executo:
tar -xzfv maldetect-current.tar.gz
Eu recebo:
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
Mas ls -la
mostra que o arquivo realmente existe:
/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
Você foi pego em uma armadilha. tar
suporta dois formatos de opções de linha de comando, o usual com um traço e o formato legado sem um.
E diferem no que diz respeito ao tratamento de argumentos.
Aqui:
tar -xzfv maldetect-current.tar.gz
o argumento para -f
é v
, como em todas as outras ferramentas.
Por outro lado, aqui:
tar xzfv maldetect-current.tar.gz
o argumento para f
é retirado do próximo argumento de linha de comando, o nome do arquivo que você queria dar.
A mensagem de erro menciona o nome do arquivo que ele tentou acessar, você pode ter perdido, pois v
é bem curto. Normalmente, o arquivo em questão é listado em mensagens de erro.
A página de manual do GNU menciona isso em "Estilos de opção":
In traditional style, the first argument is a cluster of option letters and all subsequent arguments supply arguments to those options that require them.
In UNIX or short-option style, each option letter is prefixed with a single dash, as in other command line utilities. If an option takes argument, the argument follows it, either as a separate command line word, or immediately following the option.