Criando uma lixeira [Melhorado]

Publicado por Sandro Marcell 18/07/2007

[ Hits: 5.207 ]

Homepage: http://sanmarcell.wordpress.com

Download lixo.sh




Versão melhorada de um script que cria uma simples lixeira para o usuário. (Versão CShell)

Dica:
Coloque esta linha em seu .bashrc:

alias rm=nome_do_script

Assim toda vez que você chamar pelo terminal o comando rm, estará invocando este script.

Falou!!!

  



Esconder código-fonte

#!/bin/csh
#
# Criando uma simples lixeira. 
# (Versão CShell)
#
# Autor: Sandro Marcell (sandro_marcell@yahoo.com.br)
#
# Obs.:
# Arquivos e diretórios são removidos sem pedido de confirmação. 
# É possível o uso do metacaractere (*).
# A opção -r remove a lixeira.

# Checando parâmetros:
if ($#argv == 0) then
   echo "Uso: `basename $0` arquivo1 [arquivoN]\
     ou\
     `basename $0` -r  [Para remover a lixeira]"
   exit
endif

# Criando a lixeira:
set LIXEIRA = $home/lixeira
if (! -e $LIXEIRA) then
   mkdir $LIXEIRA
endif

# O que fazer?
switch ($argv[1])
    # Remover a lixeira!
    case -r:
       # Descartando a opção -r:
       shift

       # Checando parâmetros:
       if ($#argv >= 1) then
          echo "Erro: A opção [-r] não aceita parâmetros!"
          exit
       else
          # Perguntando antes de remover:
          echo -n "Deseja realmente remover a lixeira? [s/n]:"
          # Capturando resposta:
          set R = $<
          # Checando resposta:
          if ($R == s || $R == S) then 
             # Removendo
             rm -R -f $LIXEIRA >& /dev/null
             echo "Lixeira removida!"
             exit
          else if ($R == n || $R == N) then
             echo "Saindo..."
             exit
          else
             echo "[$R] Resposta inválida."
             exit
          endif
       endif
          breaksw

    # ou mandar tudo pro lixo...
    default:
       # Início do loop:
       foreach A ($argv)
       
       # Testes condicionais:
       if (! -e $A) then
          echo "-> Arquivo ou diretório não encontrado."
          continue
       else if (! -w $A) then
          echo "-> Sem permissão para remover."
          continue
       endif
       
       # Removendo:
       ls $A | xargs cp -R -f $A --target-directory=$LIXEIRA >& /dev/null
       ls $A | xargs rm -R -f $A >& /dev/null
       echo "Arquivo removido!"
       end
          breaksw
endsw
# Fim

Scripts recomendados

Um simnples gerenciador

Twitter via https pelo terminal

Atualizando o banco de dados do ClamAV sem freshclam

Script nubb

Array de números aleatórios não-repetidos de um intervalo em Shellscript (Bashscript)


  

Comentários
[1] Comentário enviado por SMarcell em 31/07/2007 - 08:43h

Aqui há a versão melhorada deste script:

>> http://www.slackbr.org/forum/viewtopic.php?t=14625

Falou!!!

[2] Comentário enviado por vitinho217 em 26/06/2014 - 10:20h

Muito legal Marcell, que tal uma função limpar lixeira ? Seria interessante.

Um abraço e VIVA O LINUX !

[3] Comentário enviado por vitinho217 em 26/06/2014 - 10:31h

# Limpar lixeira
case -[cC]:
# Descartando a opcao [-c]:
shift

# Nenhum parametro e aceito:
if ($#argv >= 1) then
echo "A opcao [-c] nao aceita parametros\!"
exit 1
endif

# Perguntando antes de remover:
echo -n "Deseja realmente limpar a lixeira? [s/n]:"

# Checando resposta:
set resp = $<
if ($resp == s || $resp == S) then
rm -rf * $lixo >& /dev/null
echo "Lixeira limpa\!"
exit
else if ($resp == n || $resp == N || $resp == "") then
echo "Operacao cancelada\!"
exit
else
echo "[$resp]: Resposta invalida\!"
exit
endif
breaksw


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts