Implementar Comando Personalizado com Lixeira

LinuxBeginner
Pratique Agora

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/trash para armazenar arquivos excluídos temporariamente
  • Como criar um script de comando rm personalizado que move arquivos excluídos para o diretório da lixeira
  • Como atualizar a variável de ambiente PATH para usar o comando rm personalizado
  • Como testar o comando rm -f personalizado 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 rm personalizado 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.

  1. Abra um terminal.
  2. Crie o diretório /tmp/trash e 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.

  1. Crie um novo diretório para conter o comando rm personalizado:
sudo mkdir -p /usr/local/custom/bin
  1. Edite o arquivo /etc/environment:
sudo vim /etc/environment
  1. Adicione o diretório /usr/local/custom/bin ao início da variável PATH:
PATH="/usr/local/custom/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin"
  1. Salve o arquivo e saia do editor.
  2. Execute o comando source no arquivo /etc/environment para 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.

  1. Crie o script do comando rm personalizado:
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
  1. Defina as permissões apropriadas para o script do comando rm personalizado:
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.

  1. Crie um arquivo de teste no diretório /home/labex/project:
touch /home/labex/project/trash_file.md
  1. Use o comando rm -f personalizado para excluir o arquivo de teste:
rm -f /home/labex/project/trash_file.md
  1. 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.

✨ Verificar Solução e Praticar✨ Verificar Solução e Praticar✨ Verificar Solução e Praticar✨ Verificar Solução e Praticar