Evitando dor de cabeça com o unzip

Em: 14/08/2008 Tags: , Referencie do seu blog (Trackback)

Usuários de Windows adoram criar pacotes ZIP a partir de arquivos soltos (sim, eu sei disso pois já fui um deles). Mal sabem eles, mas isso é o pesadelo do usuário Linux, pois ao extrair o pacote pela linha de comando, todo o conteúdo do pacote é despejado no diretório corrente, fazendo a maior bagunça.

Hoje de manhã, após abrir um pacote ZIP desse tipo pela milésima vez, pensei: quem sabe, escrevendo um post sobre isso passo a usar a opção -l do unzip. Espero que dê certo. A opção -l mostra a estrutura interna do pacote ZIP, sem extrai-lo. Excelente, portanto, para evitar a sua dor de cabeça.

Exemplo:

$ unzip -l custom-err-msg_0.2.0.zip
Archive:  custom-err-msg_0.2.0.zip
  Length     Date   Time    Name
 --------    ----   ----    ----
        0  08-08-08 16:30   lib/
     1336  08-08-08 16:29   lib/custom_error_message.rb
     1838  08-08-08 16:30   README
     1074  01-01-07 17:04   MIT-LICENSE
       32  01-01-07 17:04   init.rb
 --------                   -------
     4280                   5 files

Esse é um exemplo de pacote ZIP que, quando extraído, vai definir mais 3 arquivos e 1 diretório dentro do diretório corrente (que não é a minha intenção).

Agora, um exemplo de pacote ZIP que, quando extraído, vai definir um novo diretório dentro do diretório corrente:

$ unzip -l custom-err-msg_0.2.0
Archive:  custom-err-msg_0.2.0.zip
  Length     Date   Time    Name
 --------    ----   ----    ----
        0  08-14-08 13:09   custom-err-msg_0.2.0/
       32  01-01-07 17:04   custom-err-msg_0.2.0/init.rb
     1074  01-01-07 17:04   custom-err-msg_0.2.0/MIT-LICENSE
     1838  08-08-08 16:30   custom-err-msg_0.2.0/README
        0  08-08-08 16:30   custom-err-msg_0.2.0/lib/
     1336  08-08-08 16:29   custom-err-msg_0.2.0/lib/custom_error_message.rb
 --------                   -------
     4280                   6 files

Como todos os arquivos listados são precedidos por um mesmo diretório, é garantido que quando extrairmos o pacote custom-err-msg_0.2.0.zip, será criado apenas um novo diretório no diretório corrente, chamado custom-err-msg_0.2.0.

Artigos relacionados:

Escreva um comentário (utilize o formato Markdown)