You are on page 1of 13

Universidad Autnoma Metropolitana - Azcapotzalco

Utilizacin del Sistema Operativo Unix


Prof. Hugo Moncayo pez
!a"la de #ontenido
$. %ntroduccin ........................................
&. 'ntrada al sistema ...............................
(. Salir del sistema ..................................
). #omandos varios ................................
).$ Sistema de ayudas ........................
).& Sistema de arc*ivos ......................
4.2.1 ls Lista contenido de un
directorio ...........................................
4.2.2 mkdir crear un
directorio ...............
4.2.3 cd Cambiar el
directorio actual ........
4.2.4 rmdir Elimina un
directorio ...........................................
4.2.5 rm Elimina archivos ............
4.2.6 mv Mover archivos ..............
).&.+ !ips ........................................
,. -esarrollo de programas .....................
.. Uso del editor vi ..................................
6.1 Inicio de vi ...................................
..& Modos de operacin de vi ............
..( #omandos de pantalla ..................
..(.$ #orrimientos de la pantalla ....
..(.& Movimientos del cursor .........
..) Pasar a modo de entrada de texto .
..).$ Modificacin de texto ............
..).& #opia y pegado ......................
..).( #omandos miscelaneos .........
.., #omandos de l/nea de comandos .
..,.$ eer y salvar arc*ivos ............
..,.& Sustituciones glo"ales ...........
6.5.3 Variables de vi .....................
+. Uso del compilador de engua0e # ....
+.$ #ompilacin simple .....................
+.& Slo compilacin ..........................
+.( 1eneracin de un e0ecuta"le con
varios o"0etos .........................................
2. -epuracin de un programa ................
2.$ 'sta"lecer puntos de interrupcin
2.& %nicio de la e0ecucin ...................
2.( 3evisar el contenido de las
varia"les .................................................
2.) '0ecucin paso a paso 4sin entrar
a las funciones5 .......................................
2., '0ecucin paso a paso 4entrando
a las funciones5 .......................................
2.. -eteccin de puntos de falla ........
2.+ Manual de referencia de gd" ........
6. '0ecucin del programa ......................
6.$ ectura de datos de un arc*ivo ....
6.& 'scritura de resultados en un
arc*ivo ....................................................
6.( %mpresin de programas y
resultados ...............................................
6.) Preparacin para impresin ..........
$7. Utiler/a ma8e ...................................
$$. Utiler/a tar ........................................
$&. #ompresin de arc*ivos ..................
$
1.Introduccin
'sta gu/a est9 ela"orada para :ue los alumnos del
curso de %ntroduccin a la programacin :ue por
primera vez se enfrentan a la necesidad de
desarrollar programas en engua0e # en el
am"iente U;%< tengan a la mano los principales
comandos para mane0ar arc*ivos en su cuenta=
editar sus programas fuentes y datos= compilar y
depurar sus programas e imprimir sus resultados.
'sta gu/a no es un manual de referencia.
Unix es un sistema operativo multiusuario. 'sto
significa :ue varias personas pueden usar la
computadora concurrentemente desde terminales
interactivas o desde computadoras personales
conectadas a la red.
'n estas notas el texto :ue escri"e la computadora
se presenta en caracteres courier normal y la
respuesta del usuario se presenta en courier en
negritas.
2.Entrada al sistema
#uando se prende la terminal aparece una peticin
4>prompt?5 del sistema a la :ue se responde con la
clave del usuario@
login: alpa326
A continuacin aparece la peticin de la
contraseAa del usuario@
password: x32jh88a
Al teclear la clave del usuario y la contraseAa se
de"en teclear exactamente como se
proporcionaron estos datos= respetando las
mayBsculas y las minBsculas. ;o se de"en *acer
correcciones. 'l sistema proporciona tres
oportunidades para introducir estos datos.
#uando se *an introducido correctamente la clave
y contraseAa el sistema proporciona un mensa0e
de "ienvenida y al fina presenta una peticin para
:ue usuario comience a introducir comandos.
$
'n este momento el usuario puede teclear el
nom"re de un comando o el nom"re de un
programa e0ecuta"le .
3.Salir del sistema
Para salir del sistema= a una peticin del sistema
se responde con la com"inacin #trl-d y retorno.
4.Comandos varios
A continuacin se presentan algunos comandos de
uso comBn :ue son los m9s necesarios para
utilizar el sistema operativo.
4.1Sistema de ayudas
Para o"tener en la pantalla el manual de un
comando se usa el comando man. 'sto nos
permite la consulta de la documentacin de
cual:uier comando. e0emplo@
$ man vi
#on el comando anterior se presenta en la pantalla
el manual del comando vi 4editor de textos5.
'n la pantalla aparece la primera p9gina. os
comando :ue acepta man son@
espacio Avanza una p9gina
delete Salir de man
#trl-C 3etrocede una p9gina
#on el comando man se pueden consultar tam"iDn
las fucniones de la "il"ioteca est9ndar del
engua0e # como@
$ man printf
4.2Sistema de archivos
'l sistema de arc*ivos de U;%< es una estructura
ar"olada de directorios en donde el directorio ra/z
es@
E
cada nivel puede tener arc*ivos y directorios.
Una trayectoria es una cadena de nom"res de
directorios separados por diagonales y puede
terminar con el nom"re de un directorio o un
&
arc*ivo.
Si una trayectoria empieza con diagonal= la
trayectoria se toma a partir del directorio ra/z o
principal del sistema de arc*ivos.
/usr/include/system
Si la trayectoria empieza con un nom"re= entonces
parte del directorio actual.
proyecto/fuentes
4.2.1ls Lista contenido de un directorio
istar el contenido del directorio actual
$ ls
istar el contenido del directorio actual
incluyendo sus detalles
$ ls -l
istar el contenido de un directorio con
trayectoria a partir del directorio ra/z= incluyendo
sus detalles
$ ls -l /usr/include/system
istar los nom"res de los programas # :ue se
encuentran el directorio fuentes.
$ ls fuentes/*.c
4.2.2mkdir crear un directorio
#rear un directorio en el directorio actual
$ mkdir fuentes
Se crea el directorio fuentes en el directorio
actual.
4.2.3cd #am"iar el directorio actual
#am"iar al directorio fuentes :ue se encuentra en
el directorio actual.
$ cd fuentes
#am"ia al directorio fuentes :ue se encuentra en
el directorio actual.
$ cd /usr/lib
esta"lece como directorio actual el directorio lib
:ue se encuentra en el directorio usr :ue se
encuentra en el directorio ra/z.
4.2.4rmdir Elimina un directorio
Para eliminar un directorio el directorio de"e estar
vac/o.
$ rmdir prueba
'limina el directorio prueba :ue se encuentra en
el directorio actual.
4.2.5rm Elimina archivos
'ste comando nos permite eliminar uno o varios
arc*ivos. '0emplos@
'limina todos los arc*ivos o"0eto del directorio
actual
$ rm *.o
'limina el arc*ivo listado.lst :ue se encuentra en
el directorio reportes :ue a la vez se encuentra en
el directorio actual.
$ rm reportes/listado.lst
4.2.6mv Mover archivos
'ste comando nos permite cam"iar de directorio
uno o varios arc*ivos o directorios. '0emplos@
Mover el arc*ivo lista.lst :ue se encuentra en el
directorio actual al directorio reportes con el
nom"re datos.lst
$ mv lista.lst reportes/datos.lst
Mover el arc*ivo listado.lst al directorio reportes
con el mismo nom"re. 4cuando el origen es un
arc*ivo y el destino es un directorio el arc*ivo se
mueve a ese directorio con el mismo nom"re5
$ mv listado.lst reportes
#uando el origen y el destino son am"os
directorios= el directorio origen se mueve con todo
su contenido al directorio destino. 'n el siguiente
(
e0emplo se mueve todo el directorio fuentes con
su contenido al directorio proyectoFterminal
$ mv fuentes proyecto_terminal
'l comando mv se puede usar para cam"iar de
nom"re a un arc*ivo. 'sto se logra si el arc*ivo
destino se encuentra en el mismo directorio :ue el
arc*ivo fuente. 'n el siguiente e0emplo el arc*ivo
a.out se le cam"ia el nom"re por mieditor@
$ mv a.out mi_editor
4.2.7Tips
Para poder repetir la e0ecucin de los comandos
anteriores en el sistema acordeon= es necesario
e0ecutar el siguiente comando@
$ set -o vi
-espuDs de esto= cada vez :ue se desea volver a
e0ecutar algBn comando previo se teclea 'S#-8.
#ada ves :ue tecleamos 'S#-8 la pantalla nos
muestra el comando anterior. 'n la l/nea de
comandos podemos *acer modificaciones
utilizando los comandos del editor vi 4ver .5.
5.Desarrollo de programas
'l desarrollo de un programa consiste
"9sicamente en editar el programa fuente con
algBn editor como vi o pico. 'l programa se
compila con el comando !"" con lo :ue se genera
el programa e0ecuta"le y finalmente se e0ecuta
tecleando como comando el nom"re del programa
e0ecuta"le.
os pasos para el desarrollo de programas son los
siguientes@
a5.- -esarrollar el algoritmo usando una
*erramienta como espaAol estructurado.
"5.- #odificar el programa en un lengua0e de
programacin como # o #GG.
c5.- 'ditar los arc*ivos :ue contienen el
programa con un editor como vi o pico.
d5.- #ompilar el programa con el compilador
gcc o gGG 4para # o #GG respectivamente5
y eliminar los errores :ue reporta el
compilador.
e5.- Preparar con el editor los datos de prue"a.
f5.- Pro"ar el programa. Si el programa no
funciona como esperamos= entonces se
revisa y se realizan las correcciones.
g5.- Si se dificulta encontrar los errores del
programa se puede realizar una corrida de
depuracin usando el depurador gd". 'ste
programa permite e0ecutar paso a paso el
programa y conocer y modificar el valor de
las varia"les.
*5.- Si despuDs de todo esto no se localizan los
errores del programa se puede acudir a
asesor/a con el profesor o el ayudante.
6.Uso del editor vi
'l editor vi es un editor de pantalla= es decir= nos
permite ver una p9gina del arc*ivo :ue estamos
editando. Aun:ue existen otros editores "a0o el
sistema operativo Unix es conveniente estar
familiarizado con vi por:ue es el :ue siempre
encontramos disponi"le en todos los sistemas
U;%<.
'l editor vi es muy poderoso pero no es nada
amiga"le= ya :ue no proporciona ningBn tipo de
ayudas interactivas= ni cuenta con interfaces
modernas como menBs ni cuadros de di9logo.
Para usarlo cmodamente es necesario memorizar
sus comandos.
'n este documento slo se descri"en las funciones
m9s usuales. Para una mayor informacin
consulte el manual de vi.
6.1Inicio de vi
'l vi de"e tra"a0ar con una variedad de terminales
y para :ue opere correctamente es necesario
pasarle el modelo de terminal con el :ue vamos a
tra"a0ar. 'sto se *ace definiendo una varia"le de
am"iente con los siguiente comandos@
$ TERM=vt100
$ export TERN
en el e0emplo anterior se defini para vi como
terminal el modelo vt1## :ue es el m9s usual y
:ue tam"iDn es el adecuado cuando usamos un
emulador de terminal en una P#.
)
Para verificar el modelo de terminal definido en la
varia"le de am"iente $E%M se e0ecuta el
comando@
$ echo $TERM
Para iniciar el editor vi se e0ecuta el siguiente
comando@
$ vi tarea.c
#on el comando anterior se inicia la edicin del
arc*ivo tarea.c el cual si no existe se crea y si ya
existe se permite modificar.
6.2Modos de operacin de vi
vi opera en tres modos diferentes@ a5.- modo
comando de pantalla= modo de entrada y modo
comando de l/nea. Al iniciar vi se encuentra en
modo de comando de pantalla.
'n modo de comando de pantalla cual:uier
car9cter :ue teclee el usuario se tratar9 de
interpretar como comandoH en este modo no se
ven los comandos :ue tecleamos= solamente
perci"imos su efecto.
#uando el modo de entrada se encuentra activo
los caracteres :ue tecleamos se agregan al arc*ivo
en el punto en donde se encuentra el cursor.
'n el modo de comando de l/nea= el cursor se
coloca en la Bltima l/nea de la pantalla y nos
permite teclear un comando en esta l/nea= el
comando se e0ecuta cuando oprimimos >entrar?.
vi no nos da ninguna indicacin para sa"er si nos
encontramos en modo de comando de pantalla o
modo de entrada.
6.3Comandos de pantalla
a mayor/a de los comandos de pantalla son de
una sola letra y pueden ser precedidos de un
nBmero :ue indica cuantas veces se va a repetir el
comando. Por e0emplo el comando dd "orra la
l/nea en donde se encuentra el cursorH si deseamos
"orrar cinco l/neas a partir del cursos tecleamos
5dd. 'n ningBn momento vemos los s/m"olos
:ue constituyen el comando.
6.3.1Corrimientos de la pantalla
If Avanza una p9gina
Id Avanza media p9gina
Ie Avanza una l/nea
I" 3etrocede una p9gina
Iu 3etrocede media p9gina
Iy 3etrocede una l/nea
6.3.2Movimientos del cursor
* 3etrocede el cursor
0 Siguiente l/nea
8 /nea anterior
l Adelante
J Kinal de la l/nea
7 Principio de la l/nea
L Mover el cursor al parDntesis= corc*ete o
llave :ue cierra el actual.
I %r al siguiente car9cter no espacio
nl #olocar el cursor en la columna n
C 3etroceder una pala"ra
' Avanzar una pala"ra
n1 %r a la l/nea n
6.4Pasar a modo de entrada de texto
#on estos comandos se pasa de modo comando de
pantalla a modo de entrada= es decir= el sistema
permitir9 :ue se introduzcan caracteres :ue se
incorporar9n al arc*ivo en el punto en :ue se
encuentra el cursor. 'n todos estos comandos el
cursor se coloca en cierta posicin y el sistema
:ueda listo para insercin de texto en el arc*ivo.
i 'n donde esta el cursor
% Al principio de la l/nea
A Al final de la l/nea
a Antes del cursor
o Agrega una nueva l/nea de"a0o del cursor
O Agrega nueva l/nea antes del cursor
Para dar por terminado el modo de entrada y
regresar a modo de comando de pantalla se
oprime la tecla de 'S#.
6.4.1Modificacin de te!to
x 'limina el car9cter en la posicin del
cursor.
r 3eemplaza el car9cter de la posicin
del cursor. 'n seguida de"emos
teclear el car9cter :ue reemplaza.
3 %nicia reemplazo de texto. A
continuacin= el texto :ue tecleamos
sustituye al :ue existe en el arc*ivo.
# 3eemplaza el texto desde el cursor
*asta el final de la l/nea con el nuevo
,
texto.
- 'limina el texto desde el cursor *asta
el final de la l/nea.
S 'limina el texto de la l/nea actual y
permite la entrada de nuevo texto.
dd 'limina la l/nea en donde esta el
cursor.
M Pega la l/nea actual a la siguiente.
6.4.2Copia " pe#ado
#opiar y pegar significa copiar el contenido de
algunas l/neas de texto en un "uffer para despuDs
insertarlas en otro lugar del arc*ivo o en otro
arc*ivo. vi cuenta con un "uffer annimo y con
"uffers con nom"re. 'l "uffer annimo solamente
se usa cuando la operacin de pegado se realiza
inmediatamente despuDs de la operacin de
copiado.
Uso del "uffer annimo
nN Se copian en el "uffer annimo n
l/neas a partir de la posicin del
cursor.
p as l/neas contenidas en el "uffer
annimo se insertan por de"a0o de la
l/nea en donde se encuentra el cursor.
Uso de los "uffer con nom"re
n?"N Se copian en el "uffer b n l/neas a
partir de la l/nea en donde se
encuentra el cursor. " Puede ser
cual:uier letra. a informacin
permanece en el "uffer *asta :ue
salimos de vi o *asta :ue
introducimos otro contenido en el
mismo "uffer.
n?"p as l/neas contenidas en el "uffer b
se insertan por de"a0o de la l/nea en
la :ue encuentra el cursor.
6.4.3Comandos miscelaneos
I1 ista en la Bltima l/nea de la pantalla
el nom"re del arc*ivo :ue estamos
editando y el nBmero de la l/nea en la
:ue se encuentra el cursor.
6.Comandos de l!nea de comandos
'l editor vi tiene capacidad de e0ecutar los
comandos del editor e&. 'stos comandos nos
permiten realizar cam"ios glo"ales= localizaciones
de textos con expresiones regulares y otra serie de
facilidades 4ver el manual de ex5.
Para e0ecutar un comando de e& de"emos estar en
modo de comando de pantalla. vi reconoce :ue se
trata de un comando de l/nea por el primer
car9cter= usualmente dos puntos >@? o una
diagonal >E?.
6.5.1Leer " salvar archivos
@O Se salva el arc*ivo en el mismo
arc*ivo :ue se a"ri al iniciar su
edicin.
@O arc* 'l arc*ivo editado se salva el arc*ivo
>arc*?.
@O: 'l arc*ivo se salva y salimos de vi.
@:P Salimos de vi sin salvar el arc*ivo 4se
pierden todos los cam"ios5
@e arc* Se carga para editar el arc*ivo >arc*?.
Si el arc*ivo :ue se esta"a editando
no se *a salvado no se realiza la
operacin.
@eP %gual :ue el comando anterior pero
las modificaciones del arc*ivo :ue se
esta"a editando se pierden.
6.5.2$ustituciones #lo%ales
@sEcad$Ecad&E
Sustituye la primera ocurrencia de la cadena
>cad$? por la cadena >cad&? en la l/nea actual.
@sEcad$Ecad&Eg
Similar al anterior pero sustituye todas las
ocurrencias de la cadena >cad$? por la cadena
>cad&?.
@$&=&,sEcad$Ecad&Eg
o mismo :ue el comando anterior pero la
sustitucin se realiza en las l/neas $& a &, del
arc*ivo.
@$=JsEcad$Ecad&Eg
o mismo :ue el comando anterior pero la
sustitucin se lleva a ca"o en todas las l/neas del
arc*ivo.
6.5.3&aria%les de vi
vi mane0a una serie de varia"les internas :ue le
permiten al usuario controlar su funcionamiento.
.
Por e0emplo el mane0o de la auto sangrado=
colocacin de ta"uladores= em"ellecimiento del
programa= etc. 'n particular resulta muy Btil :ue
vi numere las l/neas en la pantalla. 'sto nos
facilita encontrar los errores :ue nos reporta el
compilador= ya :ue Dste nos proporciona el
nBmero de la l/nea en donde ocurri el error. Para
:ue vi presente los nBmeros de las l/neas se
e0ecuta el siguiente comando@
'set number
3evise el manual de vi para conocer otras
opciones.
.Uso del compilador de !engua"e C
'n Unix existe un solo comando para compilar y
encadenar programas= se trata del comando !cc.
'l comando cc procesa una variedad de tipos de
arc*ivos= los distingue por su terminacin. Para el
propsito de nuestro curso nos interesan los
siguientes tipos de arc*ivos@
.c Son los mdulos fuente escritos en
lengua0e #. -e"emos crear los
mdulos # con esta terminacin.
.o Son los mdulos o"0eto resultantes de
la compilacin de un mdulo fuente.
Un mdulo o"0eto no puede ser
e0ecutado= este de"e com"inarse con
otros mdulos o"0etos y mdulos de
li"rer/a para generar un mdulo
e0ecuta"le.
.a 's la terminacin :ue se da a las
li"rer/as. as li"rer/as nos sirven
para almacenar mdulos o"0etos de
uso comBn.
.cc Programas fuente escritos en #GG.
'n Unix los mdulos e0ecuta"les no tienen :ue
tener una terminacin particular. Para los fines de
nuestro curso los mdulos e0ecuta"les no tendr9n
ninguna terminacin.
".1Compilacin simple
Se tiene un solo mdulo fuente y se desea generar
un mdulo e0ecuta"le. Si nuestro programa fuente
se llama ordena.c para compilarlo y o"tener el
e0ecuta"le de"eremos proporcionar el siguiente
comando@
J gcc ordena.c -o ordena
!odas las compilaciones en este curso vamos a
usar esta opcin. Al detectar un nom"re de
arc*ivo con terminacin .c el compilador procede
a compilar ese arc*ivo. 'l sOitc* -o le indica al
sistema :ue el mdulo e0ecuta"le se llamar9
ordena 4sin terminacin5= si la compilacin tiene
Dxito el e0ecuta"le :uedar9 con este nom"re.
".2Slo compilacin
Para :ue el compilador no intente generar un
mdulo e0ecuta"le se usa el sOuitc* -c. -e esta
manera podemos realizar una compilacin para
generar un mdulo o"0eto. '0emplo@
$ gcc -c lect.c -o lect.o
#on el comando anterior se compila el mdulo
fuente lect.c y se genera el o"0eto lect.o
".3#eneracin de un e$ecuta%le con varios
o%$etos
Para ligar varios o"0etos se usa un comando como
sigue@
$ gcc ordena.o lectura.o -o ordena
#on el comando anterior los mdulos o"0eto
ordena.o y lectura.o se com"inan con mdulos
de las li"rer/as est9ndar para crear el e0ecuta"le
ordena.
#.Depuracin de un programa
'l depurador gd" se utiliza para detectar errores
de e0ecucin. ;os permite e0ecutar un programa
instruccin por instruccin y revisar el valor de las
varia"les.
Para depurar un programa con gd" el programa se
de"e compilar con la opcin -g como se muestra a
continuacin@
$ gcc -g ordena.c -o ordena
Una vez compilado se inicia la e0ecucin
mediante gd" de la siguiente forma@
$ gdb ordena
+
Una vez iniciado gd" podemos listar las
instrucciones del programa con el comando l.
(gdb) l
Slo se teclea la letra ele.
&.1'sta%lecer puntos de interrupcin
Antes de iniciar la e0ecucin del programa
de"emos esta"lecer uno o varios puntos de
interrupcin 4"rea8 point5 con el comando ".
(gdb) b 17
#on el comando anterior gd" esta"lece un punto
de interrupcin en la l/nea $+. 's posi"le
esta"lecer tantos puntos de interrupcin como se
desee. #uando la e0ecucin del programa llegue a
un punto de interrupcin gd" detiene la e0ecucin
antes de e0ecutar la instruccin de esa l/nea y nos
permite revisar los valores de las varia"les.
&.2Inicio de la e$ecucin
Para iniciar la e0ecucin del programa se utiliza el
comando r.
(gdb) r
#on esto se inicia la e0ecucin del programa *asta
llegar a un punto de interrupcin o terminar la
e0ecucin del programa.
&.3(evisar el contenido de las varia%les
Para conocer el valor de las varia"les se utiliza el
comando p.
(gbd) p k
#on el comando anterior se lista el valor de la
varia"le 8.
&.4'$ecucin paso a paso )sin entrar a las
*unciones+
Para e0ecutar una instruccin a la vez se utiliza el
comando n. #on este comando no se entra a las
funciones :ue son invocadas desde la l/nea :ue se
e0ecuta.
(gdb) n
&.'$ecucin paso a paso )entrando a las
*unciones+
'l comando s es similar a n= sin em"argo= cuando
en la l/nea :ue se e0ecuta se invoca una funcin
gd" nos muestra la primera instruccin de la
funcin invocada.
(gdb) s
&.6,eteccin de puntos de *alla
#uando un programa compilado con la opcin Qg
a"orta por algBn error 4divisin entre cero= falla de
segmento= etc.5 y genera un vaciado de memoria
4core dump5 se invoca el depurador con un
comando similar a@
$ gdb ordena core
#omo se puede o"servar= el primer argumento es
el arc*ivo e0ecuta"le y el segundo argumento es el
arc*ivo :ue contiene el vaciado de memoria. 'l
depurador nos mostrar9 la l/nea :ue produ0o el
pro"lema y podemos analizar la pila del sistema
para conocer la ruta por donde se lleg al
pro"lema. por e0emplo@
(gdb) bt
;os muestra todos los llamados a funciones :ue
nos llevaron al punto de falla del programa. Por
cada nivel de llamado en la fila se encuentra un
contexto de e0ecucin 4frame5 :ue nos dice el
nom"re de la funcin y los valores de los
argumentos. #on el comando@
(gdb) f n
Podemos situarnos en el contexto nBmero n para
poder listar los valores de las varia"les locales y
cual:uier otra informacin disponi"le desde ese
contexto de e0ecucin.
os comandos "t y f se pueden invocar en
cual:uier otro momento.
&."Manual de re*erencia de -d%
2
'l manual de referencia de gd" se encuentra en la
direccin@
*ttp@EEO).lns.cornell.eduEpu"licE#OMPEinfoEgd"Egd"Ftoc.*tml
!am"iDn se puede "uscar en internet usando las
pala"ras 1;U y gd".
$.E"ecucin del programa
Para e0ecutar un programa se emplea como
comando el nom"re del arc*ivo e0ecuta"le
generado con el compilador. Por e0emplo@
$ ordena
..1/ectura de datos de un archivo
Si se desea leer los datos de un arc*ivo :ue se
encuentra en el disco podemos usar el
redireccionamiento de la entrada est9ndar como
sigue@
$ ordena <numeros.dat
'n este e0emplo los datos del programa ordena se
van a leer del arc*ivo numeros.dat. 'ste arc*ivo
se puede preparar con editor vi= igual en la misma
forma en :ue se prepara un programa fuente.
..2'scritura de resultados en un archivo
Si se desea :ue los resultados se escri"an en un
arc*ivo del disco se usa el redireccionamiento de
la salida est9ndar@
$ ordena >listado
os resultados se almacenar9n en el arc*ivo
listado. 'ste arc*ivo se puede ver con el editor vi
o se puede enviar a la impresora.
;ota. os dos redireccionamientos se pueden
usar simult9neamente como se muestra a
continuacin@
$ ordena <datos.dat >listado
..3Impresin de pro-ramas y resultados
Para imprimir un arc*ivo de texto en la impresora
del sistema se emplea el comando imprime en la
siguiente forma@
$ imprime ordena.c
..4Preparacin para impresin
'n el momento de imprimir los programas fuente
es conveniente darles un formato adecuado. Para
esto se utiliza el comando pr. 'l comando pr lee
los arc*ivos :ue se le indican y genera un listado
con las caracter/sticas :ue se especifican mediante
los par9metros de e0ecucin.
'0emplo $@
$ pr -n ordena.c >listado
$ imprime listado
'n el e0emplo el arc*ivo ordena.c se formatea
agregando nBmeros de l/nea y se almacena en el
arc*ivo listado. 'l segundo comando env/a el
arc*ivo listado a la impresora.
'0emplo &@
$ pr -n *.h *.c >listado
$ imprime listado
'n este e0emplo todos los arc*ivos con
terminacin .* y con terminacin .c se numeran y
se gra"an en el arc*ivo listado. 'l segundo
comando env/a el arc*ivo listado a la impresora.
1%.Utiler&a ma'e
'l programa ma8e de unix se utiliza para compilar
programas :ue se encuentran divididos en varios
mdulos fuente. Adem9s de facilitar la
compilacin= minimiza el tiempo re:uerido para
este proceso= ya :ue solamente recompila los
mdulos :ue *an tenido alguna modificacin.
Para utilizar el comando ma8e es necesario crear
un arc*ivo de instrucciones 4script5 con el :ue se
gu/a a ma8e respecto a como se lleva a ca"o la
compilacin. 'l arc*ivo de instrucciones se crea
con cual:uier editor de textos como el vi.
Supongamos :ue tenemos un programa :ue consta
de varios mdulos como se muestra a
continuacin@
calcula.cpp
6
#include avl.h
#include calcula.h
. . .
main()
{
. . .
}
avl.cpp
#include avl.h
double *Avl::Avl {
. . .
};
#omo puede apreciarse= el programa calcula se
encuentra dividido en dos mdulos. 'l primero
contiene el programa principal e invoca a las
fucniones de la clase Avl :ue se encuentran
definidas en el mdulo avl.cpp. Para realizar esta
compilacin es necesario *acer dos compilaciones
y una edicin de encadenamiento 4lin85. Adem9s
se de"en aplicar las siguientes reglas@
$5.- #ada :ue cam"ie alguno de los arc*ivos
calcula.cpp= calcula.* o avl.* es
recompilar calcula.cpp para generar
calcula.o.
&5.- #ada :ue cam"ie el arc*ivo avl.cpp o
avl.* es necesario recompilar avl.cpp
para generar el arc*ivo avl.o.
(5.- #ada :ue cam"ie el arc*ivo avl.o o
calcula.o es necesario e0ecuatar el lin8
para generar el arc*ivo e0ecuta"le
calcula.
'sto se logra con una arc*ivo ma8efile con el
siguiente contenido@
calcula: calcula.o avl.o
g++ calcula.o avl.o o calcula
calcula.o: calcula.cpp calcula.h avl.h
g++ calcula.cpp o calcula.o
avl.o: avl.cpp avl.h
g++ avl.cpp o avl.o
Para compilar el programa unicamente se de"e
invocar al comando ma8e como se muestra a
continuacin@
$ make
Si no se proporcionan argumentos al comando
ma8e= este comando "usca el arc*ivo llamdo
Ma8efile o ma8efile para *acer la compilacin. Si
el arc*ivo se llama de otra manera como
proyecto.ma8= entonces es necesario realizar la
siguiente invocacin.
$ make f proyecto.mak
'n el e0emplo anterior existen dos clases de l/neas
:ue llamaremos reglas y comandos. as reglas
contiene el nom"re de un arc*ivo o"0etivo seguido
de dos puntos y seguido de la lista de los arc*ivos
de los :ue depende. As/ en la primera l/nea se
especifica :ue el arc*ivo calcula depende de los
arc*ivos calcula.o y avl.o. a segunda l/nea
contiene el comando :ue genera el arc*ivo
calcula o sea una invocacin a gGG para :ue se
realice la liga de los dos mdulos o"0etos. os
comandos para generar los arc*ivos empiezan con
un ta"ulador.
'n general un arc*ivo ma8e est9 formado por
instrucciones de generacin. Una instruccin de
generacin tiene una regla de dependencia seguida
por uno o varios comandos Unix. as reglas
empiezan en la columna $ y los comandos se
inician con un ta"ulador. 'n un arc*ivo ma8e es
posi"le invocar cual:uier comando v9lido Unix
aun:ue por lo gneral solamente utilicemos
llamadas al compilador.
Uso de macros
'n un arc*ivo ma8e podemos definir macros de la
siguiente manera@
OBJS = avl.o calcula.o
Posteriormente podemos *acer referencia al valor
de la macro en cual:uier parte del arc*ivo como
se muestra a continuacin@
g++ $(OBJS)
11.Utiler&a tar
'l programa tar tiene la capacidad de agrupar un
con0unto de directorios y arc*ivos en un pa:uete
4tarfile5. 'l mismo programa se usa para
desempacar la informacin y reconstruir la
estructura de directorios y arc*ivos originales.
'n este curso= los arc*ivos de cada tarea de"er9n
estar contenidos en un directorio con el nom"re
tarea$= tarea&= 'tc. 'l directorio de"er9 contener
exclusivamente los arc*ivos necesarios para
compilar y e0ecutar los programas necesarios.
$7
'ste directorio podr9 tener su"directorios.
Para empacar la tarea :ue se encuentra en el
directorio tarea, se utilizar9 el siguiente comando@
$ tar cf tarea5.tar tarea5
'n este caso cf son las opciones. a c indica :ue
se va a crear un nuevo pa:uete y la f significa :ue
el pa:uete va a se un arc*ivo 4por omisin ser/a
una cinta magnDtica5. tarea,.tar es el arc*ivo :ue
va a contener el pa:uete y tarea, es el nom"re del
directorio :ue corresponde a la tarea nBmero
cinco.
's posi"le revisar el contenido de un pa:uete. 'n
este caso se emplea el comando@
J tar tf tarea,.tar
Para reconstruir la estructura de directorios
almacenados en un pa:uete nos colocamos en el
directorio a partir del cual deseamos reconstruir la
estructura de directorios y usamos un comando
como el siguiente@
J tar xf tarea,.tar
12.Compresin de arc(ivos
os programas compress y uncompress se utilizan
para comprimir y restaurar arc*ivos. a
compresin puede a*orrar una cantidad
importante de espacio de almacenamiento.
Supongamos :ue deseamos comprimir un pa:uete
:ue contiene todos los arc*ivos de la tarea cinco y
:ue se encuentran en el arc*ivo tarea,.tar. Para
esto se usa el siguiente comando@
$ compress tarea5.tar
'l comando compress sustituye el arc*ivo original
por el arc*ivo comprimido tarea,.tar.R.
Si nuevamente desseamos descomprimir el
arc*ivo tarea,.tar.R podemos usar el siguiente
comando@
$ uncompress tarea5.tar.Z
'n este caso el arc*ivo comprimido se sustituye
por el arc*ivo original.
$$
(ndice
cd..........................................................................(
clave del usuario................................................... &
#odificar el programa........................................... )
#omandos de l/nea de comandos.......................... .
#omandos de pantalla........................................... ,
#ompilacin simple.............................................. +
#ompresin de arc*ivos......................................$$
#opia y pegado..................................................... .
#orrimientos de la pantalla................................... ,
-epuracin de un programa..................................2
-esarrollar el algoritmo........................................ )
-esarrollo de programas....................................... )
-eteccin de puntos de falla................................. 2
directorios............................................................. &
'ditar.....................................................................)
'0ecucin paso a paso........................................... 2
'0ecucin paso a paso 4entrando a las funciones5.2
'ntrada al sistema................................................. &
'scritura de resultados en un arc*ivo................... 6
'sta"lecer puntos de interrupcin......................... 2
1eneracin de un e0ecuta"le con varios o"0etos... 2
%mpresin de programas y resultados................... 6
%nicio de la e0ecucin............................................ 2
eer y salvar arc*ivos........................................... .
login...................................................................... &
ls (
ma8e.................................................................... $7
man....................................................................... &
mkdir.................................................................. (
Modificacin de texto........................................... .
modo de comando............................................... ,
modo de entrada..................................................,
Modos de operacin de vi..................................... ,
Movimientos del cursor........................................ ,
mv......................................................................... (
Pasar a modo de entrada de texto..........................,
passOord............................................................... &
Preparacin para impresin.................................. 6
3evisar el contenido de las varia"les.................... 2
rm......................................................................... (
rmdir.................................................................... (
Salir del sistema.................................................... &
Sistema de arc*ivos.............................................. &
Slo compilacin.................................................. +
Sustituciones glo"ales........................................... .
tar........................................................................ $$
trayectoria............................................................. (
Uso del editor vi....................................................)
$&
$(

You might also like