Debian 9.3 - o untar falha dizendo que o arquivo não existe

6

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
    
por Arcticooling 08.01.2018 / 12:51

2 respostas

12

O nome do arquivo deve seguir imediatamente após a opção f.

tar -xzvf maldetect-current.tar.gz
    
por 08.01.2018 / 12:57
29

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.

    
por 08.01.2018 / 13:05