Añadir Papelera de Reciclaje al Terminal

24
4987

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

  1. !!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

      • 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…

    • 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.

    • 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

  2. 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”.

    • 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!

  3. 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!

  4. 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.

    • 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

  5. 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?

  6. 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.

    • 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

Dejar una respuesta