cyb3rpunk

Recuperar archivos eliminados con «rm» es posible, a veces.

Posted in Comandos, Consola, Tips by ramonovski on abril 20, 2011

Eliminar un archivo con un típico «rm archivo» en los inicios de una persona en entornos Unix es más común que hacer un ls en la terminal de windows. Cuando sea el caso y eliminemos sin querer un archivo con el comando rm es posible recuperarlo siempre y cuando exista un proceso en ejecución que involucre al archivo eliminado.

 
Un caso hipotético.

Lanzo el navegador Opera mediante un script llamado oopera.sh, el navegador sigue abierto y por accidente he eliminado el archivo:

rm Scripts/oopera.sh

 
Lo primero que hay que hacer es listar los procesos del sistema y comprobar que el archivo que hemos eliminado se encuentre ahí:

ps -A | grep -i opera
PID TTY TIME CMD
4092 ? 00:00:00 oopera.sh
4093 ? 00:11:35 opera
4219 ? 00:00:00 operapluginclean
12369 ? 00:00:02 operapluginwrap

 

En el directorio /proc están listados y organizados los procesos del Sistema
El subdirectorio /proc/NumeroDelPID/fd/ contiene (entre otras cosas) un enlace simbólico de cada archivo, proceso, socket, directorio activo en el Sistema.
fd = file descriptor

 

Teniendo el PID (Identificador del Proceso) del archivo se comprueba el estado del archivo y al mismo tiempo el nombre del enlace simbólico:

ls -l /proc/4092/fd/* | grep oopera.sh
lr-x------ 1 ramonoid ramonoid 64 Apr 20 13:57 /proc/4092/fd/255 -> /home/ramonoid/Scripts/oopera.sh (deleted)

Estado: (deleted)
Enlace: 255

 
Y ya localizado el enlace, lo único que queda es hacer la restauración con un simple cp:

cp /proc/4092/fd/255 $HOME/Scripts/oopera.sh

 
:wq

Tagged with: , , ,

Mejorando el desempeño con el comando «cd» o cómo hacernos más flojos en la terminal [1]

Posted in GNU/Linux, linux, Tips by ramonovski on abril 4, 2011

Existen una gran cantidad de sencillos tips para los sistemas basados en UNIX (GNU/Linux, *BSD, Solaris, etc…) que nos facilitará la vida a los que usamos la terminal, en especial a quienes usamos las coreutils en reemplazo de algún file manager. Si bien son prescindibles para el desempeño en la terminal, son de gran utilidad si se quiere ser un poco más ágil y evitarse teclear menos para tareas básicas.

En este post, mencionaré algunos básicos para movernos a lo largo del árbol de directorios *nix.

 

1. La variable de entorno $CDPATH

Se trata de una variable que nos permite tratar directorios como si estuvieramos todo el tiempo situados en ellos, esto nos ahorraría el trabajo de teclear una ruta completa.

Por ejemplo, en vez de teclear:

cd /home/usuario/Documentos/Escuela/Tareas/Contabilidad\ Financiera/

Si agregamos «/home/usuario/Documentos/Escuela/Tareas/» a la variable CDPATH, podriamos solamente escribir:

cd Contabilidad\ Financiera/

Para definirla, simplemente se agrega la variable «CDPATH» con los directorios separados por «:»  al archivo de configuración de la shell que se esté utilizando (.zshrc .bashrc .kshrc etc…), por ejemplo:

export CDPATH="/usr/local/share/:$HOME/Documentos/"

En caso de que existan dos directorios con el mismo nombre, uno en /usr/local/share/ y otro en /home/usuario/Documentos, cd recorre en orden de izquierda a derecha los directorios en la variable CDPATH, por lo que reconocerá primero el directorio que se encuentre en /usr/local/share/ y se cambiará a ese.

 

2. El caracter «~»

Este caracter es el equivalente a /home/usuario/, por lo que tecleando un simple «cd ~» podriamos situarnos en nuestro $HOME desde cualquier otro directorio.

O tambien copiar un archivo a nuestro home desde /usr/share/app1/ tecleando:

cp archivo1 ~

Otra utilidad podría ser listar lo que tenemos en nuestro $HOME:

ls ~usuario

 

3. Zsh y el autocd

Existe una simple opción para Zsh llamada «auto_cd». La utilidad de esta opción es que se puede omitir la palabra «cd» para cambiarse a un directorio (así o más flojo).

Simplemente hay que agregar «setopt auto_cd» al .zshrc

El autocompletado y el pushd y popd son otras genialidades que deberían estar en la lista, ya lo explicaré después… tal vez.

:wq

Tagged with: , , ,

Filosofía Unix

Posted in Citas, Informatica by ramonovski on abril 11, 2010

Write programs that do one thing and do it well. Write programs to work together. Write programs to handle text streams, because that is a universal interface. Doug McIlroy

:wq

Tagged with: ,