Implementar un comando personalizado con papelera de reciclaje

LinuxLinuxBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este proyecto, aprenderás a crear un comando personalizado rm que mueva los archivos eliminados a un directorio de papelera en lugar de eliminarlos permanentemente. Esta es una característica útil para tener en tu servidor Linux para evitar la eliminación accidental de archivos cruciales.

👀 Vista previa

labex:project/ $ ll /tmp/trash
total 2.0K
-rw-r--r-- 1 labex labex 8 Oct 26 17:47 trash_file.md

🎯 Tareas

En este proyecto, aprenderás:

  • Cómo configurar el directorio /tmp/trash para almacenar temporalmente los archivos eliminados
  • Cómo crear un script de comando personalizado rm que mueva los archivos eliminados al directorio de papelera
  • Cómo actualizar la variable de entorno PATH para usar el comando personalizado rm
  • Cómo probar el comando personalizado rm -f para asegurarse de que funcione como se espera

🏆 Logros

Después de completar este proyecto, podrás:

  • Proteger tu servidor Linux de la eliminación accidental de archivos implementando un comando personalizado rm con un directorio de papelera
  • Comprender cómo modificar los comandos del sistema para cambiar su comportamiento predeterminado
  • Adquirir experiencia en scripting de shell y gestión de variables de entorno

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicSystemCommandsGroup(["Basic System Commands"]) linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/FileandDirectoryManagementGroup(["File and Directory Management"]) linux(("Linux")) -.-> linux/VersionControlandTextEditorsGroup(["Version Control and Text Editors"]) linux/BasicSystemCommandsGroup -.-> linux/source("Script Executing") linux/BasicFileOperationsGroup -.-> linux/ls("Content Listing") linux/BasicFileOperationsGroup -.-> linux/touch("File Creating/Updating") linux/BasicFileOperationsGroup -.-> linux/rm("File Removing") linux/BasicFileOperationsGroup -.-> linux/chown("Ownership Changing") linux/BasicFileOperationsGroup -.-> linux/chmod("Permission Modifying") linux/FileandDirectoryManagementGroup -.-> linux/mkdir("Directory Creating") linux/VersionControlandTextEditorsGroup -.-> linux/vim("Text Editing") subgraph Lab Skills linux/source -.-> lab-301457{{"Implementar un comando personalizado con papelera de reciclaje"}} linux/ls -.-> lab-301457{{"Implementar un comando personalizado con papelera de reciclaje"}} linux/touch -.-> lab-301457{{"Implementar un comando personalizado con papelera de reciclaje"}} linux/rm -.-> lab-301457{{"Implementar un comando personalizado con papelera de reciclaje"}} linux/chown -.-> lab-301457{{"Implementar un comando personalizado con papelera de reciclaje"}} linux/chmod -.-> lab-301457{{"Implementar un comando personalizado con papelera de reciclaje"}} linux/mkdir -.-> lab-301457{{"Implementar un comando personalizado con papelera de reciclaje"}} linux/vim -.-> lab-301457{{"Implementar un comando personalizado con papelera de reciclaje"}} end

Configurar el directorio de papelera

En este paso, aprenderás a configurar el directorio /tmp/trash para almacenar temporalmente los archivos eliminados.

  1. Abra una terminal.
  2. Cree el directorio /tmp/trash y establezca los permisos adecuados:
sudo mkdir /tmp/trash
sudo chown root:root /tmp/trash
sudo chmod 1777 /tmp/trash

El permiso 1777 establece que el directorio tenga el "bit pegajoso" habilitado, lo que permite a todos los usuarios escribir en el directorio, pero solo el propietario puede eliminar archivos dentro de él.

Actualizar la variable de entorno PATH

En este paso, actualizarás la variable de entorno PATH para asegurarte de que se utilice el comando personalizado rm en lugar del comando rm predeterminado del sistema.

  1. Crea un nuevo directorio para almacenar el comando personalizado rm:
sudo mkdir -p /usr/local/custom/bin
  1. Edita el archivo /etc/environment:
sudo vim /etc/environment
  1. Agrega el directorio /usr/local/custom/bin al principio de la variable 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. Guarda el archivo y sale del editor.
  2. Sincroniza el archivo /etc/environment para actualizar el entorno de la shell actual:
source /etc/environment
sudo chmod a+x /usr/local/custom/bin

Ahora, se utilizará el comando personalizado rm en lugar del comando rm predeterminado del sistema.

Crear el comando personalizado rm

En este paso, crearás un comando personalizado rm que moverá los archivos eliminados al directorio /tmp/trash en lugar de eliminarlos permanentemente.

  1. Crea el script del comando personalizado rm:
sudo vim /usr/local/custom/bin/rm

Agrega el siguiente contenido al archivo:

#!/bin/zsh

## Este script se utiliza para mover archivos o directorios al directorio de papelera en lugar de eliminarlos permanentemente.
## Si se utiliza la opción -f, los objetivos se moverán al directorio de papelera.
## Si los objetivos no existen, se mostrará un mensaje de error.

TRASH_DIR="/tmp/trash"

if [[ "$1" == "-f" ]]; then
  shift
  for arg in "$@"; do
    ## Verifica si el objetivo existe
    if [[ -e "$arg" ]]; then
      ## Mueve el objetivo al directorio de papelera
      mv -f "$arg" "$TRASH_DIR"
    else
      echo "Error: $arg no existe."
    fi
  done
else
  ## Ejecuta el comando rm original
  /bin/rm "$@"
fi
  1. Establece los permisos adecuados para el script del comando personalizado rm:
sudo chown root:root /usr/local/custom/bin/rm
sudo chmod 755 /usr/local/custom/bin/rm

Probar el comando personalizado rm

En este paso, probarás el comando personalizado rm -f para asegurarte de que funcione como se espera.

  1. Crea un archivo de prueba en el directorio /home/labex/project:
touch /home/labex/project/trash_file.md
  1. Utiliza el comando personalizado rm -f para eliminar el archivo de prueba:
rm -f /home/labex/project/trash_file.md
  1. Verifica que el archivo se haya movido al directorio /tmp/trash:
ls -l /tmp/trash

Deberías ver el archivo trash_file.md listado en la salida.

total 2.0K
-rw-r--r-- 1 labex labex 8 Oct 26 17:47 trash_file.md

¡Felicidades! Has implementado con éxito el comando personalizado rm que mueve los archivos eliminados al directorio /tmp/trash en lugar de eliminarlos permanentemente.

✨ Revisar Solución y Practicar

Resumen

¡Felicidades! Has completado este proyecto. Puedes practicar más laboratorios en LabEx para mejorar tus habilidades.