viernes, 13 de febrero de 2009

Guiones para HAL

Pertrechados de un buen editor de textos, ésa reciente incorporación a la poblada progenie de ayudantes de HAL, no sólo vamos a apaciguar y flexibilizar nuestro fecundo diálogo con él, sino que vamos a poder realizar tareas hasta ahora insospechadas, como se verá en próximos artículos.

Por lo pronto, nos dedicaremos a escribir nuestras órdenes complejas en ficheros de texto y hacer que HAL las lea de ahí y las interprete como debe. En una palabra, vamos a prepararle fabulosos guiones (scripts) que él ejecutará con la precisión y eficacia del más conspicuo de los actores.

En primer lugar le pediremos a HAL que construya (make) bajo nuestro home un espacio específico, un directorio, donde guardar nuestros papeles, que si no, acabarán tachándonos de impenitentes desorganizados:

mkdir guiones

En segundo lugar, cambiamos de directorio (change directory), esto es, de lugar de trabajo y nos introducimos en el directorio recién creado, que es donde van a residir nuestros guiones:

cd guiones

¿Qué tal este gratificante retorno a las órdenes simples? Volveremos a ellas otro día.

Bien, ya estamos donde debemos, como podríamos confirmar si ejecutásemos pwd. Pero no vamos a ejecutarlo ahora. En lugar de ello, vamos a escribir un guión con esa orden básica y, de paso, poner a prueba a nuestro flamante editor:

nano prueba

O, si se instaló, por ejemplo, Vim, y se aprendió minímamente a usarlo:

vim prueba

El resultado de estas últimas órdenes es que nos abre un espacio de trabajo con la interfaz del editor correspondiente (nano o Vim), un espacio donde poder escribir y editar nuestro fichero prueba.

Nótese lo que acaba de suceder. Por primera vez en nuestras aventuras con HAL dejamos de ver la omnipresente línea de órdenes, esa mínima interfaz en que el diálogo acontecía, y nos encontramos con otra cosa, con otra interfaz diferente que ocupa el terminal completo y donde se espera que escribamos lo que queremos.

Por tanto, en el entorno de la consola podemos encontrarnos con varias interfaces, varios sistemas posibles de comunicación e interacción con HAL. La línea de órdenes es la primera y universal, la que hemos estado usando todo este tiempo. Pero puede haber otras, como ésta que el editor nos presenta tras haber sido convocado desde la línea de órdenes.

En este tipo de situaciones, cuando la interfaz propia de un determinado ayudante de HAL se adueña de la pantalla tras haberlo llamado desde la línea de órdenes, podemos, siempre que queramos, retornar a esa línea con Ctrl+Z [ya se sabe, hay pulsar las dos teclas a la vez]. Hagámoslo ahora.

Ahí está de nuevo nuestra querida línea de órdenes, pero precedida por un par de mensajes nunca antes vistos:

Use "fg" para volver a nano

[1]+ Stopped nano prueba

¿Dónde han quedado ahora nano y su interfaz? Parece que, según estos mensajes, no se han volatilizado, sino que están detenidos en algún lugar, apartados en algún trasfondo (background) invisible.

Tenemos que continuar nuestro trabajo pendiente (job) y dejarnos de mandangas. ¿Qué hay de mi trabajo, HAL?:

jobs

Y HAL nos vuelve a responder con el primero de los dos mensajes anteriores:

[1]+  Stopped                 nano prueba


Lo que significa que nuestro nano prueba está detenido en el trasfondo o contraplano y que su número de trabajo pendiente es el 1.

Sigamos el consejo del primero de los mensajes citados y hagamos que nano vuelva a ocupar el primer plano (foreground) de la escena:

fg

Aquí está de nuevo. Curiosa esta forma de conmutar el primer plano por el contraplano. Si el lector siente curiosidad puede seguir jugando por su cuenta con este sistema de conmutación, puede, por ejemplo, convocar otro nano mientras el anterior está en el transfondo y enviar también este nuevo nano al trasfondo. Se encontrará entonces con dos trabajos pendientes y tendrá que especificar su número (por ejemplo, fg 2) para volver a situar uno determinado en el primer plano.

Finalizadas las experimentaciones con los enfoques de cámara, volvamos a nuestro editor y escribamos ahí la orden que teníamos en mente: escribamos simplemente pwd. Salgamos del editor y guardemos los cambios. Acabamos de crear un nuevo fichero, el fichero llamado prueba que contiene escrita la orden pwd.

Si el lector es tan escéptico como Santo Tomás y tiene que ver para creer, puede cerciorarse del resultado, con un simple

ls

Que le mostrará un simple

prueba

Y si sigue sin creer, podrá ver el contenido del fichero con

more prueba

Que, no sin cierta sorpresa suya y como testimonio de su recalcitrante y reprobable incredulidad, le dirá la única línea que ese fichero contiene:

pwd

Obviamente, este Tomás es, aparte de incrédulo, un tanto lerdo, porque podía haber evitado el doble paso con una elemental sustitución de órdenes:

more $(ls)

A continuación tendremos que arreglárnoslas para que HAL interprete el papel recién creado, es decir, para que lea el guión que le hemos procurado y ejecute la orden escrita en su interior. Eso es asunto del próximo artículo.

Resumen:

  • La orden mkdir (make directory) permite crear directorios.

  • La orden cd (change directory) sirve para cambiar de directorio.

  • Un usuario de consola puede encontrarse con varias interfaces posibles. La línea de órdenes es la interfaz común y universal. Ciertos programas pueden proporcionar también interfaces diferentes dentro de la propia consola.

  • Un programa en ejecución puede ser detenido y enviado al trasfondo (background) desde la línea de órdenes con la combinación de teclas 'Ctrl+Z'. En ese momento dicho proceso se convierte en un trabajo pendiente (job).

  • La orden jobs nos devuelve los trabajos pendientes activos que hay en la actualidad, a cada trabajo se le asocia un número determinado.

  • La orden fg (foreground) permite traer al primer plano el programa que en el trasfondo posee el número de trabajo que se da a fg como argumento. fg sin argumento devuelve al primer plano el primer trabajo en el trasfondo.

No hay comentarios:

Publicar un comentario