Script lixeira em Tcl

Publicado por Sandro Marcell 28/03/2007

[ Hits: 4.434 ]

Homepage: http://sanmarcell.wordpress.com

Download lixo.tcl




Este simples script em Tcl, remove arquivos e diretórios, mas em vez de apagá-los, ele os copia para um diretório que será criado em /tmp e que servirá como lixeira.

Sugestão: Coloque está linha em seu .bash_profile:
alias rm=nome_do_script

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

  



Esconder código-fonte

#!/usr/bin/tcl

## Lixeira.tcl - Script que cria uma lixeira para o usuário
## Escrito por: Sandro Marcell P. Barbosa (Boa Vista - Roraima)
## E-mail: [email protected]
## Slackware GNU/Linux 10.1

# +--------------------------------------------------------------+
# Este script remove arq(s). e dir(s)., sem pedido de confirmação.
# O uso do metacaractere (*) é permitido.
# +--------------------------------------------------------------+

# Checa se o usuário passou algum parâmetro para o script:
if {$argc == 0} {
   puts stdout "\n>>> Uso: [file tail $argv0] arq.1 arq.2 ...\n"
exit 0
}

# Caso tenha passado, o script contínua!

# Criando, caso não exista o diretório onde o(s) arq(s)./dir(s).\
removido(s), será(ão) posto(s):
set LIXEIRA "/tmp/lixeira-$tcl_platform(user)"
if {![file exists $LIXEIRA]} {
   file mkdir $LIXEIRA
}

# Setando as permissões para a lixeira:
file attributes $LIXEIRA -permissions u+rwx,go-rwx
               
# Início do laço "foreach", responsável pelo controle das execuções abaixo:
foreach ARQUIVO $argv {
   
      # Checa se o(s) arq(s)./dir(s). existe(m):
      if {![file exists $ARQUIVO]} {
         puts stdout "\nArquivo ou diretório não encotrado!\n"
         exit 0
         continue
      }
      
      # Checa se o usuário é o dono:
      if {![file owned $ARQUIVO]} {
         puts stdout "\nSem permissão para remover!\n"
         exit 0 
         continue
      }

      # Se o usuário desejar remover a lixeira!:
      if {$ARQUIVO == $LIXEIRA} {
         file delete -force $LIXEIRA
         puts stdout "\nLixeira removida!\n"
         continue
      }
      
      # Se as duas primeiras condições forem satisfeitas,\
      então estes comandos serão executados:      
      file copy -force $ARQUIVO $LIXEIRA ;
      file delete -force $ARQUIVO ;
      puts stdout "\nArquivo removido!\n" 
   }
   

Scripts recomendados

Renomeando arquivos de forma padronizada

tkFind

O mundo do Polinômio

Visualizador de imagem

Crivo de Eratóstenes Simples em Tcl (sem Tk)


  

Comentários
[1] Comentário enviado por albertguedes em 28/03/2007 - 19:08h

Muito bom SMarcell, além de tcl/tk ser uma das GUI mais usadas, você fez o script claro, e o melhor, bem comentado. Isso é que faz a boa prática de programação.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts