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/trashpara almacenar temporalmente los archivos eliminados - Cómo crear un script de comando personalizado
rmque mueva los archivos eliminados al directorio de papelera - Cómo actualizar la variable de entorno
PATHpara usar el comando personalizadorm - Cómo probar el comando personalizado
rm -fpara 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
rmcon 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
Configurar el directorio de papelera
En este paso, aprenderás a configurar el directorio /tmp/trash para almacenar temporalmente los archivos eliminados.
- Abra una terminal.
- Cree el directorio
/tmp/trashy 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.
- Crea un nuevo directorio para almacenar el comando personalizado
rm:
sudo mkdir -p /usr/local/custom/bin
- Edita el archivo
/etc/environment:
sudo vim /etc/environment
- Agrega el directorio
/usr/local/custom/binal principio de la variablePATH:
PATH="/usr/local/custom/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin"
- Guarda el archivo y sale del editor.
- Sincroniza el archivo
/etc/environmentpara 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 rm personalizado
En este paso, crearás un comando personalizado rm que moverá los archivos eliminados al directorio /tmp/trash en lugar de eliminarlos permanentemente.
- 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
- 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 rm personalizado
En este paso, probarás el comando personalizado rm -f para asegurarte de que funcione como se espera.
- Crea un archivo de prueba en el directorio
/home/labex/project:
touch /home/labex/project/trash_file.md
- Utiliza el comando personalizado
rm -fpara eliminar el archivo de prueba:
rm -f /home/labex/project/trash_file.md
- 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.
Resumen
¡Felicidades! Has completado este proyecto. Puedes practicar más laboratorios en LabEx para mejorar tus habilidades.



