Compac.sh (Versão CShell)

Publicado por Sandro Marcell 11/09/2007

[ Hits: 3.967 ]

Homepage: http://sanmarcell.wordpress.com

Download compac.sh




Compacte/descompacte arquivos simultaneamente de forma rápida e prática, sem necessidade de parâmetros extras.

  



Esconder código-fonte

#!/bin/csh -f
#
# Compactando/descompactando arquivos simultaneamente
# (Versão C Shell)
#
# Sandro Marcell (sandro_marcell@yahoo.com.br)
#
# Uso: nome_script arquivo1 ... [arquivoN]
# Obs.: É possível o uso do metacaractere (*)

# Modificando saída do comando 'echo':
set echo_style = sysv

# Checando parâmetros:
if ($#argv == 0) echo "\e[1mUso: $0:t arquivo1 ... [arquivoN]\e[m"

# Arquivo de log:
set LOG = /tmp/$0:t-$user.log

# Avisos:
set AG       = "\e[1mDescompactando...\e[m"
set AG2       = "\e[1mCompactando...\e[m"
set SUCESSO = "\e[1mArquivo descompactado!\e[m"
set ERRO    = "\e[1;5mErro! Mais detalhes em: $LOG\e[m"

# Início do loop:
foreach A ($argv)
    # Testes condicionais:
    if (! -e $A) then
       echo "\e[1;5mArquivo não encontrado.\e[m"
       continue
    else if (! -w $A) then
       echo "\e[1;5mSem permissão de acesso.\e[m"
       continue
    endif

    # Compactar ou descompactar?
    switch ($A)
   # Descompactando...
   case {*.tar.gz,*.tgz}:
      echo $AG ; sleep 1
      tar -zxf $A >>&! $LOG
      # Testando código de retorno:
      if ($status == 0) then
         echo $SUCESSO
      else
         echo $ERRO
      endif
   breaksw

   case *.gz:
      echo $AG ; sleep 1
      gunzip $A >>&! $LOG
      if ($status == 0) then
         echo $SUCESSO
      else
         echo $ERRO
      endif
   breaksw

   case {*.tar.bz2,*.tbz}:
      echo $AG ; sleep 1
      tar -jxf $A >>&! $LOG
      if ($status == 0) then
         echo $SUCESSO
      else
         echo $ERRO
      endif
   breaksw

   case *.bz2:
      echo $AG ; sleep 1
      bunzip2 $A >>&! $LOG
      if ($status == 0) then
         echo $SUCESSO
      else
         echo $ERRO
      endif
   breaksw

   default:
      # Compactando...
      # É arquivo ou diretório?
      if (-d $A) then
         echo $AG2 ; sleep 1
         tar -czf $A.tar.gz $A >>&! $LOG
         if ($status == 0) then
            echo "\e[1mDiretório compactado!\e[m"
         else
            echo $ERRO
         endif
      else
         echo $AG2 ; sleep 1
         gzip -f9 $A >>&! $LOG
         if ($status == 0) then
            echo "\e[1mArquivo compactado!\e[m"
         else
            echo $ERRO
         endif
      endif
       breaksw
    endsw
end
# Fim

Scripts recomendados

Formatar o terminal com cores e efeitos

Calculadora em Shell Script

Array com lista de diretórios

Informações de processador, memória e dispositivos

Cálculo de Índice de Massa Corporal


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts