Crie um recurso de lixeira sem usar funções

1

Estou trabalhando em um antigo projeto de aprendizado do Linux e uma das tarefas é a descrita abaixo:

"Crie um alias que proteja os arquivos da exclusão permanente e mova-os para um diretório chamado .Trash. Crie um comando para o crontab que excluirá periodicamente o conteúdo (mesmo que sejam diretórios) de .Trash com mais de 30 dias "

Espero fazer isso com um comando alias cli. Eu NÃO tenho permissão para usar uma função ou escrever um pequeno script que receba entrada.

Primeiro, isso é possível? Eu assumo sim porque está no livro. Em segundo lugar, por onde começar aqui? algumas dessas coisas são óbvias, eu fiz o diretório .Trash e posso entender o conceito de usar um alias ao invés de rm, mas quais ações cli poderiam ser colocadas no alias para executar essa ação?

Alias trash=mv xxx .trash xxx

o acima exigiria entrada do usuário ou informações variáveis. O que eu não estou vendo aqui?

    
por DanMan3395 28.06.2018 / 19:52

1 resposta

3

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.

    
por 28.06.2018 / 20:03

Tags