Añadir Papelera de Reciclaje al Terminal

rm

El uso del comando rm acarrea ciertos peligros, puesto que, si cometemos un error no hay forma de recuperar lo que hemos borrado. Sin embargo, a través del uso de alias y la ayuda de cron podemos hacer un par de mejoras y evitarnos un dolor de cabeza.

Excelente! ¿Qué debemos hacer?

Bash soporta alias de órdenes, usados para crear abreviaciones o nombres alternativos para ordenes actuales. Podemos usar la orden alias para ver los que están definidos.

Para definir un nuevo alias se utiliza la siguiente sintaxis:

alias comando personalizado='comando real'

por ejemplo:

$ alias lista='ls -l'
$ lista
total 3
drwxr-xr-x 2 usuario grupo 4096 may 15 13:12 Documentos
drwxr-xr-x 2 usuario grupo 4096 may 12 11:05 Descargas
drwxr-xr-x 2 usuario grupo 4096 may 15 05:47 Escritorio
Al ejecutar una orden, la shell busca primero en los alias y luego en la variable de entorno PATH

Lo primero que debemos hacer es crear un directorio que nos sirva para almacenar los archivos que eliminaremos

mkdir $HOME/Papelera

El siguiente paso es crear un alias para la orden rm que mueva lo que deseamos eliminar al directorio Papelera

alias rm='mv -t $HOME/Papelera'

La opción -t en el comando anterior hace que el resto de los argumento se muevan al directorio especificado
Si deseamos que el alias esté disponible para futuras sesiones bash debemos añadirlo en el $HOME/.bashrc

Ahora, cada vez que ejecutamos rm, en vez de eliminar, enviaremos el archivo al directorio Papelera

Eliminando la papelera de forma automática

Muchas veces, para liberar espacio en disco, eliminamos archivos. Es necesario hacer que cada cierto tiempo se borre por completo el contenido de la papelera para no llenar nuestro disco duro. Para tal fin usaremos cron

Cron es un demonio utilizado para ejecutar tareas de forma automática en determinado periodo de tiempo. Su sintaxis es la siguiente:

Chuleta_Cron

Existe /etc/crontab (general del sistema, incluye un apartado para añadir el usuario que ejecuta) y /var/spool/cron/crontabs/usuario (uno por cada usuario)

El comando crontab -e permite añadir (mediante un editor de textos como nano o vi) una entrada nueva. Nuestra línea quedará de la siguiente forma:

# h m dom mon dow comando

00 12 * * 5 /bin/rm $HOME/Papelera/*

La linea de cron anterior eliminará la papelera todos los viernes a las 12 del medio día

Se utiliza la ruta absoluta de rm puesto que este ahora es un alias

Espero haber abarcado todo.

Saludos 😀


24 comentarios, deja el tuyo

Deja tu comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

  1. Responsable de los datos: Miguel Ángel Gatón
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.

  1.   elav dijo

    Interesante artículo, se me han ocurrido hacer un par de cosas después de leerlo. Gracias por el aporte 😉

    1.    SusanoLinux dijo

      Gracias a ustedes por la oportunidad de escribir aca!

    2.    unsli dijo

      Necesitaras compartir esas ideas 🙂

  2.   Dan dijo

    !!Muy buena idea!!
    Aunque estaba leyendo y he pensado que al crear el alias quizá sería más práctico mover los archivos al directorio de la papelera que ya existe en el entorno gráfico (a menos que haya algo que lo impida).
    Ahora no estoy en casa pero creo está dentro de ~/.local/ o en algún otro directorio oculto dentro de la carpeta personal.
    De este modo cuando se abra la papelera en el navegador de archivos también se verán los archivos eliminados desde la línea de comandos.

    Saludos

    1.    elav dijo

      Exactamente, eso mismo pensé. Normalmente la papelera se encuentra en ~/.local/share/Trash

      1.    interesado dijo

        Me da que no puedes usarla asi de facil… Cuando un entorno de escritorio manda algo a la papelera, lo hace de una manera determinada, con sus metadatos y tal (no tengo claro como lo hace, pero lo tengo visto al listar el contenido de ese directorio)… Para eso mejor usar trash-cli…

    2.    Dan dijo

      Pues vaya, porque es una solución que a la vez de sencilla es elegante.
      Estaría bien saber como lo hace trash_cli, pero de momento esta solución me gusta.

    3.    SusanoLinux dijo

      Gracias Dan. Pense en esta solucion porque a nivel de servidores no tienes el $HOME/.local/Trash asi que decidi crear un nuevo directorio. 😀 Saludos

  3.   interesado dijo

    Interesante idea.

    Pero me suena que ya hay cosas similares. En Debian yo tengo probado el paquete trash-cli (mas info: https://github.com/andreafrancia/trash-cli) que viene ha hacer lo mismo, pero usando la papelera de los sistemas de escritorio (gnome, kde, xfce…). Posiblemente sea mejor solución, porque de esta forma «todo esta junto en el mismo sitio».

    1.    SusanoLinux dijo

      Si, puede que con trash-cli sea mejor para entornos de escritorio, sin embargo pense esta publicacion para distros servers donde no tienes un $HOME/.local/Trash. Gracias por comentar!

  4.   Bray dijo

    Un articulo muy interesante.

    En mi caso, soy nueva en todo lo que es el Software Libre. Sin embargo, he tenido mis encuentros con la consola. De modo tal que puedo poner en practica lo que comenta este articulo y evitar perder datos cada vez que uso rm

    Go ahead!

    1.    SusanoLinux dijo

      Que bueno que te sirva! Muchas gracias

  5.   Note dijo

    Reinventado la rueda otra vez… ¿Qué pasa cuando borramos dos archivos con el mismo nombre?
    Me quedo con trash-cli que funciona muy bien. Incluso en servidores.

    1.    SusanoLinux dijo

      Aprecio tu opinión Note pero eso de reinventar la rueda no aplica en Software Libre. Usualmente existen al menos un par de alternativas para solucionar los problemas. Si quiero un servicio de dns, por ejemplo, puedo descargar dnsmasq, dns bind o trabajar local con el /etc/hosts.
      Puede ocurrir que en alguna distro no exista trash-cli o que simplemente no me funcione como esperaba. Para ese tipo de problemas fue ideado este post.
      Saludos

  6.   MariadeLaO dijo

    Muy chulo el esquema con colores para explicar los campos del fichero crontab.

    1.    SusanoLinux dijo

      Si! cortesía de elav! 😀

  7.   msx dijo

    Lindo hack! Conocías este proyecto? https://github.com/andreafrancia/trash-cli

    1.    SusanoLinux dijo

      Si, es una buena alternativa!

    2.    unsli dijo

      Para que sirve?

  8.   robotito dijo

    En la linea «00 12 * * 5 /bin/rm $HOME/Papelera/*» ¿el rm no tendria que llevar la opcion -r para eliminar tambien los directorios de la papelera?

    1.    SusanoLinux dijo

      Si! Por supuesto. Gracias 😀

  9.   rlsalgueiro dijo

    interesante el tema, yo no elimino nada de lo que no este seguro,pero lo que mas me gusto de todo fue el png de la chuleta del cron, mira que yo se lo he explicado a algunos discípulos que tengo y hasta ahora ninguno había interiorizado como funcionaba, bueno a decir verdad la mayoría se lo han guardado diciendo finalmente no me lo tengo que aprender.

    1.    SusanoLinux dijo

      Los mismo le digo a mis alumnos, es mejor leer dos veces y ejecutar una vez. Sin embargo, somos humanos y por descuido podemos eliminar algún archivo importante. Que bueno que sea de tu agrado el post. Saludos