extract () { if [ -f $1 ] ; then case $1 in *.tar.bz2) tar xvjf $1 ;; *.tar.gz) tar xvzf $1 ;; *.bz2) bunzip2 $1 ;; *.rar) rar x $1 ;; *.gz) gunzip $1 ;; *.tar) tar xvf $1 ;; *.tbz2) tar xvjf $1 ;; *.tgz) tar xvzf $1 ;; *.zip) unzip $1 ;; *.Z) uncompress $1 ;; *.7z) 7z x $1 ;; *) echo "don't know how to extract '$1'..." ;; esac else echo "'$1' is not a valid file!" fi }
A verdade é que achei essa função um pouco inconveniente. O arquivo não pode ter espaço no nome, trata apenas um arquivo por cada chamada de função e a estrutura não identifica o arquivo caso ele tenha nome com letras maiúsculas (tipo, arquivo *.ZIP).
Assim, fiz algumas modificações e esta está abaixo:
extract() { for i in "$@"; do if [ -f "$i" ]; then case "$i" in *.[tT][aA][rR].[bB][zZ]|*.[tT][bB][zZ]) tar xjvf "$i" ;; *.[tT][aA][rR].[bB][zZ]2|*.[tT][bB][zZ]2) tar xjvf "$i" ;; *.[tT][aA][rR].[gG][zZ]|*.[tT][gG][zZ]) tar xzvf "$i" ;; *.[gG][tT][gG][zZ]) tar xzvf "$i" ;; *.[bB][zZ]2) bunzip2 "$i" ;; *.[rR][aA][rR]) rar x -o+ "$i" ;; *.[gG][zZ]) gunzip "$i" ;; *.[tT][aA][rR]) tar xvf "$i" ;; *.[zZ][iI][pP]) unzip -o "$i" ;; *.Z) uncompress "$i" ;; *.7[zZ]) 7z x "$i" ;; *) echo "don't know how to extract '$i' ..." ;; esac else echo "$i is not a valid file" fi done }
Essa função aceita tantos argumentos quando o bash suporte e identifica a maioria dos problemas de maiúsculas e minúsculas. Além de não apresentar problemas ao manipular arquivos com espaços no nome.
Para usá-la, basta adicionar a mesma no arquivo ~/.bashrc...
Quem tiver sugestões para aprimorar essa função, pode deixar um "oi" pelo comentários...
Nada como um cérebro com disponibilidade de tempo :-)
ReplyDeleteTempo ?
ReplyDeleteEstou a uma semana da minha defesa de doutorado !
Terça que vêm enfrento a banca... definitivamente, não é porque tive tempo que fiz isso, mas para me distrair um pouco ...
Por sinal, o blog serve para que me distraia compartilhando informação ...
Opa Mitre,
ReplyDeleteImaginei que as coisas já estivessem mais calmas com a proximidade da defesa... pelo visto, só após a defesa é que é possível relaxar :-)
Mas vai dar tudo certo!
abs
A corrida termina depois da linha de chegada !
ReplyDeleteMitre, você podeira fazer o favor de postar no pastebin, pois quando colo a indentação não fica legal.
ReplyDeleteFaço melhor (para mim, pelo menos)
ReplyDeleteColoquei o arquivo em formato de texto puro no dropbox e o link (que é público) segue abaixo
http://dl.dropbox.com/u/4917242/blogdomitre/extract
Em breve, todos os meus arquivos de download similares também vão usar o dropbox.
Ótimo Script Realmente útil ! Valeu !
ReplyDelete