Buenos hábitos al usar la terminal

Es muy recomendable la lectura del artículo original, es verdaderamente interesante:

  1. Crea directorios en una sola línea
  2. Cambia el path y no muevas archivos
  3. Combina los comandos utilizando operadores de control
  4. Usa secuencias de escape con entradas largas
  5. Agrupa tus comandos en una lista

Crea directorios en una sola línea

Este primero es muy útil, en lugar de hacer esta operación:

~ $ mkdir tmp
~ $ cd tmp
~/tmp $ mkdir a
~/tmp $ cd a
~/tmp/a $ mkdir b
~/tmp/a $ cd b
~/tmp/a/b/ $ mkdir c
~/tmp/a/b/ $ cd c
~/tmp/a/b/c $

es mucho más cómodo escribir la estructura de directorios de un solo plumazo. Simplemente es necesario utilizar la opción “-p”

~ $ mkdir -p tmp/a/b/c

Otro ejemplo de uso es el siguiente:

mkdir -p project/{lib/ext,bin,src,doc/{html,info,pdf},demo/stat/a}

Cuando lo he probado, me he quedado fascinado de la potencia de esta opción, simplemente con añadir -p, y en una sola línea de comando.

 

Cambia el path y no muevas archivos

El siguiente buen hábito es similar al anterior, simplemente se trata de utilizar una opción en “tar”, es decir:

en lugar de hacer:

mv newarc.tar.gz tmp/a/b/c/
cd tmp/a/b/c
tar xvf newarc.tar.gz

Simplemente añadiendo -C, tenemos en una sola línea todo el trabajo realizado.

tar xvf -C tmp/a/b/c newarc.tar.gz

 

Combina los comandos utilizando operadores de control

Usa el operador && para combinar dos comandos de forma que el segundo sólo se ejecuta si el primero retorna cero, es decir, si el primer comando se ejecuta correctamente, el segundo también se ejecuta, de lo contrario, el segundo no se ejecutará, por ejemplo:

cd tmp/a/b/c && tar xvf archive.tar

En este ejemplo, el contenido del archibo es extraído a ~/tmp/a/b/c directory siempre y cuando el directorio exista, de no existir no se extrae.

La verdad, es que tienes que pensar un poquito para correr una línea de comando, pero es muy útil.

Otra opción es “||”, es decir, “Or”. En este caso es al revés si, si el primer comando no se ejecuta, entonces se ejecuta el segundo. Por ejemplo:

cd tmp/a/b/c || mkdir -p tmp/a/b/c

En este caso, si no te puedes cambiar al directorio por que no existe, entonces lo creas. Magnífico.

Ahora ya lo combinas todo:

cd tmp/a/b/c || mkdir -p tmp/a/b/c && tar xvf -C tmp/a/b/c ~/archive.tar

Es decir: si no te puedes cambiar al directorio lo creas y entonces extraes el archivo. No es fácil, a la primera, pero habrá que practicar. Mira lo que puedes hacer en una solo línea.

 

Usa secuencias de escape con entradas largas

Mira que molesta cuando ves una línea en el terminal que se sale de tu campo de visión del terminal. Bueno, con este hábito, este problema se soluciona, simplemente tienes que utilizar la contrabarra (ella también tiene derecho), por ejemplo:

~ $ cd tmp/a/b/c || 
> mkdir -p tmp/a/b/c &&
> tar xvf -C tmp/a/b/c ~/archive.tar

De esta simple manera queda mucho más despejado y sencillo.

 

Agrupa tus comandos en una lista

Simplemente se trata de agrupar, encerrando entre paréntesis, los comandos que quieres utilizar, de forma que la salida se pueda redirigir a otro comando, como puede ser en el caso del siguiente ejemplo:

$ ( cd tmp/a/b/c/ || mkdir -p tmp/a/b/c && 
> VAR=$PWD; cd ~; tar xvf -C $VAR archive.tar )
> | mailx admin -S "Archive contents"

En el ejemplo, el contenido del archivo se extrae en el directorio tmp/a/b/c/, de forma que la salida de la agrupación de comandos, incluyendo yna lista de los archivos extraidos es enviada vía email a la dirección del administrador.

El uso de este tipo de agrupaciones es preferible en aquellos casos en los que defines variables en tu lista de comandos y no quieres que se apliquen a todo el shell.

 

Nota:

La verdad es que una vez leído el artículo, no te sale de forma gratuita aplicar este conjunto de “buenos” hábitos, sino que se trata de un ejercicio de práctica, hasta que fluyen sin esfuerzo alguno (frase típica de Karate Kid, o similar). Así que a practicar.

 

el Atareao

Publicado en Sistemas

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*