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
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'
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:
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
Espero haber abarcado todo.
Saludos 😀
24 comentarios, deja el tuyo
Interesante artículo, se me han ocurrido hacer un par de cosas después de leerlo. Gracias por el aporte 😉
Gracias a ustedes por la oportunidad de escribir aca!
Necesitaras compartir esas ideas 🙂
!!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
Exactamente, eso mismo pensé. Normalmente la papelera se encuentra en ~/.local/share/Trash
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
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!
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!
Que bueno que te sirva! Muchas gracias
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
Muy chulo el esquema con colores para explicar los campos del fichero crontab.
https://blog.desdelinux.net/tag/crontab/ 😉
Si! cortesía de elav! 😀
Lindo hack! Conocías este proyecto? https://github.com/andreafrancia/trash-cli
Si, es una buena alternativa!
Para que sirve?
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?
Si! Por supuesto. Gracias 😀
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