Práticas recomendadas para alias o comando rm e torná-lo mais seguro

19

Algum tempo atrás eu erroneamente deletei minha pasta pessoal porque eu executei um rm -rf * no terminal errado, cujo diretório de trabalho era a pasta pessoal!

Gostaria de ter um alias para o comando rm , mas não foi o caso.

Agora, estou planejando criar um script como um alias para rm .

Você tem alguma prática recomendada para sugerir?

Obrigado.

    
por Vincenzo Pii 25.01.2012 / 18:36

8 respostas

28

Se você quiser um rm personalizado, não o chame de rm , mas um nome seu, myrm , delete ou qualquer outra coisa.

O alias rm='rm -i' é um horror porque depois de um tempo, você espera que rm avise por padrão antes de remover os arquivos. Claro, um dia você vai executá-lo com uma conta que não tenha esse alias definido e antes de entender o que está acontecendo, já é tarde demais.

Em qualquer caso, uma boa maneira de estar preparado para a perda ou corrupção de arquivos é fazer backups.

Uma alternativa rápida que irá protegê-lo contra a exclusão ou substituição acidental de arquivos é usar um sistema de arquivos que suporte instantâneos ilimitados como o ZFS. Se os instantâneos frequentes forem feitos automaticamente, você poderá recuperar os arquivos no estado em que estavam durante o último instantâneo antes do incidente.

    
por 26.01.2012 / 03:53
12

Sugiro desativar rm como este

alias rm='echo "rm is disabled, use remove or trash or /bin/rm instead."'

Depois, você pode criar seu próprio alias seguro, por exemplo,

alias remove='/bin/rm -irv'

ou use trash .

    
por 27.01.2012 / 15:32
5

Você pode tentar usar trash . Apenas lembre-se de esvaziá-lo de vez em quando ...

    
por 27.01.2012 / 09:55
3

Sem ter que alterar o perfil de todos, o que você pode fazer é colocar o arquivo chamado -i no diretório.

# touch -- -i
# ll
total 0
-rw-r--r-- 1 root users  0 Jan 26 19:24 files
drwxr-xr-x 2 root users 40 Jan 26 19:24 folder_of_power
-rw-r--r-- 1 root root   0 Jan 26 19:25 -i
-rw-r--r-- 1 root users  0 Jan 26 19:24 important
-rw-r--r-- 1 root users  0 Jan 26 19:24 very
# rm -rf *
rm: remove regular empty file 'files'? 
    
por 26.01.2012 / 09:31
1

Eu uso o seguinte script.

#!/bin/sh

trash=$HOME/tmp
mv "$@" $trash
nohup find "$trash" -type f -atime +7 -exec /bin/rm '{}' \; 2>&1 &

Se você excluir acidentalmente um arquivo, recupere-o do $HOME/tmp .

O script move os arquivos excluídos para um diretório tmp e os exclui da próxima vez que o script de exclusão for executado, se o tempo de acesso for 7 dias depois (limpeza semiautomática do diretório $HOME/tmp ).

    
por 07.04.2016 / 17:13
-2

No seu perfil,

alias rm="rm -i"
    
por 25.01.2012 / 18:38
-2

Um script chamado d , com o conteúdo mv $* /tmp .

edit: Esta é uma má ideia; ver abaixo. Atualmente tenho alias d='mv -t /tmp' no meu .profile .

    
por 21.07.2013 / 10:46
-2

Esse código bash adiciona a função rm ao seu arquivo de configuração ~/.bash_profile . Depois de executar isso, se você escrever rm file , moverá esse arquivo para /tmp

cat << EOF >> ~/.bash_profile
rm () {
  mv $1 /tmp
}
EOF
    
por 03.05.2017 / 17:00