27 febrero 2008

Consejos para usuarios de UNIX

Esta entrada es para todos aquellos usuarios que tienen que sentarse alguna vez delante de la consola de algún sistema operativo de la familia UNIX. Y para todos aquellos que no lo han hecho nunca para que se den cuenta porque encontramos tantas diferencias y preferimos un UNIX a otros sistemas operativos.

Truco 1: Creación de árboles de directorio
En vez de ir directorio a directorio e ir creando cada uno de los que necesitamos, el comando mkdir (encargado de crear directorios) tiene varias posibilidades para acelerar este trabajo.
Con la primera diremos que nos cree todo el árbol de una vez:
~ $ mkdir -p tmp/a/b/c
La segunda nos sirve para cuando el árbol tiene varias ramas y la forma anterior se nos queda un poco corta. Lo podremos solucionar de esta forma:
~ $ mkdir -p project/{lib/ext,bin,src,doc/{html,info,pdf},demo/stat/a}
De esta forma indicaremos de una sola vez toda la estructura ahorrándonos unos cuantos minutos cambiando de directorios.

Truco 2: No muevas más archivos de los necesarios
Si para descomprimir un archivo tar o tgz primero lo mueves al directorio donde quieras que se extraiga este truco te vendrá genial. Porque en realidad no hace falta hacerlo. Puedes indicarle dónde quieres que se extraiga de esta sencilla forma:
~ $ tar xvf -C tmp/a/b/c nuevoarc.tar.gz

Truco 3: Ejecutar un comando solo si otro se ha ejecutado correctamente
En UNIX por norma cuando los comandos o programas finalizan correctamente devuelven 0. Teniendo esto en cuenta se creó el operador &&. Este ejecuta el comando que le sigue solo si el anterior a devuelvo 0. Como en este ejemplo:
~ $ cd tmp/a/b/c && tar xvf ~/archivo.tar
Esta instrucción extraerá el archivo solo si el directorio indicado existe.

Truco 4: Ejecutar un comando solo si otro comando no se ha ejecutado correctamente
El operador || hace justamente lo contrario al anterior:
~ $ cd tmp/a/b/c || mkdir -p tmp/a/b/c
En este ejemplo se crearía el directorio si no existiese previamente.

Uniendo los dos trucos anteriores podría hacerse un comando como este:
~ $ cd tmp/a/b/c || mkdir -p tmp/a/b/c && tar xvf -C tmp/a/b/c ~/archivo.tar
Si el directorio no existe lo crearía. Y si la creación no ha dado ningún error o si el directorio ya existía descomprimiría el archivo.

Truco 5: Hay que tener cuidado con las comillas
El hecho de la misma potencia de la consola de UNIX hace que haya que tener cuidado con lo que se pone. Como la consola expande automáticamente las variables es conveniente encerrarlas siempre dentro de comillas a menos que se sepa bien lo que se quiere hacer. Fijaros bien en este ejemplo:
~ $ ls
tmp/a b
~ $ VAR="tmp/*"
~ $ echo $VAR
tmp/a tmp/b
~ $ echo "$VAR"
tmp/*
~ $ echo $VARa

~ $ echo "$VARa"

~ $ echo "${VAR}a"
tmp/*a
~ $ echo ${VAR}a
tmp/a


Truco 6: Ejecutar una lista de comandos en una subconsola
Si necesitas ejecutar una serie de instrucciones que debe modificar una variable de entorno pero preferirías que no lo hiciese siempre puedes ejecutar esas instrucciones en una subconsola. La consola actual creará un nuevo proceso, ejecutará los comandos que le dices en ella y devolverá la salida para que la proceses:
~ $ ( cd tmp/a/b/c/ || mkdir -p tmp/a/b/c && \
> VAR=$PWD; cd ~; tar xvf -C $VAR archivo.tar ) \
> | mailx admin -S "Contenido del archivo"

En este ejemplo se extraerá el archivo a la carpeta indicada y la salida de los comandos (incluyendo los archivos extraídos) se mandará al administrador de la máquina.

Página original y algunos trucos más avanzados

No hay comentarios:

Publicar un comentario