Configure o comando rm

1

Eu quero configurar o comando rm . Quando alguém digita rm para excluir um arquivo, em vez de excluí-lo imediatamente, o arquivo precisa ser transferido para o .trash da pasta base. Alguém pode me ajudar?

    
por manatwork 31.10.2012 / 16:59

4 respostas

4

Você pode usar LD_PRELOAD com libtrash.

Veja: link

Você também pode criar links físicos para seus arquivos na pasta ~ / .trash. Quando arquivos normais (que antes eram hardlinked) são excluídos, eles permanecerão no disco até que você os exclua da "lixeira".

Para criar um link físico:

ln test.txt ~/.trash/test.txt
    
por 31.10.2012 / 17:27
1

Uma solução rápida é adicionar a seguinte declaração de função ao seu ~.bashrc .

function rm() {
   mv "${@}" ~/.trash
}

Advertências:

  • As diferenças nas opções entre rm e mv são cobertas por notas.
  • Você pode se acostumar com o comportamento da lixeira. Em uma máquina / conta diferente sem essa modificação, você virá com grandes problemas após uma rápida exclusão; -)

Apenas meus 5 centavos - use em vez disso:

alias rm='rm -i '
    
por 31.10.2012 / 17:16
1

Tenha em mente que não é uma boa ideia renomear ou mover seu comando "rm". Uma prática muito melhor é usar o comando alias the rm para usar um script completamente diferente no perfil do usuário.

no seu .bash_profile (supondo que você esteja usando o bash como seu shell padrão)

alias rm='~/bin/deleteFile'

e, em seguida, você pode criar o script ~/bin/deleteFile . Basta copiar / modificar o seguinte para atender às suas necessidades:

#!/bin/bash
TODEL=$1
if [ "${TODEL:0:1}" == "/" ]; then  #full path?
  TRASH=~/trash-can/'dirname $1'
else                                #relative path.
  TRASH=~/trash-can/'pwd'/'dirname $1'  
fi
mkdir -p $TRASH 2> /dev/null
mv $TODEL $TRASH

Isso não foi testado, mas deve funcionar para as suas necessidades. Há algumas advertências que devem ser abordadas ... mas cabe a você decidir como deve ser tratado. Ou seja, o que acontece quando você apaga um arquivo, cria um novo nome com o mesmo nome e depois o exclui? e esse script não limpará sua lixeira. Talvez um cron-job uma vez por semana ou algo assim?

Isso NÃO substituirá um script que chame /bin/rm diretamente, nem funcionará com scripts que não estejam carregados no seu perfil bash. Provavelmente existem centenas de coisas adicionais que devem ser consideradas antes de confiar neste script em qualquer grau.

    
por 31.10.2012 / 17:31
0

No Debian, algo como 'alias rm =' mv -t ~ / home / .trash / 'em ~. / bash_aliases deve funcionar. No entanto, não é uma boa prática aliasar rm para mv , pois isso pode afetar os outros usuários que tentam excluir permanentemente usando rm . Além disso, se você percorrer a rota de alias, talvez seja necessário configurar uma tarefa cron para esvaziar a lixeira periodicamente.

Existem várias alternativas dadas aqui - na sua maioria de terceiros ferramentas / scripts. Espero que isso ajude ...

    
por 31.10.2012 / 17:23

Tags