2 dic 2010

Shell

Ahora les tengo mi código en Shell, este script es un menú que nos muestra varias opciones de cosas que podemos ejecutar desde el Terminal. Las opciones que nos muestra son para abrir el navegador Firefox, abrir Emacs, ya sea en una ventana independiente o en el mismo terminal, abrir gedit y también incluí el programa en AWK de una de las entradas anteriores, este que convierte HTML.

El código es el siguiente:
#!/bin/sh

echo "Escribe el número de tu selección:"
echo "1) Abrir Firefox"
echo "2) Abrir Emacs"
echo "3) Abrir Emacs en el Terminal"
echo "4) Abrir Gedit"
echo "5) De HTML a HTML"
read opc

case $opc in
1)
 firefox &;;
2)
 emacs &;;
3)
 emacs -nw;;
4)
 gedit &;;
5)
 echo "Archivo a convertir:"
 read arch1
 echo "Nombre del nuevo archivo:"
 read arch2
 awk -f ~/Documents/Programs/convierte.awk $arch1 > $arch2;;
*)
 echo "Opción no válida";;
esac
Lo que hace es que al ser ejecutado el script te muestra el menú con las opciones indicadas, y espera a que ingreses el número de tu selección. Después de dar enter se realiza la instrucción escrita según la opción seleccionada. El último asterisco se usa para una entrada no definida, y muestra un mensaje de error.

En la imagen les muestro como se ejecuta el script en el terminal y como se verá nuestro menú:


Ahora si elegimos la opción 1, que es abrir el navegador web Firefox, pasaría los siguiente en nuestro escritorio:


Cabe notar que nuestro terminal puede seguir usándose para otras cosas, aunque el proceso del navegador este activo, ya que agregué un amperson "&" al final de la instrucción.

Agregar nuestro menú como comando

Como el archivo lo tenemos solo en una carpeta, solo podrá ser ejecutado desde esa carpeta, o sino escribiendo toda la dirección del archivo. Es decir, que si yo me encuentro en una carpeta diferente como Pictures, tendría que indicar donde esta localizado el script para poder ejecutarlo. Esto no es lo mejor, y queremos tener este menú disponible en cualquier carpeta. También sería buena idea colocar un alias para ejecutar de una forma más simple este script.

Veamos como realizar esto...

1) Primero vamos a copiar el archivo menu.sh a la carpeta del usuario.

Nota: El nombre del archivo copiado le puse un punto (.) al inicio para que sea un archivo oculto y que no sea visible entre las carpetas del usuario y no vaya a ser borrado accidentalmente.

2) Regresaré a la carpeta principal del usuario.

Enseguida de eso muestro el listado de archivos, incluyendo los ocultos para que vean que el archivo ya fue copiado a esa carpeta.

También se muestra en color verde porque tiene permiso de ser ejecutado por todos los usuarios de esta computadora. Esto lo hice con chmod a+x .menu.sh

Hasta aquí ya tenemos el archivo para ser ejecutado desde la carpeta principal del usuario, que es la que abre el terminal de forma predeterminada.

3) Agregar un alias para usar esta instrucción en cualquier carpeta del terminal, como un comando más.
-Abrimos el archivo .bashrc (emacs -nw .bashrc).

-Agregaremos la siguiente linea:
alias menu='~/.menu.sh'
Lo que hace esta linea es que cuando escribamos "menu" en el terminal, ejecutaremos nuestro script. No olvides guardar el archivo.


Ahora en la próxima vez que abramos el terminal y escribamos "menu" se nos desplegará el menú de nuestro script en shell.


Y no importa en que directorio nos encontremos, podremos usar nuestro nuevo comando.


Estas opciones son solo unas comunes, pero podríamos completar un menú un tanto más complejo, dependiendo de las necesidades de cada usuario.

1 comentario: