Como é uma coisa do Linux, estou supondo que o GNU mv
esteja disponível. Ele tem uma opção -t
que permite que o diretório de destino seja especificado antes dos nomes de caminho que devem ser movidos.
Então, algo simples:
alias trash='mkdir -p "$HOME/.trash" && mv -b -t "$HOME/.trash"'
Isso cria um alias chamado trash
que você usaria em vez de rm
(mas ele realmente não aceita nenhuma das opções de rm
). Quando você usa
trash thisfile thatdir
o que realmente seria executado é
mkdir -p "$HOME/.trash" && mv -b -t "$HOME/.trash" thisfile thatdir
Esse alias também cria o diretório da lixeira no diretório pessoal, se ele ainda não existir (ou se tiver sido excluído). Ele também usa mv -b
(outro flag% GNUmv
only) para criar backups na pasta da lixeira, caso já exista um arquivo com o mesmo nome.
Uma tarefa do cron que limpa esse diretório de lixeira de coisas antigas executaria algo como
find "$HOME/.trash" -mindepth 1 -ctime +30 -delete 2>/dev/null
Isso excluiria tudo que tiver mais de 30 dias, evitando o próprio diretório de lixeira. Os diretórios não serão excluídos até que todo o conteúdo seja removido.