Introdução
Neste projeto, você aprenderá como criar um comando rm personalizado que move arquivos excluídos para um diretório de lixeira em vez de excluí-los permanentemente. Este é um recurso útil para ter em seu servidor Linux para evitar a exclusão acidental de arquivos cruciais.
👀 Pré-visualização
labex:project/ $ ll /tmp/trash
total 2.0K
-rw-r--r-- 1 labex labex 8 Oct 26 17:47 trash_file.md
🎯 Tarefas
Neste projeto, você aprenderá:
- Como configurar o diretório
/tmp/trashpara armazenar arquivos excluídos temporariamente - Como criar um script de comando
rmpersonalizado que move arquivos excluídos para o diretório da lixeira - Como atualizar a variável de ambiente
PATHpara usar o comandormpersonalizado - Como testar o comando
rm -fpersonalizado para garantir que ele esteja funcionando conforme o esperado
🏆 Conquistas
Após concluir este projeto, você será capaz de:
- Proteger seu servidor Linux contra exclusão acidental de arquivos implementando um comando
rmpersonalizado com um diretório de lixeira - Entender como modificar comandos do sistema para alterar seu comportamento padrão
- Ganhar experiência em shell scripting e gerenciamento de variáveis de ambiente
Configurar o Diretório da Lixeira
Nesta etapa, você aprenderá como configurar o diretório /tmp/trash para armazenar arquivos excluídos temporariamente.
- Abra um terminal.
- Crie o diretório
/tmp/trashe defina as permissões apropriadas:
sudo mkdir /tmp/trash
sudo chown root:root /tmp/trash
sudo chmod 1777 /tmp/trash
A permissão 1777 define o diretório para ter o "sticky bit" habilitado, o que permite que todos os usuários escrevam no diretório, mas apenas o proprietário pode excluir arquivos dentro dele.
Atualizar a Variável de Ambiente PATH
Nesta etapa, você atualizará a variável de ambiente PATH para garantir que o comando rm personalizado seja usado em vez do comando rm padrão do sistema.
- Crie um novo diretório para conter o comando
rmpersonalizado:
sudo mkdir -p /usr/local/custom/bin
- Edite o arquivo
/etc/environment:
sudo vim /etc/environment
- Adicione o diretório
/usr/local/custom/binao início da variávelPATH:
PATH="/usr/local/custom/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin"
- Salve o arquivo e saia do editor.
- Execute o comando
sourceno arquivo/etc/environmentpara atualizar o ambiente do shell atual:
source /etc/environment
sudo chmod a+x /usr/local/custom/bin
Agora, o comando rm personalizado será usado em vez do comando rm padrão do sistema.
Criar o Comando rm Personalizado
Nesta etapa, você criará um comando rm personalizado que moverá os arquivos excluídos para o diretório /tmp/trash em vez de excluí-los permanentemente.
- Crie o script do comando
rmpersonalizado:
sudo vim /usr/local/custom/bin/rm
Adicione o seguinte conteúdo ao arquivo:
#!/bin/zsh
## This script is used to move files or directories to the trash directory instead of permanently deleting them.
## If the -f option is used, the targets will be moved to the trash directory.
## If the targets do not exist, an error message will be displayed.
TRASH_DIR="/tmp/trash"
if [[ "$1" == "-f" ]]; then
shift
for arg in "$@"; do
## Check if the target exists
if [[ -e "$arg" ]]; then
## Move the target to the trash directory
mv -f "$arg" "$TRASH_DIR"
else
echo "Error: $arg does not exist."
fi
done
else
## Execute the original rm command
/bin/rm "$@"
fi
- Defina as permissões apropriadas para o script do comando
rmpersonalizado:
sudo chown root:root /usr/local/custom/bin/rm
sudo chmod 755 /usr/local/custom/bin/rm
Testar o Comando rm Personalizado
Nesta etapa, você testará o comando rm -f personalizado para garantir que ele esteja funcionando conforme o esperado.
- Crie um arquivo de teste no diretório
/home/labex/project:
touch /home/labex/project/trash_file.md
- Use o comando
rm -fpersonalizado para excluir o arquivo de teste:
rm -f /home/labex/project/trash_file.md
- Verifique se o arquivo foi movido para o diretório
/tmp/trash:
ls -l /tmp/trash
Você deve ver o arquivo trash_file.md listado na saída.
total 2.0K
-rw-r--r-- 1 labex labex 8 Oct 26 17:47 trash_file.md
Parabéns! Você implementou com sucesso o comando rm personalizado que move os arquivos excluídos para o diretório /tmp/trash em vez de excluí-los permanentemente.
Resumo
Parabéns! Você concluiu este projeto. Você pode praticar mais laboratórios no LabEx para aprimorar suas habilidades.



