martes, 12 de marzo de 2013

Mandar archivo a papelera de reciclaje con consola Linux/Unix

Bueno,no se si les ha pasado que cuando queremos borrar un archivo y lo hacemos desde terminal,luego ya no lo podemos recuperar, algunas ocasiones se quedan los archivos de backup,aquellos que tienen el símbolo (~),pero otras veces no podemos recuperar el archivo :(,en mi caso yo hice una tonteria,muy grande :

Estaba programando un programa(valga la redundancia) en C++ con el cual el makefile podía usar prefix,y estaba usando bin,pero hice algo mal y se creo un directorio bin adentro de /bin el cual traía los archivos,asi que los borre,con rm -rf (como root) luego en un mal pensamiento en vez de hacer exit o cd ~, cambie a / (cd ..) pero se me fue el dedo y 

rm -rf bin 
De nuevo y esta vez no borrro el bin que creo el makefile,sino que el bin del sistema

:O

Así que adiós /bin de Gentoo :(

Y como saben /bin contiene archivos muy importantes,existen formas de recuperar los datos,pero las herramientas que se usan estan en /bin, también al reiniciar se perdía definitivamente y no pude entrar por ssh,y ya era noche así que mejor decidi apagar y reinstalar otro dia,de todas formas ya tenia mucha basura en gentoo y no habia actualizado el kernel,asi que mejor a reinstalar :D.

El hecho es que el comando rm es muy peligroso y se me ocurrió que en vez de eliminar definitivamente,moverlo al trash para poder recuperar el contenido.


Esto se puede hacer de muchas formas:

Fácil ,solo crear un alias que cambie rm por mv:

alias rm="mv -t ~/.local/share/Trash/files --backup=t" 

Esto nos mueve lo que sea archivo/carpeta a la papelera de reciclaje(podemos cambiar el destino) y crea un backup por si ya hemos movido alguno de nombre similar.

Asi que para usar este comando solo hacemos esto:

echo 'alias rm="mv -t ~/.local/share/Trash/files --backup=t"' >> ~/.bashrc && source ~/.bashrc

Ahora al hacer,(por ejemplo yo):

rm /bin

Lo mueve a la papelera y lo puedo mover desde otra partición de nuevo.

Pero hay dos cosas:

Lo bueno : Como cambia rm si se nos va el dedo nos movera el archivo a la papelera.

Lo malo : Que al querer vaciar la papelera o lo hacemos desde un explorador de archivos(nautilus,etc) o tenemos que hacer un unalias:

unalias rm

Para poder usar rm de nuevo y hacer,por ejemplo

rm -rf trash/*
Pero al terminar tendríamos que hacer nuevamente


echo 'alias rm="mv -t ~/.local/share/Trash/files --backup=t"' >> ~/.bashrc && source ~/.bashrc
Así que esa es una opción:

Otra opción:

La misma pero con otro nombre,en vez de cambiar el comando rm,podemos usar delete por ejemplo:

echo 'alias delete="mv -t ~/.local/share/Trash/files --backup=t"' >> ~/.bashrc && source ~/.bashrc
Lo malo : Es que si tecleamos rm,pasara lo mismo(se ejecutara),tendremos que aprender a usar este alias

Lo bueno : Que podremos vaciar la papelera desde terminal y no tendremos que asignar de nuevo un alias.

Otra opción:

Crear un script:

Enlace

Lo metemos en una carpeta,la que queramos de nuestro Home o en /usr/bin con permisos de ejecución:

Por ejemplo oculto en nuestro home quedaria en esta ruta:

~/.script.sh

Le damos permisos de ejecucion:

chmod +x ~/.script.sh

Creamos un alias,por ejemplo:

echo 'alias rm="bash ~/.script.sh"' >> ~/.bashrc && source ~/.bashrc

Y al hacer rm,se ejecutara el script que programe:





También funciona con carpetas y con wildcards como se vio en la imagen,hiba a implementar vaciar papelera,pero se me podía ir el dedo de nuevo :P

Lo deje comentado para que lo modifiquen a sus necesidades,otra cosa es que hay mas maneras de hacer esto,pero a mi me gusta programar lo que uso,y bueno si conocen mas comenten :D

3 comentarios:

  1. Jajaja borraste /bin ya tengo con que molestarte, apuesto a que esta fue tu reacción despues de haberlo borrado XD pero esta mal lo que cuentas; si hiciste rm -rf /bin no era rm -rf bin,ya que desde el primer rm -rf /bin se hubiera borrado /bin y no /bin/bin

    ResponderBorrar
    Respuestas
    1. XDD si algo asi XDD,me equivoque en el texto citado fu:

      rm .rf bin

      como dices para que se borre la carpeta del directorio en donde esta uno,pero no te creas prima ya te veo borrando el /bin de tu ipadcilla XDDD y ahí quien sabe que pase :O

      Borrar
    2. Me equivoque de nuevo :S

      fue:

      rm -rf bin

      Ya lo edite :D

      Borrar

Los comentarios serán revisados antes de ser publicados.