You are on page 1of 30

2

U NIVERSIDAD DE VALLADOLID

Manual abreviado de UNIX - LINUX


Guin de prcticas

Escuela Universitaria Politcnica


Fundamentos de Informtica
I. T. Industrial

Curso 2005/2006

ndice general
1. Introduccin a Unix
1.1. Introduccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.1.1. Qu es Unix? . . . . . . . . . . . . . . . . . . . . . . . .
1.1.2. El entorno de trabajo: el shell . . . . . . . . . . . . . . . .
1.1.3. Usuarios y grupos . . . . . . . . . . . . . . . . . . . . . .
1.2. Iniciacin a Unix . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2.1. Entrada y salida del sistema . . . . . . . . . . . . . . . . .
1.3. Estructura del sistema de archivos de Unix . . . . . . . . . . . . . .
1.3.1. Tipos de archivos . . . . . . . . . . . . . . . . . . . . . . .
1.3.2. El camino o path . . . . . . . . . . . . . . . . . . . . . . .
1.3.3. Estructura del sistema de archivos de Unix . . . . . . . . .
1.3.4. El directorio $HOME . . . . . . . . . . . . . . . . . . . . .
1.3.5. Permisos . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.4. Comandos bsicos de Unix . . . . . . . . . . . . . . . . . . . . . .
1.4.1. Algunos comandos sencillos de Unix . . . . . . . . . . . .
1.4.2. Listado del contenido de directorios: comando ls . . . . .
1.4.3. Creacin de subdirectorios: comando mkdir . . . . . . . .
1.4.4. Borrado de subdirectorios: comando rmdir . . . . . . . .
1.4.5. Cambio de directorio: comando cd . . . . . . . . . . . . .
1.4.6. Situacin actual: comando pwd . . . . . . . . . . . . . . .
1.4.7. Copia de ficheros: comando cp . . . . . . . . . . . . . . .
1.4.8. Mover o cambio de nombre de ficheros: comando mv . . . .
1.4.9. Borrado de ficheros: comando rm . . . . . . . . . . . . . .
1.4.10. Cambio de modo de los ficheros: comando chmod . . . . .
1.4.11. Visualizacin sin formato de un fichero: comando cat . . .
1.4.12. Visualizacin de ficheros pantalla a pantalla: comando more
1.5. Comandos fundamentales del editor vi . . . . . . . . . . . . . . .
1.6. Y despus qu? . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.6.1. Obtener ms informacin con el manual del sistema . . . .
2. Guin de prcticas
2.1. Entrando al sistema . . .
2.2. Conexin . . . . . . . .
2.3. Desconexin . . . . . .
2.4. Transferencia de ficheros

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.
I

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

1
1
1
2
2
2
3
3
3
4
5
6
6
6
7
7
8
8
8
8
9
9
9
10
10
10
11
12
12

.
.
.
.

13
13
14
15
16

NDICE GENERAL

II

2.5.
2.6.
2.7.
2.8.
2.9.

Ejercicios de manejo de ficheros y directorios


Ejercicios de transferencia de ficheros . . . .
Escribiendo el primer programa. . . . . . . .
Ejecutando el primer programa. . . . . . . .
Desarrollo . . . . . . . . . . . . . . . . . . .
2.9.1. Esquema general . . . . . . . . . . .
2.9.2. Ejecucin . . . . . . . . . . . . . . .
2.10. Errores . . . . . . . . . . . . . . . . . . . . .
2.10.1. Soluciones drsticas . . . . . . . . .

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

16
19
20
21
22
22
23
23
26

Captulo 1

Introduccin a Unix
1.1.

Introduccin

La mayor parte de los ordenadores que existen en la actualidad estn diseados de forma que puedan ejecutar diversas tareas o programas. Estos programas pueden ir desde un
procesador de textos, a un programa para la animacin de grficos tridimensionales o distintos tipos de juegos. Para su correcto funcionamiento deben ser adems capaces de acceder a
las recursos de que dispone el ordenador, como por ejemplo escribir o leer datos en un disco duro, mostrar un grfico por pantalla, etc. Es evidente, que si cada programa actuase de
una forma independiente, existiran graves problemas y conflictos, puesto que, por ejemplo,
tendran libertad para escribir sus datos sobre los de otro, etc.
Para solucionar este tipo de problemas se desarrollaron los Sistemas Operativos, los
cuales aportan unos mecanismos y reglas bsicas de funcionamiento, de forma que los
programas puedan acceder a los recursos del ordenador de una forma adecuada. Aunque
sta fue la funcionalidad inicial de los sistemas operativos, con el tiempo se han aadido
otras muchas, como la ejecucin de programas, el control de la memoria del ordenador, la
creacin y control de interfaces grficas de usuario, etc.
En la actualidad existen una gran cantidad de sistemas operativos dependiendo del tipo
de ordenador en el que se va a ejecutar. Por ejemplo para los PC uno de los sistemas operativos ms difundidos es Microsoft Windows, tanto en las versiones 95, 98, ME, NT 4.0,
2000 y la nueva XP. Otros posibles sistemas operativos para este tipo de ordenadores son
Solaris, OS/2, BeOS, Microsoft DOS, o uno de los sistemas operativos ms poderosos y en
rpida expansin para PC: Linux.

1.1.1.

Qu es Unix?

Unix es un sistema operativo desarrollado en 1970, y una de sus mayores ventajas es


que es fcilmente portable a diferentes tipos de ordenadores, por lo que existen versiones de
Unix para casi todos los tipos de ordenadores, desde PC y Mac hasta estaciones de trabajo
y superordenadores. Al contrario que otros sistemas operativos, como por ejemplo MacOS
el sistema operativo de los Apple Macintosh, Unix no est pensado para ser fcil de
emplear, sino para ser sumamente flexible. Por lo tanto Unix no es en general tan sencillo
de emplear como otros sistemas operativos, aunque, se estn realizando grandes esfuerzos
1

CAPTULO 1. INTRODUCCIN A UNIX

para facilitar su uso. Pese a todo la enorme flexibilidad de Unix y su gran estabilidad (y el
bajo coste, en sus versiones de libre distribucin) han hecho de este sistema operativo una
opcin muy a tener en cuenta por aquellos usuarios que se dediquen a trabajar a travs de
redes, naveguen por Internet, o se dediquen a la programacin.
Linux es un sistema operativo para PC, gratuito y de libre distribucin inspirado en el
sistema Unix, escrito por Linus Torvalds con la ayuda de miles de programadores de todo
el mundo comunicados a travs de Internet. El futuro de Linux es brillante y cada vez ms
y ms gente y ms y ms empresas entre otras IBM, Intel y Corel estn apoyando este
proyecto, con lo que el sistema ser cada vez ms sencillo de emplear y los programas sern
cada vez mejores.

1.1.2.

El entorno de trabajo: el shell

Al contrario que otros sistemas operativos, por defecto el trabajo con Unix no se realiza de una forma grfica, sino introduciendo comandos de forma manual. Unix dispone
de varios programas que se encargan de interpretar los comandos que introduce el usuario
y realiza las acciones oportunas en respuesta. Estos programas se denominan shell y son
el modo tpico de comunicacin en todos los sistemas Unix, incluido Linux. Para muchas
personas el hecho de tener que introducir los comandos de forma manual les puede parecer intimidante y dificultoso, aunque como se ver ms adelante los comandos de Unix son
relativamente simples y muy poderosos.

1.1.3.

Usuarios y grupos

Unix es un sistema operativo multitarea y multiusuario. Esto quiere decir que es capaz
de ejecutar varios programas (o tareas) de forma simultnea y albergar a varios usuarios
de forma simultnea. Por lo tanto, todos los usuarios de Unix deben tener una cuenta de
usuario en el sistema que establezca los privilegios del mismo. A su vez Unix organiza a los
usuarios en grupos de forma que se puedan establecer privilegios a un determinado grupo
de trabajo, para el acceso a determinados archivos o servicios del sistema.

1.2.

Iniciacin a Unix

Existen tres formas de acceder a un sistema Unix:


A travs de una consola de texto, el usuario se conecta directamente al ordenador que
tiene instalado Unix y accede mediante un sistema no grfico, o de texto.
Desde un gestor de sesiones grfico X Windows el usuario se conecta directamente al ordenador que tiene instalado Unix y accede al sistema mediante un programa grfico.
Desde un ordenador remoto mediante telnet o secure shell.

1.3. ESTRUCTURA DEL SISTEMA DE ARCHIVOS DE UNIX

1.2.1.

Entrada y salida del sistema

En cualquiera de los casos citados con anterioridad en la pantalla aparecer (ms o


menos) lo siguiente:
login as:
(Se teclea el nombre del usuario)
password:(Se teclea la contrasea, que no se ve en la pantalla)

Por motivos de seguridad la contrasea debe cumplir ciertas condiciones tales como:
Contener al menos seis caracteres.
Contener al menos un carcter numrico o especial y dos alfabticos.
Ser diferente del nombre de login.
Existen diversas formas para terminar la sesin de trabajo en Unix, dependiendo de si
estamos en modo grfico o de texto. En modo texto:
Presionar las teclas <ctrl> d
Escribir el comando exit

1.3.

Estructura del sistema de archivos de Unix

1.3.1.

Tipos de archivos

La base del sistema de archivos de Unix, es obviamente el archivo, que no es otra cosa
que la estructura empleada por el sistema operativo para almacenar informacin en un dispositivo fsico como un disco duro, un disquete, un CD-ROM o un DVD. Como es natural
un archivo puede contener cualquier tipo de informacin, desde una imagen en formato
PNG o JPEG a un texto o una pgina WEB en formato HTML,. . . El sistema de archivos es
la estructura que permite que Unix maneje los archivos que contiene.
Todos los archivos de Unix tienen un nombre, el cual debe cumplir unas ciertas reglas:
Un nombre de archivo puede tener entre 1 y 255 caracteres.
Se puede utilizar cualquier carcter excepto la barra inclinada / y no es recomendable
emplear los caracteres con significado especial en Unix, que son los siguientes:
= \ ^ ~ " * ; - ? [ ] ( ) ! & ~ < > |
Para emplear ficheros con estos caracteres o espacios hay que introducir el nombre
del fichero entre comillas, aunque esto no est soportado por todos los sistemas Unix.
Se pueden utilizar nmeros exclusivamente si as se desea. Las letras maysculas
y minsculas se consideran diferentes, y por lo tanto no es lo mismo carta.txt
que Carta.txt carta.Txt. Como en Windows, se puede emplear un cierto
criterio de tipo para marcar las distintas clases de ficheros empleando una serie de
caracteres al final del nombre que indiquen el tipo de fichero del que se trata. As, los
ficheros de texto, HTML, las imgenes PNG JPEG tienen extensiones .txt, .htm
(o .html), .png y .jpg (o .jpeg) respectivamente.

CAPTULO 1. INTRODUCCIN A UNIX

Pese a esto Unix slo distingue tres tipos de archivos:


Archivos o ficheros ordinarios, son los mencionados anteriormente.
Directorios (o carpetas), es un archivo especial que agrupa otros ficheros de una forma
estructurada.
Archivos especiales, son la base sobre la que se asienta Unix, puesto que representan
los dispositivos conectados a un ordenador, como puede ser una impresora. De esta
forma introducir informacin en ese archivo equivale a enviar informacin a la impresora. Para el usuario estos dispositivos tienen el mismo aspecto y uso que los archivos
ordinarios.

1.3.2.

El camino o path

En cualquier sistema operativo moderno la estructura de archivos es jerrquica y depende de los directorios. En general la estructura del sistema de archivos se asemeja a una
estructura de rbol, estando compuesto cada nudo por un directorio o carpeta, que contiene
otros directorios o archivos. En Windows, se tiene la carpeta MiPC como raz que sirve
de acceso a otras carpetas y dispositivos por ejemplo: a:, c:, d:, etc. En los sistemas
Unix, existe un nico directorio RAZ denominada / de la que cuelgan todos los ficheros y
directorios independientemente de qu dispositivos estn conectados al ordenador.
El camino de un fichero o directorio es la secuencia de directorios que se ha de recorrer para acceder a un determinado fichero separados por /. Supongamos la estructura de
archivos de la figura 1.1

dev

usr

home

pedro

etc

luis

Carta.txt

Carta2.txt

Figura 1.1: rbol de directorios de ejemplo


Existen dos formas del camino o ruta:
El camino absoluto que muestra la lista de directorios por los que hay que pasar
desde el directorio raz hasta ese fichero. Por ejemplo, el camino absoluto del fichero
Carta.txt es /home/luis/Carta.txt.

1.3. ESTRUCTURA DEL SISTEMA DE ARCHIVOS DE UNIX

El camino relativo es la lista de directorios por los que hay que pasar desde el directorio actual hasta ese fichero, por ejemplo si nos encontramos en el directorio /home,
el camino relativo al fichero Carta.txt es luis/Carta.txt.
Todo directorio contiene dos directorios especiales, a saber:
El directorio actual,es el directorio en el que estamos en cada momento; est representado por el punto .
El directorio padre, es el directorio del que cuelga el actual; est representado por dos
puntos .. . Ejemplo: el directorio padre del directorio pedro es el directoriohome
Estando en el directorio /home/pedro (el directorio actual es pedro)se puede acceder a Carta.txt con /home/luis/Carta.txt (camino absoluto) o bien ../luis/Carta.txt
(camino relativo). Estando en el directorio /home/luis (el directorio actual es luis)
sera se accede mediante ./Carta.txt o simplemente Carta.txt.

1.3.3.

Estructura del sistema de archivos de Unix

Todo el sistema de archivos de Unix tiene un origen nico: la raz o root representada por
/. Bajo este directorio se encuentran todos los ficheros a los que puede acceder el sistema
operativo. Estos ficheros se organizan en distintos directorios cuya misin y nombre son
estndar para todos los sistemas Unix. Entre otros se pueden destacar:
/ Raz del sistema de archivos.
/dev Contiene ficheros del sistema representando los dispositivos que estn fsicamente instalados en el ordenador.
/etc Este directorio esta reservado para los ficheros de configuracin del sistema.
En este directorio no debe aparecer ningn fichero binario (programas).
/lib Contiene las libreras necesarias para que se ejecuten los programas que
residen en /bin (no las libreras de los programas de los usuarios).
/proc Contiene ficheros especiales que o bien reciben o envan informacin al
kernel del sistema (se recomienda no modificar el contenido de este directorio y sus
ficheros).
/sbin Contiene programas que son nicamente accesibles al superusuario o root.
/usr Este es uno de los directorios ms importantes del sistema puesto que contiene los programas de uso comn para todos los usuarios.
/var Este directorio contiene informacin temporal de los programas (lo cual no
implica que se pueda borrar su contenido, de hecho, no se debe hacer!).

1.3.4.

CAPTULO 1. INTRODUCCIN A UNIX

El directorio $HOME

El directorio $HOME es el directorio personal que tiene asignado a un usuario. Cada


usuario tiene su propio directorio personal o $HOME. Generalmente el nombre coincide
con el del login de usuario, (aunque puede no ser as). Cada usuario de Unix(Linux) puede
crear una estructura en rbol de subdirectorios y archivos tan compleja como desee bajo
su directorio personal pero normalmente nunca fuera de l. Al conectarse al sistema Unix,
automticamente cada usuario se conecta a su directorio $HOME.

1.3.5.

Permisos

Unix, mantiene un sistema de permisos de acceso a los ficheros muy estricto, a fin de
controlar qu es lo que se puede hacer con ellos, y quin lo puede hacer. Estos permisos se
identifican con letras y son:
r permiso de lectura el fichero.
w permiso de escritura en el fichero.
x permiso de ejecucin del fichero.
Al contrario que en Windows o MS-DOS los programas ejecutables de Unix no estn
marcados por una determinada extensin (.exe) sino por un atributo, el permiso de ejecucin x. Si se elimina este atributo a un programa, Unix no ser capaz de ejecutarlo.
A su vez cada uno de estos permisos se aplica: al dueo del fichero (u), al grupo de
usuarios al que pertenece el dueo (g), al resto de usuarios (o). As un fichero determinado
puede tener permiso para ser ledo, escrito y ejecutado por su dueo, ledo y ejecutado por
el grupo al que pertenece y no tener ningn tipo de acceso para los dems usuarios. Como
se puede entender este tipo de mecanismo es especialmente til cuando se trabaja en grupo
en un determinado proyecto.

1.4.

Comandos bsicos de Unix

Existen una serie de nociones bsicas que hay que tener en cuenta a la hora de introducir
los comandos. En primer lugar citaremos las siguientes:
Los comandos hay que teclearlos exactamente.
Las letras maysculas y minsculas se consideran como diferentes.
En su forma ms habitual (los shells de Bourne o de Korn), el sistema operativo utiliza
un signo de $ como prompt para indicar que est preparado para aceptar comandos,
aunque este carcter puede ser fcilmente sustituido por otro u otros elegidos por
el usuario. En el caso de que el usuario acceda como administrador este signo se
sustituye por #.

1.4. COMANDOS BSICOS DE UNIX

1.4.1.

Algunos comandos sencillos de Unix

A continuacin se describen algunos comandos sencillos de que pueden ser tiles para
familiarizarse con los comandos del sistema.
date Muestra por pantalla el da y la hora.
cal 1949 Muestra el calendario del ao 1949.
cal 5 1949 Muestra el calendario de mayo de 1949.
who Indica qu usuarios tiene el ordenador en ese momento, en qu terminal estn
y desde qu hora.
whoami Indica cul es la terminal y la sesin en la que se est trabajando.
man [comando] Todos los manuales de Unix estn dentro del propio sistema
operativo, y este comando permite acceder a la informacin correspondiente al comando comando. Por ejemplo con man who aparecer por pantalla y de forma formateada por pginas, la explicacin del comando who. Se puede navegar a travs de
estas pginas con los cursores del teclado, la barra espaciadora avanza una pgina, el
retorno de carro avanza una lnea y presionando la tecla q se sale.
clear Este comando limpia la consola ("borra la pantalla").

1.4.2.

Listado del contenido de directorios: comando ls

Una de las acciones ms habituales a la hora de trabajar es mostrar el contenido de un


directorio, para ello el shell incluye un programa para este fin: ls. Si tecleamos:
ls Se muestran los nombres de los ficheros y subdirectorios contenidos en el
directorio en el que se est. Slo se obtienen los nombres de los ficheros, sin ninguna
otra informacin.
ls -a Se muestran todos los ficheros incluyendo algunos que ordinariamente
estn ocultos para el usuario (aquellos que comienzan por un punto). Se recuerda que
el fichero punto . indica el directorio actual y el doble punto .. el directorio padre,
que contiene, al actual.
ls -l Esta es la opcin de lista larga: muestra toda la informacin de cada fichero
incluyendo: protecciones, tamao y fecha de creacin o del ltimo cambio introducido,...
ls -c Se muestra ordenando por da y hora de creacin.
ls -t Se muestra ordenando por da y hora de modificacin.
ls -r Se muestra el directorio y lo ordena en orden inverso.
ls [subdir] Se muestra el contenido del subdirectorio subdir.
ls -l [filename] Se muestra toda la informacin sobre el fichero filename.

CAPTULO 1. INTRODUCCIN A UNIX

Las opciones anteriores pueden combinarse. Por ejemplo: ls -la muestra el contenido del directorio en formato largo incluyendo los ficheros ocultos.
El comando ls admite los caracteres de sustitucin o metacarcteres * y ?. El carcter *
representa cualquier conjunto o secuencia de caracteres. El carcter ? representa cualquier
carcter, pero slo uno. Por ejemplo: ls *.gif muestra todos los nombres de ficheros
que acaben en .gif, por ejemplo dib1.gif, a.gif, etc. . . ls file? muestra todos
los ficheros cuyos nombres empiecen por file y tengan un nombre de cinco caracteres,
por ejemplo: file1, file2, fileA, etc. . .

1.4.3.

Creacin de subdirectorios: comando mkdir

El comando mkdir make directory permite a cada usuario crear un nuevo subdirectorio, su forma es:
mkdir [subdir]
En donde subdir es el nombre o camino del directorio que se va a crear.

1.4.4.

Borrado de subdirectorios: comando rmdir

Este comando borra uno o ms directorios del sistema remove directory, siempre
que estos subdirectorios estn vacos. Su forma es:
rmdir [subdir]
En donde subdir es el nombre o camino del directorio que se desea a eliminar.

1.4.5.

Cambio de directorio: comando cd

Este comando permite cambiar de directorio change directory a partir del directorio
actual de trabajo. Su forma es:
cd [dir]
Como resultado nos traslada al subdirectorio dir (que deber de existir como subdirectorio
en el directorio actual). O dicho con otras palabras, pasamos del directorio actual de trabajo
al directorio indicado, siendo este ahora nuestro nuevo directorio de trabajo.
Si tecleamos cd .. retrocedemos un nivel en la jerarqua de directorios. Nota: al contrario que en MS-DOS en Unix no existe la forma cd.. sin espacio entre el comando cd
y los dos puntos.
Si se teclea cd sin ms nos situaremos nuevamente en el directorio $HOME del usuario.

1.4.6.

Situacin actual: comando pwd

El comando pwd print working directory visualiza o imprime el camino absoluto


del directorio en el que nos encontramos en este momento. Este comando es uno de los
pocos que no tiene opciones y se utiliza escribiendo simplemente pwd.

1.4. COMANDOS BSICOS DE UNIX

1.4.7.

Copia de ficheros: comando cp

Este comando tiene la siguiente forma:


cp file1 file2
y hace una copia de file1 y le llama file2. Si file2 no exista, lo crea con los mismos
atributos de file1. Si file2 exista antes, su contenido queda destruido y es sustituido
por el de file1. El fichero file2 estar en el mismo directorio que file1. Tanto file1
como file2 indican el nombre de un archivo, que puede incluir el camino al mismo si
alguno de ellos no se encuentra en el directorio actual.

1.4.8.

Mover o cambio de nombre de ficheros: comando mv

Este comando tiene una forma similar al anterior:


mv file1 file2
y realiza la misma funcin que el anterior cp pero adems destruye el fichero original.
En definitiva traslada el contenido de file1 a file2. A efectos del usuario lo que ha
hecho es cambiar el nombre a file1, llamndole file2. El comando
mv namedir1 namedir2
cambia el nombre del subdirectorio namedir1 por namedir2. Hay que recalcar que el
comando mv sirve as mismo para cambiar el nombre de los ficheros.

1.4.9.

Borrado de ficheros: comando rm

Este comando tiene la forma:


rm file1 file2 ...
y elimina uno o ms ficheros de un directorio en el cual tengamos permiso de escritura. Con
este comando resulta facilsimo borrar ficheros intiles, y desgraciadamente, tambin los
tiles. Por eso es conveniente y casi imprescindible emplear la opcin -i, de la siguiente
manera:
rm -i file1 file2 ...
Con esta opcin, Unix pedir confirmacin para borrar cada fichero de la lista, de si
realmente se desea su destruccin o no. Se recomienda usar siempre este comando con esta
opcin para evitar el borrado de ficheros tiles. Por ejemplo, si se teclea:
rm -i antiguo
aparecer en pantalla un aviso del estilo a:
remove antiguo?
y habr que contestar y (yes) o n (not). En este comando se pueden utilizar los caracteres
de sustitucin (* y ?), como por ejemplo, rm fich* que borrara todos los ficheros del
directorio actual que comiencen por la cadena fich. El comando rm * borrar todos los
ficheros del directorio actual, mientras que rm -i * realiza una labor anloga, pero con
confirmacin previa.

10

CAPTULO 1. INTRODUCCIN A UNIX

1.4.10.

Cambio de modo de los ficheros: comando chmod

Los permisos de cada fichero se pueden ver con el comando ls -l. Para cambiar los
permisos de un fichero (o directorio) se emplea el comando chmod, que tiene la forma:
chmod [quien][oper][permiso] [fichero][directorio]
en donde
quien indica a quien afecta el permiso que se desea cambiar. Es una combinacin
cualquiera de las letras u para el usuario, g para el grupo del usuario, o para los otros
usuarios, y a para todos los anteriores. Si no se da el quien, el sistema supone a.
oper indica la operacin que se desea hacer con el permiso. Para dar un permiso se
pondr un +, y para quitarlo se pondr un -.
permiso indica el permiso que se quiere dar o quitar. Ser una combinacin cualquiera
de las letras anteriores: r, w y x.
files es una lista de los nombres de los ficheros cuyos modos de acceso se quieren
cambiar.
Por ejemplo, para quitar el permiso de lectura a los usuarios de un fichero el comando
es chmod ugo -r fichero.txt
Los permisos de lectura, escritura y ejecucin tienen un significado diferente cuando se
aplican a directorios y no a ficheros normales. En el caso de los directorios el permiso r
significa la posibilidad de ver el contenido del directorio con el comando ls; el permiso w
da la posibilidad de crear y borrar ficheros en ese directorio, y el permiso x autoriza a buscar
y utilizar un fichero concreto.

1.4.11.

Visualizacin sin formato de un fichero: comando cat

Este comando permite visualizar el contenido de uno o ms ficheros de forma no formateada. Algunas formas de utilizar este comando son las siguientes:
cat filename saca por pantalla el contenido del fichero filename.
cat file1 file2... saca por pantalla, secuencialmente y segn el orden especificado, el contenido de los ficheros indicados.

1.4.12.

Visualizacin de ficheros pantalla a pantalla: comando more

Este comando permite visualizar un fichero pantalla a pantalla. El nmero de lneas por
pantalla es de 23 lneas de texto y una ltima lnea de mensajes, donde aparecer la palabra
"more". Cuando se pulsa la barra espaciadora (el espacio en blanco), se visualizar la siguiente pantalla. Para salir de este comando (terminar la visualizacin) se pulsa <ctrl> d
q. Por ejemplo: more file

1.5. COMANDOS FUNDAMENTALES DEL EDITOR VI

1.5.

11

Comandos fundamentales del editor vi

El editor de textos vi dispone de muchos otros comandos que nos permiten modificar
un fichero de texto previamente creado. En esta seccin mostraremos slo un resumen de
ellos.
Todos los comandos deben ser activados desde el modo comando. Como vimos anteriormente para pasar al modo comando debemos pulsar la tecla esc Por supuesto si ya
estamos en este modo no es necesario hacerlo, pero ello no produce ningn error, de modo
que ante la duda es preferible teclear siempre esc seguido del comando o comandos que
deseamos ejecutar.
Movimiento del cursor.
Desplazar el cursor.
nG
Ir a la lnea n.
$
Ir al final de la lnea.

i
a
A
o
O

Insercin de texto.
Inserta texto delante del cursor
Inserta texto tras el cursor
Aade texto al final de la lnea actual
Crea una nueva lnea sobre la actual y queda en modo de insercin
Crea una nueva lnea bajo la actual y queda en modo de insercin

x
dd
dw

:w
:q
:q!
:wq

<Ctrl>l
<Ctrl>g

Borrado de texto.
Borra el carcter donde est el cursor
Borra la linea donde est el cursor
Borra la palabra donde est el cursor

Salida del editor.


Escribe en el disco el contenido actual del fichero
Abandona el editor (solicitando confirmacin de grabado)
Abandona el editor (fuerza al editor a salir sin grabar)
Abandona el editor tras grabar
Otros comandos.
Refresca la pantalla
Informa sobre el nmero de linea actual y nombre del fichero

Gran parte de los comandos de vi admiten la repeticin. As por ejemplo si deseamos


borrar 10 espacios el comando se escribe como 10x. Esto puede crear problemas si, por
ejemplo, tecleamos inadvertidamente un nmero, digamos 100, seguido del comando i y
procedemos a insertar un texto en el fichero. Al salir del modo de insercin todo el
proceso se repetir 100 veces!

12

1.6.

CAPTULO 1. INTRODUCCIN A UNIX

Y despus qu?

El objetivo de las prcticas no es el aprendizaje del sistema operativo U NIX TM , pero es


evidente que el manejo con soltura del sistema nos permitir resolver las prcticas de un
modo ms rpido y cmodo.
El captulo 9 y el apndice C del libro
Llanos Ferraris, Diego.
Curso de C bajo UNIX.
International Thompson Learning. Paraninfo, Madrid, 2001.
contienen la informacin suficiente para adquirir esta soltura. En el mercado pueden
encontrarse manuales U NIX TM ms especficos y detallados, como
Abrahams, P.W. Larson, B.A..
U NIX TM para impacientes..
Ed. Addison-Wesley Ib. 1994.
Amir Azfal.
Introduccin al U NIX TM : un enfoque prctico..
Ed. Prentice Hall, 1997.
Kernighan, B.W. Pike, B..
El entorno de programacin U NIX TM .
Ed. Prentice Hall, 1987.
Morgan, R. McGilton, H..
Introduccin al U NIX TM Sistema V.
Ed. McGraw-Hill, 1989.

1.6.1.

Obtener ms informacin con el manual del sistema

El comando man nos ofrece informacin relativa a los comandos o programas instalados
en el sistema. As
man ls
nos brinda informacin sobre el funcionamiento y opciones de ls mientras
man -k ls
nos ofrece una pequea descripcin de todos los comandos relacionados con ls.
En todo caso practicar y consultar con los profesores de prcticas cualquier duda que se
plantee al respecto.

Captulo 2

Guin de prcticas
2.1.

Entrando al sistema

En primer lugar deberemos encender el ordenador y el monitor (los interruptores aparecen claramente identificados en el frontal del equipo).
Aparecer una pantalla negra con un rectngulo azul, dentro del cual se puede leer:
Windows NT/2000/XP
Debian Gnu/Linux, kernel 2.4.27-1-386
Debian Gnu/Linux, kernel 2.4.27-1-386 (recovery mode)
Other operating systems
Seleccionad con las teclas del cursor () la opcin:
Debian Gnu/Linux, kernel 2.4.27-1-386
y pulsad la tecla INTRO.

Tras una serie de mensajes del sistema operativo LINUX, se muestra una pantalla con
una flor (o bien una ventana con la palabra DEBIAN) y un campo en blanco donde poner el
nombre del usuario ( ver figura 2.1).

13

14

CAPTULO 2. GUIN DE PRCTICAS

Figura 2.1: Pantalla de inicio a Linux

El nombre del usuario es usuario, pulsad return . Ahora, en el campo de contrasea


escribid usuario y volved a pulsar return .

Lo que vais a ver a continuacin es el Escritorio de Linux( ver figura 2.2).

Figura 2.2: El escritorio de Linux

Debis encontrar un icono llamado TERMINAL. Para ello, buscad en la parte inferior
del escritorio una barra de tareas, pulsad sobre el icono que parece un ratn (ver figura 2.3)
y en la parte superior de la barra que aparecer, pulsad sobre el icono de Terminal.
Esto va a abrir una ventana terminal desde la que vamos a poder conectarnos a saturno.
Podis abrir tantas ventanas terminal como queris.

2.2.

Conexin

El equipo utilizado en estas prcticas se llama saturno y su nombre en Internet es


saturno.dcs.eup.uva.es y su direccin en Internet es 157.88.67.180. Para
conectar con l, hay que escribir dentro del terminal el comando ssh seguido de vuestro
nombre de usuario, el smbolo @ y saturno.dcs.eup.uva.es y pulsando seguidamente return .

2.3. DESCONEXIN

15

Figura 2.3: El icono de Inicio en Linux

ssh ITIE548@saturno.dcs.eup.uva.es

Figura 2.4: Mensaje de acceso a la mquina


ITIE548@saturno.dcs.eup.uva.ess password:
[ITIE548@saturno ITIE548]$

A continuacin aparecer una pantalla similar a la recogida en la figura 2.4. Es la pantalla de conexin con el sistema, en la que nos tendremos que identificar como usuarios.
La identificacin de un usuario ante el sistema se realiza mediante dos palabras, nombre de
usuario (login) y contrasea (password), que previamente nos habr proporcionado el administrador del sistema.
Teclearemos entonces nuestro login y return , y a continuacin nuestro password y
return . Por motivos de seguridad al teclear el password no lo vemos reflejado en pantalla.
Tanto si el login es incorrecto como si el error se produce en el password, el sistema
contestar:
Login incorrect
y volver a solicitarnos ambos datos. En caso contrario acabamos de entrar en saturno.
A partir de este momento saturnoespera a que tecleemos un comando terminado por
return para ejecutarlo.

2.3.

Desconexin

Al terminar la sesin de trabajo deberemos abandonar el sistema. El comando que permite hacerlo es
exit
Volved a pulsar sobre el icono del ratn en la barra de tareas

16

CAPTULO 2. GUIN DE PRCTICAS

2.4.

Transferencia de ficheros

La transferencia de ficheros nos permite copiar archivos de una mquina remota a una
mquina local y viceversa. Dado que las prcticas las vamos a realizar en una mquina remota (saturno), ser imprescindible realizar transferencias de ficheros con dicha mquina.
Para realizar la transferencia de ficheros emplearemos el programa psftp, que implementa el protocolo SFTP. Al arrancar el programa, deberemos indicar a qu mquina
queremos conectarnos, as como el login y el password, segn se observa en la figura 2.5.
Figura 2.5: Transferencia de ficheros
psftp: no hostname specified; use "open host.name" to connect
psftp> open saturno.dcs.eup.uva.es
login as: user124
Using username "user124".
user124@saturnos password:
Remote working directory is /users/alumnos/user124
psftp>

Los comandos ms importantes son los siguientes:


open: abre la conexin con una mquina remota.
cd: cambia el directorio de trabajo en la mquina remota.
dir: lista los contenidos del directorio de trabajo de la mquina remota.
get: descarga un fichero de la mquina remota a la mquina local.
put: copia un fichero de la mquina local a la mquina remota.
bye: finaliza la conexin SFTP.

2.5.

Ejercicios de manejo de ficheros y directorios

Este apartado presenta una serie de ejercicios prcticos que se deben realizar de forma
secuencial. Los ejercicios se deben resolver en el ordenador. Cuando obtenga la solucin
correcta, escrbela en el espacio habilitado a tal efecto.
1.- Cree un subdirectorio que se llame ejerciciosUNIX en su directorio personal.
Comando _____________________________________________
2.- Cree otro subdirectorio que se llame documentos en su directorio personal.
Comando _____________________________________________

2.5. EJERCICIOS DE MANEJO DE FICHEROS Y DIRECTORIOS

17

3.- Copie los ficheros que comienzan por carta y que se encuentran en el directorio
/docencia/ITT en el subdirectorio documentos
Comando _____________________________________________
4.- Copie los ficheros que terminan por .txt y que se encuentran en el directorio /docencia/ITT
en el subdirectorio ejerciciosUNIX
Comando _____________________________________________
5.- Compruebe su situacin actual.
Comando _____________________________________________
6.- Entre en el subdirectorio ejerciciosUNIX
Comando _____________________________________________
7.- Vuelva a comprobar su situacin actual.
Comando _____________________________________________
8.- Visualice el contenido del directorio, de forma que slo aparezcan los nombre de los
ficheros.
Comando _____________________________________________
9.- Vuelva a visualizar el contenido del directorio, pero esta vez deben de aparecer los
nombres de los ficheros, sus permisos, fechas,. . . (formato largo).
Comando _____________________________________________
10.- Borre el fichero ej1.txt de tal forma que se confirme el borrado del mismo.
Comando _____________________________________________
11.- Elimine todos los permisos de escritura del fichero ej2.txt
Comando _____________________________________________
12.- Visualice el contenido del directorio en formato largo y compruebe que se han denegado dichos permisos.
Comando _____________________________________________
13.- Intente eliminar el fichero ej2.txt, Unix debe permitir que lo borre.

18

CAPTULO 2. GUIN DE PRCTICAS

Comando _____________________________________________
14.- Elimine los permisos de escritura y de ejecucin del directorio ejerciciosUnix
Comando _____________________________________________
15.- Intente eliminar el fichero ej2.txt, UNIX le permite borrarlo ?.
Comando _____________________________________________
16.- Otorgue el permiso de escritura de usuario al fichero ej2.txt
Comando _____________________________________________
17.- Borre el fichero ej2.txt confirmando el borrado del mismo.
Comando _____________________________________________
18.- Regrese a su directorio personal.
Comando _____________________________________________
19.- Intente eliminar el subdirectorio ejerciciosUNIX, Unix no le permitir borrarlo
porque no est vaco.
Comando _____________________________________________
20.- Elimine el fichero ej3.txt que se encuentra en el subdirectorio ejerciciosUNIX
sin cambiar de directorio.
Comando _____________________________________________
21.- Elimine ahora el subdirectorio ejerciciosUNIX
Comando _____________________________________________
22.- Visualice el contenido del subdirectorio documentos sin entrar a l y en formato
largo.
Comando _____________________________________________
23.- Elimine el fichero carta1 que se encuentra en el subdirectorio documentos sin
entrar a dicho subdirectorio.
Comando _____________________________________________

2.6. EJERCICIOS DE TRANSFERENCIA DE FICHEROS

19

24.- Cambie el nombre del fichero carta2 que se encuentra en el subdirectorio documentos
sin entrar a dicho subdirectorio. El nuevo nombre que debe dar al fichero ser nueva_carta
Comando _____________________________________________
25.- Mueva el fichero nueva_carta a su directorio de trabajo donde se debe de encontrar ahora sin entrar a dicho subdirectorio.
Comando _____________________________________________
26.- Elimine, previa confirmacin, el fichero nueva_carta
Comando _____________________________________________
27.- Visualice sin ningn formato especial el contenido de fichero carta3 que se
encuentra en el subdirectorio documentos sin entrar a dicho subdirectorio.
Comando _____________________________________________
28.- Visualice pantalla a pantalla el contenido del fichero carta3 que se encuentra en el
subdirectorio documentos sin entrar a dicho subdirectorio.
Comando _____________________________________________
29.- Borre el archivo carta3 que se encuentra en el subdirectorio documentos sin
entrar a dicho subdirectorio.
Comando _____________________________________________
30.- Elimine el subdirectorio documentos
Comando _____________________________________________
31.- Salga del sistema.
Comando _____________________________________________

2.6.

Ejercicios de transferencia de ficheros

1.- Empleando el programa Bloc de Notas (notepad) de Windows cree un fichero llamado
ejemplo1.txt con el siguiente contenido:
#include <stdio.h>
main() {
printf("Hola Mundo\n");
}

20

CAPTULO 2. GUIN DE PRCTICAS

2.- Transfiera ese fichero a su directorio personal de la mquina saturno.


Comando _____________________________________________
3.- Cree una copia del fichero con el nombre ejemplo2.txt.
Comando _____________________________________________
4.- Empleando vi, modifique el fichero ejemplo2.txt, de modo que el contenido sea
el siguiente:
#include <stdio.h>
main() {
printf("Hola Mundo\n");
printf("Esto es un programa en C\n");
printf("Adios!!\n");
}
5.- Transfiera el fichero ejemplo2.txt a la mquina local.
Comando _____________________________________________
6.- Compruebe mediante el bloc de notas que el contenido de dicho fichero es el esperado.

2.7.

Escribiendo el primer programa.

Para ejecutar un programa C primero debemos almacenarlo en el disco de saturnoy,


para ello, debemos utilizar un procesador de textos, en nuestro caso vi.
Para activar vi deberemos escribir
vi fichero
en nuestro caso:
vi primero.c
obteniendo en pantalla algo como lo recogido en la figura 2.6. Esto quiere decir que
el editor vi est activo y que podemos comenzar a escribir nuestro programa. Para ello
tecleamos i, que no aparecer en pantalla, y comenzamos a copiar textualmente el contenido de la figura 2.7 utilizando return para saltar de una linea a otra.
Para terminar la edicin basta teclear esc seguido de :wq
El editor vi tiene dos modos de trabajo: el modo comando, en el que estamos al comenzar la edicin, y el modo de insercin1 , al que hemos pasado mediante el comando i. Al
pulsar esc regresamos del modo de insercin al modo comando con lo que podemos utilizar comandos como los recogidos en la seccin 1.5 .
Hay que sealar que el vi no reconoce las teclas especiales de borrado, insercin,. . . de
nuestro teclado, pero s las teclas de direccin (flechas), . . . , siempre que estemos en el
modo comando.
1

llamado edicin en algunos textos

2.8. EJECUTANDO EL PRIMER PROGRAMA.

21

Figura 2.6: Fichero vaco


~
~
~
~
~
~
~
~
~
~
~
~
~
~
~ "primero.c" [New File]

Figura 2.7: Primer programa en C


#include <stdio.h>
main() {
printf ("Hola! \n");
}

2.8.

Ejecutando el primer programa.

Podemos comprobar si la edicin del programa descrita en el apartado anterior ha sido


correcta mediante el comando
ls
que da una lista de los ficheros que tenemos en el directorio actual. En este caso deber
aparecer un nico elemento en la lista, el recin creado primero.c.
Para compilar el fichero utilizaremos el comando
gcc fichero
que activa el compilador de C, en nuestro caso gcc primero.c.
Si no obtenemos ningn mensaje como respuesta hemos conseguido compilar correctamente nuestro primer programa. Si lo recibimos, habremos cometido algn error al teclear

22

CAPTULO 2. GUIN DE PRCTICAS

Anlisis

Diseo

Traduccin a cdigo C

Error en el tratamiento

Error en tiempo

de los datos

de compilacin

Pruebas de ejecucin
a.out

Compilacin
cc

Transcripcin
al ordenador
vi

Error en tiempo
de ejecucin

Enlace

Compilacin

Preproceso

Figura 2.8: Desarrollo de programas.


el comando2 o al crear el programa. En este caso deberemos volver a editar el programa
como se describe en las secciones 1.5 y 2.7.
El comando ls nos permitir comprobar que hemos creado un nuevo fichero, a.out,
que contiene el cdigo ejecutable de nuestro programa. Para ejecutar el programa teclearemos el nombre del fichero que lo contiene, ./a.out en nuestro caso, y veremos en pantalla
el resultado3 .

2.9.

Desarrollo

La figura 2.84 muestra el esquema de trabajo que debe seguirse en el desarrollo de


programas C en entorno Unix.
Ejercicio 1 (Preparacin) Crea un directorio para trabajar con este guin (por ejemplo,
Dia1). Establcelo como directorio de trabajo (cd ...). Copia en l todos los archivos
con extensin .c del directorio /docencia/ITT .

2.9.1.

Esquema general

Mediante la orden vi nombre-de-fichero.c se edita el programa, consiguiendo el texto


en C, en lo que denominamos programa fuente.
2

El ms estpido de ellos es olvidar aadir .c al final del nombre del fichero


No es gran cosa, es cierto, pero slo es el primer programa.
4
Llanos Ferraris, Diego, Curso de C bajo Unix, International Thomson Learning. Paraninfo, Madrid, 2001
3

2.10. ERRORES

23

La orden gcc nombre-de-fichero.c realizar la compilacin.


Ejercicio 2

1.- Edita (con vi), o utiliza more o cat para ver el contenido de hola.c.

2.- Complalo. (gcc hola.c) (Con la opcin -v, se podr ver la evolucin del proceso).
3.- Cul es el tamao de hola.c? Y el de a.out?
4.- Ejectalo (./a.out)
Cuando sea necesario conservar un ejecutable, puede renombrarse a.out (mv) o, directamente, indicar al compilador que le d un nombre concreto mediante la opcin -o
nombre_del_ejecutable. As
gcc -o cospi cospi.c -lm

2.9.2.

Ejecucin

El programa finalmente se ejecuta, como se ha visto, simplemente escribiendo el nombre


del ejecutable. Entonces se leern las entradas y el programa proporcionar las salidas. Por
defecto, las entradas se suponen de teclado, y las salidas se proporcionan por pantalla, pero
en ocasiones es conveniente enviar la salida a otro dispositivo. Esto es lo que se conoce
como redireccin. Por ejemplo:
./a.out >salida.txt
har que la salida que antes obtenamos en la pantalla se escriba en un nuevo fichero
editable salida.txt
mientras que
./a.out >> salida.txt
aadir la salida de a.out al final de salida.txt
Ejercicio 3 Comprueba el resultado de la redireccin. Es decir, edita el fichero salida.txt.
Qu ha pasado?

2.10.

Errores

Durante todo el proceso pueden cometerse errores. Los errores de edicin, como errores
al pulsar teclas, son responsabilidad del editor, y se advierten durante este proceso. Nos
ocuparemos ahora de los errores de fases posteriores, es decir los que se producen en la
fase de compilacin, o los que se detectan en la fase de pruebas, que pueden ser debidos a
diferentes razones.
Ejercicio 4
Lee el fichero media1.c. Sin modificarlo, complalo. Observa el mensaje de error.
En qu fase se ha producido el error? En qu lnea est? Corrgelo.
Compila nuevamente. Observa el resultado. Cuntos errores se detectan? Corrige
el primero de ellos.

24

CAPTULO 2. GUIN DE PRCTICAS

Compila otra vez. Corrige el ltimo error (el de la B. Como sabes, para C, las minsculas y maysculas son distintas, as que B est sin definir. Se debi escribir b.
Compila. Cuntos errores?. Corrige.
Qu fase detect estos ltimos errores?
Finalmente el programa es sintcticamente correcto. Compila y ejectalo. Calcula
bien la media?. Qu tipo de error se produce ahora? Quin puede detectarlo?
Con frecuencia, el proceso de localizacin e interpretacin de errores es complicado. A
veces ello se debe a que un error que se produce en determinado lugar del cdigo, o del
proceso, no se detecta hasta un lugar o un momento posterior.
Ejercicio 5 Compila pi.c. Observa dnde se ha detectado el error. Puedes explicarlo?.
Tambin es frecuente que un error, quizs simple, produzca como consecuencia una
serie de errores en cascada.
Otra razn que puede dificultar el proceso de localizacin de errores es que el texto del
programa sea difcil de leer.
Ejercicio 6
Copia y compila media2.c
Mira el programa fuente. (vi cat)
No es fcil de ver. Ejecuta cb media2.c (cb quiere decir C beautifier y
admite algunas opciones. Muestra el resultado por pantalla, de modo que a lo mejor
resulta ms cmodo redireccionar su salida).
Corrige el primer error y vuelve a compilar. Qu ha pasado con los dems?
cb puede ser una ayuda, pero no debe sustituir a la buena escritura de programas.
Los mensajes de error que proporciona el compilador pueden ser de dos tipos: errores
propiamente dichos (errors) o avisos (warnings). En el segundo caso, se crear el fichero
ejecutable, pero avisando de que hay algo poco recomendable . Conviene prestar atencin
tambin a los avisos.
Ejercicio 7
Compila media3.c
Haciendo caso omiso del aviso, ejecuta el resultado (a.out)
Corrige el error. Ya haba aparecido antes algo parecido.
Tambin puede ocurrir que un error no llegue a detectarse, porque lo compiladores no
siempre son suficientemente listos. Por ejemplo, en el programa del siguiente ejercicio,
algunos compiladores detectaran el error, pero ste no es capaz.

2.10. ERRORES

25

Ejercicio 8 Compila y ejecuta media4.c. Por qu se produce el error? Corrgelo.


Veamos an otro error que no detecta el compilador, porque es un error de diseo.
Ejercicio 9 Compila, ejecuta y corrige media5.c.
Todava usaremos el clculo de la media para para practicar un poco.
Ejercicio 10 Compila, etc. media6.c y media7.c.
Con programas algo mayores, es frecuente que el informe de errores exceda el tamao
de la pantalla. En este caso, habr que redireccionar o filtrar, no la salida del compilador,
sino la salida de error, que se enva al dispositivo 2, por ejemplo escribiendo la orden
gcc media6.c 2>errores.txt
que generar el nuevo fichero errores.txt donde se almacenar toda la informacin
suministrada, y se podr estudiar con detalle.
Finalmente, existen errores de ejecucin. Ocurren cuando, durante la ejecucin, el proceso no puede continuar. Se genera entonces un fichero core que ser necesario borrar.
Ejercicio 11 El programa media8.c quiere calcular la media de tres enteros ledos por
teclado. Comprueba y corrige.
En esta prctica se ha pretendido ayudar a entender el proceso de compilacin y las
muchas posibilidades de errores que pueden producirse a lo largo de todo el proceso.
La forma de desarrollar programas confiables requiere realizar cada fase de las del dibujo inicial cuidadosamente. En primer lugar un anlisis y diseo slidos, acompaados de
una batera de pruebas para realizar con el producto final.
Durante el desarrollo puede ser til insertar en el cdigo sentencias que muestren variables intermedias para poder seguir el proceso en sus partes ms complejas, especialmente
cuando hay bucles, y eliminar estas sentencias cuando el programa est depurado. Adems,
en el caso de escribir un bucle infinito, la insercin de estas sentencias permitir detener la
ejecucin, pulsando la combinacin <ctrl>C.
Para la bsqueda de errores en tiempo de compilacin existen algunas reglas muy tiles:
No modificar nunca el programa sin reflexionar sobre las causas del error, ni ensayar
soluciones arbitrarias.
Leer el mensaje de error.
Leer el mensaje de error. (Esta lnea no es un error)
En resumen, conviene reflexionar en que, durante el desarrollo de un programa, puede
haber:
errores en el anlisis.
errores de diseo.
errores de codificacin.

26

CAPTULO 2. GUIN DE PRCTICAS

errores en la trascripcin (edicin).


errores de compilacin (preproceso, compilacin, enlace).
errores de ejecucin.
errores en el resultado.
y que estos errores no siempre se detectan en la fase en la que se cometen. La mejor defensa
contra los errores es la realizacin cuidadosa de cada fase y la depuracin de cada una de
ellas segn se va realizando.

2.10.1.

Soluciones drsticas

Un programa en ejecucin puede detenerse mediante la la combinacin de teclas <ctrl>C


.
La orden ps -u nombre-de-usuario muestra el estado de los procesos que est ejecutando un determinado usuario. En la columna PID se muestra el nmero del proceso.
El propietario puede eliminar el proceso de forma absoluta usando la orden kill -9
nmero-de-proceso. Por supuesto este mecanismo debe usarse con cuidado y slo cuando
sea imprescindible.

You might also like