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 šŸ˜€


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