Evitando dor de cabeça com o unzip
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.
