.BAT
con esteroidesSi ha utilizado ficheros .BAT
para crear atajos de largas líneas de
comando (yo suelo hacerlo), el objetivo puede ser obtenido insertando las
líneas de alias convenientes (ver ejemplo de más arriba) en el
profile
o en el .profile
. Pero si sus ficheros .BAT
son más
complicados, le encantará el lenguaje de Script que el shell pone a su
disposición: es tan potente como el Qbasic (o más). Tiene variables,
estructuras como while
, for
, case
, if-then-else
, y
montones de nuevas características: puede ser una buena alternativa a un
lenguaje de programación "de verdad".
Para escribir un script ---el equivalente a un fichero .BAT
bajo DOS---
todo lo que tiene que hacer es escribir un fichero ASCII estándar que
contenga las instrucciones, guardarlo, y entonces hacerlo ejecutable con
el comando chmod +x fichero
. Para ejecutarlo, teclee su nombre.
Aviso: el editor del sistema se llama vi
, y es un hecho probado que
la mayor parte de los nuevos usuarios lo encuentran muy difícil de usar.
No voy a explicar cómo usarlo, porque no me gusta y no lo uso. Vea el
manual "Linux: Instalación y Primeros Pasos" de Matt Welsh (aunque sería
mejor utilizar otro editor tal como joe
o emacs
para X).
Baste decir aquí unos comandos muy básicos:
i
y después el texto;
vi
sin guardar, pulse ESC
y después :q!
ESC
y luego :wq
Escribir scripts bajo bash es una materia tan extensa que requeriría un libro para abarcarla toda, y no voy a profundizar más allá en este tema. Sólo daré un ejemplo de script, del cual se pueden extraer las reglas básicas:
#!/bin/sh
# ejemplo.sh
# Soy un comentario
# no cambie la primera linea: debe estar ahi
echo "Este sistema es: `uname -a`" # usa la salida del comando
echo "Me llamo $0" # variables intrinsecas
echo "Usted me dio $# parametros: "$*
echo "El primer parametro es: "$1
echo -n "¿Como se llama? " ; read su_nombre
echo fijese en la diferencia: "Hola, $su_nombre" # entrecomillando con "
echo fijese en la diferencia: 'Hola, $su_nombre' # entrecomillando con '
DIRS=0 ; FILES=0
for fichero in `ls .` ; do
if [ -d ${fichero} ] ; then # si el fichero esta en el directorio
DIRS=`expr $DIRS + 1` # DIRS = DIRS + 1
else if [ -f ${fichero} ] ; then
FILES=`expr $FILES + 1`
fi
case ${fichero} in
gif|*jpg) echo "${fichero}: fichero grafico" ;;
*.txt|*.tex) echo "${fichero}: fichero de texto" ;;
*.c|*.f|*.for) echo "${fichero}: fichero de codigo fuente" ;;
*) echo "${fichero}: fichero generico" ;;
esac
done
echo "Hay ${DIRS} directorios y ${FILES} ficheros"
ls | grep "ZxY--!!!WKW"
if [ $? != 0 ] ; then # Sacar el codigo del ultimo comando
echo "ZxY--!!!WKW no encontrado"
fi
echo "ya es suficiente... Para mas informacion teclee 'man bash'."
Bajo Unix, el lenguaje del sistema es C, le guste o no. Pero otros lenguajes como FORTRAN, Pascal, Lisp, Basic, Perl, awk... también están disponibles.
Suponiendo que usted sepa C, hay un par de guías para aquellos que han
utilizado Turbo C++ o uno de sus hermanos bajo DOS. El compilador de C se
denomina gcc y carece de todas las florituras que normalmente acompañan a
sus análogos bajo DOS: no tiene IDE, ni ayuda en línea, ni debugger
integrado, etc... Es sólo un rústico compilador de línea de comandos, muy
potente y eficiente. Para compilar el típico programa hello.c
esto es
lo que debe teclear:
$ gcc hello.c
lo que creará un fichero ejecutable llamado a.out
. Para cambiar el
nombre del ejecutable a otro nombre:
$ gcc -o hola hello.c
Para enlazar una librería al programa, añada la opción
-lnombre_de_librería
. Por ejemplo, para enlazar la librería
math
:
$ gcc -o mathprog mathprog.c -lm
(-lnombre_libreria
fuerza a gcc a enlazar la librería
/usr/lib/libnombre_librería.a
; por lo tanto -lm
enlaza
/usr/lib/libm.a
).
Bien. Pero cuando su programa está compuesto por varios ficheros de código
fuente, necesitará usar la utilidad make
. Supongamos que ha escrito
un evaluador de expresiones: su código fuente se denomina parser.c
e
tiene un #include
de dos ficheros en su cabecera: parser.h
y
xy.h
. Entonces, desea utilizar las rutinas de parser.c
en otro
programa, calc.c
, que hace un #include
de parser.h
. ¡Vaya
lío! ¿Cómo se puede compilar calc.c
?
Debe escribir un fichero llamado makefile
, el cual muestra al
compilador las dependencias entre los ficheros de código fuente y los
ficheros de código objeto. En nuestro ejemplo:
# Este es el makefile, utilizado para compilar calc.c
# ¡Pulse la tecla <TAB> en las posiciones marcadas!
calc: calc.o parser.o
<TAB>gcc -o calc calc.o parser.o -lm
# calc depende de dos ficheros de codigo objeto: calc.o and parser.o
calc.o: calc.c parser.h
<TAB>gcc -c calc.c
# calc.o depende de dos ficheros de codigo fuente
parser.o: parser.c parser.h xy.h
<TAB>gcc -c parser.c
# parser.o depende de tres ficheros de codigo fuente
# fin de makefile.
Guarde esto como makefile
y teclee
$ make
para compilar su programa; alternativamente, guárdelo como calc.mak
y
teclee
$ make -f calc.mak
Y, por supuesto, LPM.
Puede pedir ayuda acerca de las funciones de C, que se encuentra en las
páginas man
, sección 3; por ejemplo:
$ man 3 printf
Hay muchas librerías disponibles por ahí; entre las primeras que deseará
usar están las ncurses
, para manejar efectos en modo de texto, y
svgalib
, para hacer gráficos. Si se siente suficientemente valiente
para atacar la programación de las X, consiga XForms (
bloch.phys.uwm.edu/pub/xforms
) y/o MGUI (
http://www.volftp.vol.it/IT/IT/ITALIANI/MORELLO/index.htm
),
dos fantásticas librerías que hacen de la programación bajo X algo
realmente fácil. Más aún, si no puede vivir sin un IDE al estilo Borland,
consiga el paquete xwpe
de
ftp://sunsite.unc.edu/pub/Linux/apps/editors/
. Posiblemente
sea de su agrado.