Вы находитесь на странице: 1из 212

Introduccin a Linux

Version imprimible
Este documento deber servir exclusivamente como material de apoyo al contenido del curso interactivo accesible a travs de internet.

Indice
Presentacin............................................................... 2 Mdulo I. Introduccin................................................................. Introduccin................................................................ 3 Instalacin.................................................................. 4 Historia...................................................................... 7 Entornos de trabajo..................................................... 10 Distribuciones............................................................ 17 Mdulo II. rdenes comunes........................................................ Instrucciones habituales................................................ 22 Sintaxis de las rdenes................................................. 26 Sistema de ficheros..................................................... 32 Instrucciones de ficheros........................................................... Instrucciones de ficheros............................................... 38 Inspeccionar.............................................................. 39 Crear....................................................................... 45 Modificar...................................................................48 Borrar...................................................................... 48 Instrucciones de texto................................................... 49 Instrucciones tiles...................................................... 58 -- Nuevo clasificador --............................................................. Mdulo III. rdenes avanzadas..................................................... Redirecciones............................................................ 67 Concatenar rdenes.....................................................75 Uso de variables......................................................... 78

Plataforma de Teleformacin de IFES

Pgina 1 de 212

Introduccin a Linux

Uso de comillas.......................................................... 79 Estructuras de control................................................... 80 Editores de texto......................................................... 82 F.A.Q..................................................................................... Apndices (Conceptos bsicos)..................................................... Qu es un sistema operativo?....................................... 87 Qu es el software libre?............................................. 88 Por qu usar software libre?......................................... 90 Licencias de software libre............................................. 92 Internet y herramientas de red....................................... 144 Introduccin a MySQL................................................. 169 Grabacin de cds..................................................... 201 Programacin en Bash................................................ 205
Introduccin a Linux

Presentacin

Reciba la bienvenida al curso de Linux


Para aprender un sistema operativo como Linux es fundamental practicar mucho su uso. Normalmente, cuando alguien empieza a aprender Linux se encuentra con algunas aparentes dificultades (dnde est esto, cmo se accede a lo otro...) que pueden hacernos desmotivarmos. Afortunadamente, en nuestro curso contamos con un tutor que nos resolver cualquier duda y tenemos un foro donde podremos compartir experiencias con nuestros compaeros del curso. No dudes en preguntar al tutor o escribir en el foro. A continuacin le pedimos que rellene la ficha de datos personales. Despus debe descargar el recurso llamado "ejemplos" del curso. Es muy importante probarlo todo, hacer todos los ejercicios, modificarlos, probarlos, preguntar al tutor cualquier duda o comentar las impresiones en el foro.

Pgina 2 de 212

Introduccin a Linux

Introduccin a Linux

Mdulo I. Introduccin
Introduccin

Opciones, muchas opciones


Bajo el nombre Linux se encuentran muchas opciones que podemos elegir al usar nuestro ordenador. Podemos elegir el tipo de kernel, shell, entorno grfico, distribucin, programas de ofimtica, etc. No te preocupes si alguno de estos nombres no sabes qu son, puedes mirarlos en el glosario o ya los iremos aprendiendo poco a poco.

Vamos a aprender a manejar Linux mediante comandos de texto;tambin se puede hacer mediante el ratn con programas basados en ventanas (tenemos muchas opciones), pero el sistema de ventanas es muy parecido al de Windows o al de Macintosh y es muy sencillo aprenderlo por nuestra cuenta.

Pero si es tan sencillo el mtodo grfico,por qu vamos a utilizar el arcaico sistema de texto?
El sistema de trabajo basado en texto es arcaico y es ms difcil de aprender que el utilizar programas grficos, pero una vez que hemos aprendido podemos hacer ms cosas en menos tiempo que con el mtodo grfico.

Curva de aprendizaje
La curva de aprendizaje es un grfico que nos gusta mucho a los profesores; muestra cunto esfuerzo es necesario para lograr aprender a hacer algo.

Plataforma de Teleformacin de IFES

Pgina 3 de 212

Introduccin a Linux

En esta imagen podemos ver que cuando llevamos poco tiempo aprendiendo el entorno de texto, el resultado es muy pequeo, podemos hacer muy pocas cosas, y a nadie se le ocurre decirle a los amigos: "hoy he aprendido a borrar un archivo". Por el contrario,al poco tiempo de trabajar con un entorno grfico (Windows, Macintosh o Linux), ya podemos hacer lo fundamental y podemos poner en nuestro currculum "usuario avanzado". Lo que tambin se puede ver en la curva de aprendizaje es que cuando llevamos ms tiempo aprendiendo conseguimos hacer tareas que no se puede hacer en modo grfico. De todas maneras, como en Linux podemos elegir ,podemos usar al mismo tiempo rdenes de teclado y el sistema grfico, por lo que conseguimos unir lo mejor de ambos mundos, ser un Usuario avanzado y llegar a ser un Usuario experto. Todos los ejemplos de cdigo estn almacenados en un archivo en el recurso multimedia llamado "Ejemplos", al principio del temario. Descrgalo y descomprmelo con la orden tar xzvf ejemplos.tar.gz . Puedes ver el contenido de cualquiera de los ejemplos con la orden cat nombreDelArchivo , y puedes ejecutarlo con la orden sh nombreDelArchivo .

Pgina 4 de 212

Introduccin a Linux

Introduccin a Linux

Instalacin
Aprender a instalar en profundidad un sistema Linux no es un objetivo de este curso. Sin embargo,practicar las rdenes de Unix es fundamental para el aprendizaje de este curso, por esto vamos a dar unas pequeas nociones sobre cmo instalar Linux .

Conseguir una distribucin


El primer paso es conseguir una distribucin, una coleccin de programas que forman el sistema operativo y otros programas.

Comprar
Se puede comprar (que sean libres no significa que no se puedan vender, lo que no se puede hacer es limitar el derecho de copia), as que puedes ir a un distribuidor de informtica y comprar una distribucin grande;no son muy caras y vienen con manuales muy tiles.

Comprar una revista en el quiosco


En casi todas las revistas de Linux viene incluido un CD-ROM con una distribucin de Linux .

Descargarla de Internet
Tambin se pueden descargar los CD-ROMs de Internet y despus grabarlos. Aqu tenemos una lista de lugares donde se pueden descargar varias distribuciones: Mandriva , versin live y para instalar, en CD-ROMs o en DVD. Open Suse Tambin varias opciones. Fedora La distribucin libre de RedHat. Knoppix. La distribucin live original.

Que te la enven gratis a tu casa


La distribucin *Ubuntu* no slo dejan descargar y copiar sino que te la envan a casa pagando ellos el transporte!, les cuesta unas tres semanas.

Plataforma de Teleformacin de IFES

Pgina 5 de 212

Introduccin a Linux

Instalacin completa
La instalacin completa en disco duro es complicada porque normalmente querremos tener Linux y mantener Windows , y cuando instalamos Windows , este sistema operativo ocup todo el espacio en disco duro para l. Antes de instalar Linux en un ordenador que ya tiene Windows es necesario hacer una copia de seguridad de todos nuestros datos, los programas se pueden volver a instalar, pero las fotos digitales de las vacaciones pasadas no las podremos recuperar si se borran durante el proceso.

Las distribuciones modernas permiten instalar Linux en el espacio que no est utilizando Windows y normalmente no dan ningn problema, pero hacer copias de seguridad nunca est de ms. Una vez que est instalado el ordenador al arrancar nos preguntar con cul de los sistemas operativos queremos trabajar. Se lo indicamos con las teclas de las flechas arriba o abajo y la tecla enter cuando est seleccionada la opcin correcta.

Ejecucin live
Para ejecutar una distribucin live, es necesario decirle al ordenador que cuando arranque busque el sistema operativo en el CD-ROM, y si no hay ninguno que lo busque en el disco duro. El programa que se pone en marcha al encender el ordenador se le llama "la BIOS" y se puede acceder pulsando la tecla Supr en algunos ordenadores, en otros es con la tecla F1 y en otro es con la tecla F2. Este programa se maneja con las teclas de las flechas, la tecla enter para hacer cambios.

Pgina 6 de 212

Introduccin a Linux

Introduccin a Linux

El nico dato que nos interesa cambiar es la secuencia de arranque, (boot sequence). En esta secuencia van los dispositivos donde va a buscar el sistema operativo. Le pondremos como primera opcin el CD-ROM , para que si encuentra uno puesto, con sistema operativo, lance ste. Como segunda opcin pondremos el disco duro (HD) , para que cuando no queramos arrancar en Linux , saquemos el CD y el ordenador arranque con el sistema operativo que tenemos instalado.

Historia
Conocer un poco la Historia de estos sistemas operativos no es fundamental, pero nos aporta un poco de perspectiva para organizar algunos conceptos con los que trabajaremos en el curso.

Multics
Multics era un sistema operativo multiusuario y multiproceso (de ah le viene el

Plataforma de Teleformacin de IFES

Pgina 7 de 212

Introduccin a Linux

nombre) que se intent hacer en los laboratorios Bell a mediados de los aos 60 y que nunca lleg a funcionar.

Unix
Unos ingenieros, en su tiempo libre ,hicieron por su cuenta una versin reducida del sistema Multics y como chiste le llamaron Unix ,en contraposicin al sistema que no llegaron a hacer. En los aos siguientes varias empresas realizaron sus propias versiones de Unix como IBM, HP, Apple, Santa Cruz Operation o Digital para grandes ordenadores.

GNU

A mediados de los 80 surge el movimiento en apoyo del software libre con el proyecto GNU. GNU es una sigla recursiva y con un significado chocante; GNU es "GNU is Not Unix", en espaol "GNU No es Unix". Es un proyecto que intenta hacer un sistema que funcione como Unix pero volviendo a programar cada programa necesario para su funcionamiento. La mayor parte de las rdenes que vamos a ver en este curso las han hecho bajo el proyecto GNU.

Pgina 8 de 212

Introduccin a Linux

Introduccin a Linux

Linux

A principio de los aos 90 GNU tena preparados editores de caracteres, compiladores, intrpretes de comandos y otras utilidades necesarias para desarrollar un sistema operativo, pero el programa principal, el kernel, que se encarga de los usuarios, la ejecucin de los programas, su relacin con la memoria y los discos duros, se les retrasaba (en el ao 2006 todava no lo han terminado).Un estudiante finlands llamado Linus Torwalds program uno sin las especificaciones que se haban impuesto los desarrolladores de GNU, pero que funcionaba.

Plataforma de Teleformacin de IFES

Pgina 9 de 212

Introduccin a Linux

En 1992 Linus Torwald adopt la licencia GPL para el kernel: el ncleo ya era libre;a partir de este punto ,el crecimiento de este sistema en variedad y utilizacin est siendo exponencial.

Entornos de trabajo
En Linux tenemos la oportunidad de trabajar en modo texto (consola) o en modo grfico (con ventanas), as podremos elegir un mtodo u otro y poder cambiar cuando queramos.

Entornos de consola
El entorno de consola no es MS-DOS. El entorno de consola de Unix es mucho ms rico y poderoso.

Dentro del entorno de consola tambin podemos elegir entre varios sistemas, aunque el ms utilizado y el que vamos a estudiar en este curso es el shell llamado Bash.

Pgina 10 de 212

Introduccin a Linux

Introduccin a Linux

Maneras en las que se puede utilizar el entorno de consola: Sistemas Linux sin entorno grfico. Instalando Cygwin en ordenadores con Windows . Utilizando un programa emulador de consola en Linux con sistemas grficos podemos poner en marcha varios programas que nos ponen una consola en una ventana, (Konsole , xterm , Gnome-Term , etc). Pulsando la tecla F1 (o F2 ... F5) mientras mantenemos pulsadas las teclas Control y Alt. En este caso siempre podemos volver al modo grfico pulsando Control + Alt + F7.

Entornos grficos
En Linux , tenemos multitud de entornos de trabajo grficos WindowMaker Blackbox IceWM XFCE Gnome KDE

WindowMaker

Plataforma de Teleformacin de IFES

Pgina 11 de 212

Introduccin a Linux

BlackBox

Pgina 12 de 212

Introduccin a Linux

Introduccin a Linux

WindowMaker , Blackbox y otros son entornos grficos donde el mtodo de trabajo es bastante diferente de otros entornos grficos habituales (lase Windows ), son recomendables cuando ya se tenga experiencia y se quiera experimentar con mtodos diferentes de poner en marcha los programas, ver el correo, manejar las ventanas, etc.

Gnome

Plataforma de Teleformacin de IFES

Pgina 13 de 212

Introduccin a Linux

KDE

Pgina 14 de 212

Introduccin a Linux

Introduccin a Linux

Gnome y KDE son los entornos grficos que ms se estn utilizando. Gnome es muy sencillo e intuitivo, KDE tiene ms opciones y efectos. Los dos utilizan gran cantidad de recursos del ordenador (memoria y velocidad); son los recomendados para empezar a no ser que se est trabajando con un ordenador lento.

IceWM

Plataforma de Teleformacin de IFES

Pgina 15 de 212

Introduccin a Linux

XfCE

Pgina 16 de 212

Introduccin a Linux

Introduccin a Linux

IceWM o XFCE son los entornos grficos recomendados para equipos lentos ya que son ligeros y tienen bastantes caractersticas de los sistemas modernos.

Distribuciones
Los sistemas operativos propietarios, como Windows , estn desarrollados por empresas como Microsoft y esta empresa es la que realiza los CDs y los vende. En el campo de Linux , no hay una nica empresa que lo desarrolle, sino que hay miles de programadores, sin ninguna relacin entre ellos que van creando y modificando los programas que funcionan en Linux . Como estos programas estn a disposicin de cualquiera que los quiera utilizar, surgieron las distribuciones, que son recopilaciones de programas y utilidades que forman el sistema Linux . Como los programas que se incluyen en una distribucin son libres, la empresa que realiza la distribucin no puede limitar el derecho de copia, slo pueden prohibir la copia de programas que haya realizado dicha empresa y no haya liberado, as como
Plataforma de Teleformacin de IFES Pgina 17 de 212

Introduccin a Linux

logotipos, marcas, etc.

Distribuciones comerciales o de organizaciones


Hay varias empresas que se dedican a recopilar, personalizar, comprobar que funcionan bien de forma conjunta y empaquetar programas para conseguir distribuciones de Linux . Estas empresas tienen como objetivos vender las distribuciones o los servicios de mantenimiento y personalizacin a organizaciones o a usuarios finales. Las distribuciones ms importantes actualmente son:

RedHat busca acceder al mercado de los servidores para empresas.

Suse y Mandriva son distribuciones enfocadas para el usuario final.

Pgina 18 de 212

Introduccin a Linux

Introduccin a Linux

Debian es una distribucin que est hecha por programadores que slo intenta el desarrollo del software sin cortapisas.

Ubuntu : recientemente ha surgido esta distribucin que es de una empresa, pero est basada en la de Debian y pretende ser muy sencilla y permanecer libre.

Distribuciones temticas
Como no hay apenas restricciones a la creacin de distribuciones, se van creando distribuciones con objetivos de lo ms variopinto. Distribuciones enfocadas a un sector de la informtica concreto: Bioknoppix : programas de uso en bioinformtica. NetBSD : enfocado en una seguridad estricta. FreeBSD : enfocado a la estabilidad del sistema. Media Linux : programas multimedia. GhostWriter : distribucin con herramientas para escritores. Oralux : distribucin para ciegos (interfase mediante audio).

Plataforma de Teleformacin de IFES

Pgina 19 de 212

Introduccin a Linux

JuegaLinex : juegos.

Tambin hay distribuciones adaptadas a un idioma o zona del mundo,;existen distribuciones centradas en el bengal o hebreo y distribuciones para prcticamente cada autonoma espaola, as comopara varias localidades. Podemos buscar todas las distribuciones Linux que queramos en http://distrowatch.com/

Distribuciones live

Las distribuciones live son recopilaciones de programas que estn listas para funcionar

Pgina 20 de 212

Introduccin a Linux

Introduccin a Linux

sin necesidad de instalar nada en el disco duro, no lo modifican de ninguna manera. La primera distribucin live fue Knoppix , que ya va por la versin 4.0, se desarroll para demostrar a los usuarios las posibilidades y facilidad de uso de Linux . Actualmente tenemos multitud de distribuciones live para: Demostraciones de Linux o de funcionamiento de programas. Distribuciones con herramientas de recuperacin de datos. Distribuciones para poder trabajar sin tener que realizar instalaciones o en ordenadores que no tienen disco duro.

Plataforma de Teleformacin de IFES

Pgina 21 de 212

Introduccin a Linux

Mdulo II. rdenes comunes


Instrucciones habituales

Comenzamos a escribir
Empezamos a trabajar con Linux , tenemos una pantalla negra (puede ser de otro color) que hemos sacado en el men terminales (o xterm o kterm), o hemos pulsado las teclas Control, Alt y F1 al mismo tiempo (en este caso, volvemos al modo grfico con Control + Alt + F7). Despus de escribir el nombre de usuario y la clave (si nos la pide), nos encontramos un texto que sirve para indicarnos que el sistema est esperando que escribamos una orden, a este texto le llamaremos "prompt" y lo representaremos en este curso con el smbolo del dlar (en tu Linux puede ser diferente). $ escribimos nuestra primera orden: $ date y al darle a la tecla de retorno (o entrar o return ), obtenemos: $ date Wed Nov 23 13:22:21 2005 $ Cuando hemos pulsado la tecla retorno le hemos indicado al sistema que la orden estaba completa, la ha ejecutado y nos ha mostrado el resultado de la ejecucin en la siguiente lnea, la fecha y la hora actual, y en la lnea siguiente ha vuelto a aparecer el prompt para indicarnos que est preparado para la siguiente tarea que se le

Pgina 22 de 212

Introduccin a Linux

Introduccin a Linux

encomiende.

Errores de escritura
Vamos a escribir una orden incorrectamente para ver qu sucede: $ dates al pulsar retorno nos aparece un mensaje parecido al siguiente: $ dates sh: dates: command not found $ Cuando nos equivoquemos nos aparecern mensajes de error indicando: Que no se conoce la orden, porque no est instalada o porque la hemos escrito mal. Que no conoce los argumentos o que estn mal escritos. Que no puede realizar la orden, por ejemplo que no puede borrar un archivo que est en un CD-ROM.

Atajos de teclado
En los entornos grficos un atajo de teclado es una combinacin de teclas que hace lo mismo que un men. En el entorno de consola, realmente son atajos para no tener que escribir las rdenes completas. Sin estos atajos el trabajo con el teclado sera muy tedioso, es muy importante que se conozcan y se utilicen constantemente.

Auto completado
El auto completado se activa cuando tenemos un comando o nombre de archivo escrito a medias y pulsamos la tecla tabulador (tab).
Plataforma de Teleformacin de IFES Pgina 23 de 212

Introduccin a Linux

Si cuando pulsamos slo hay una orden que empiece como lo que hemos escrito, el sistema la escribe. Si hay varias posibilidades que casan tendremos que volver a darle al tabulador y nos mostrar las diferentes posibilidades.

Vamos a ver un ejemplo, la pulsacin de la tecla tabulador la marcaremos como (tab), no aparecern las letras t, a y b en la pantalla. Normalmente la tecla tabulador est a la izquierda del teclado, encima de la tecla de bloqueo de maysculas y tiene dibujadas unas flechas horizontales. Unix distingue entre maysculas y minsculas, asegrate de que estn tal y como las escribimos aqu.

$ rmd(tab)/e(tab)X(tab)xin(tab) El texto que tiene que haber aparecido es: $ rmdir /etc/X11/xinit/ Hemos pulsado 13 teclas y tenemos 21 caracteres, el utilizar el auto completado nos ahorra alrededor de un 50% de pulsaciones. Por cierto la orden anterior intentar borrar un directorio de configuracin del sistema, pero si no tenemos permisos o no est vaco nos dar un error y no lo borrar, pero por si acaso en lugar de darle a la tecla control , anularemos la orden manteniendo pulsada la tecla control (Ctrl ) y pulsamos una vez la tecla c .

Para no ejecutar una orden que hemos escrito pulsamos Ctrl + c Qu sucede cuando hay varias rdenes o archivos que comienzan igual? Al darle al tabulador el sistema no sabe cul de ellos poner, pone las letras que puede y nos avisa con un pitido, podemos forzarle a que nos muestre las diversas opciones con una segunda pulsacin sobre el tabulador (tab), escribir unas letras para que diferencie entre las opciones posibles y volver a darle al tabulador. Ejemplo: escribimos:

Pgina 24 de 212

Introduccin a Linux

Introduccin a Linux

$ ls /usr/i(tab) el sistema encuentra en el directorio /usr los directorios que empiezan por i include e info, como los dos empiezan por i y luego n , el sistema pone la n y nos indica que no sabe cul de los dos poner con un pitido, si le damos una segunda vez al tabulador nos indica cules son las opciones: $ ls /usr/in(tab)(tab) include/ info/ $ ls /usr/inc(tab) escribimos una letra(c) que rompa el empate y volvemos a pulsar (tab); ahora el sistema no tiene dudas y nos mostrar el directorio /usr/include.

Recuperacin de rdenes
En el entorno de texto que estamos trabajando se almacenan las rdenes que vamos escribiendo.Para recuperarlas pulsamos las teclas flecha-arriba o flecha-abajo, y cuando las tengamos en pantalla pulsamos retorno. Tambin podemos recuperar una orden antigua y modificarla para que se ejecute con otras opciones o sobre otros ficheros. $ ls -l total 0 drwxr-xr-x+ 3 felix Ninguno 0 Nov 29 14:18 bin drwxr-xr-x+ 4 felix Ninguno 0 Nov 30 10:19 cursos drwxr-xr-x+ 4 felix Ninguno 0 Nov 30 12:04 tmp $ ls -l /usr total 0 drwxrwxrwx+ 8 ifes Usuarios 0 Nov 21 13:59 X11R6 drwxrwxrwx+ 3 ifes Usuarios 0 Nov 30 08:59 bin drwxrwxrwx+ 7 ifes Usuarios 0 Nov 21 13:59 doc drwxrwxrwx+ 2 ifes Usuarios 0 Nov 21 10:45 etc drwxrwxrwx+ 23 ifes Usuarios 0 Nov 21 14:01 include drwxrwxrwx+ 2 ifes Usuarios 0 Nov 21 10:45 info drwxrwxrwx+ 18 ifes Usuarios 0 Nov 21 14:01 lib drwxrwxrwx+ 5 ifes Usuarios 0 Nov 21 10:45 local drwxrwxrwx+ 6 ifes Usuarios 0 Nov 25 10:30 man drwxrwxrwx+ 3 ifes Usuarios 0 Nov 23 09:01 sbin drwxrwxrwx+ 35 ifes Usuarios 0 Nov 23 09:01 share drwxrwxrwx+ 2 ifes Usuarios 0 Nov 21 10:45 src drwxrwxrwx+ 6 ifes Usuarios 0 Nov 21 14:00 ssl drwxrwxrwx+ 2 ifes Usuarios 0 Nov 21 10:45 tmp drwxrwxrwx+ 7 ifes Usuarios 0 Nov 24 12:50 var $ ls -l /usr/X11R6

Plataforma de Teleformacin de IFES

Pgina 25 de 212

Introduccin a Linux

total 0 drwxrwxrwx+ drwxrwxrwx+ drwxrwxrwx+ drwxrwxrwx+ drwxrwxrwx+ drwxrwxrwx+

2 5 8 4 5 5

ifes ifes ifes ifes ifes ifes

Usuarios Usuarios Usuarios Usuarios Usuarios Usuarios

0 0 0 0 0 0

Nov Nov Nov Nov Nov Nov

23 21 21 21 21 21

14:26 13:59 13:59 13:59 14:00 13:59

bin doc include lib man share

En este ejemplo, la primera vez hemos escrito ls -l , la segunda vez flecha arriba (espacio)/usr, con lo que hemos obtenido ls -l /usr, y la tercera vez flecha arriba /X11R6, con lo que hemos obtenido ls -l /usr/X11R6. Las rdenes que escribimos se almacenan en un archivo, y las recuerda de una sesin a otra aunque se haya apagado el ordenador.

Sintaxis de las rdenes

rdenes simples
Hay muy pocas rdenes que tengan utilidad al emplearse sin modificadores ni argumentos.Suelen dar informacin del sistema.Las ms habituales estn en el siguiente listado: $ pwd /home/ifes $ ls RCS bin cursos tmp $ ps PID PPID 1484 1 964 1484 1612 964 1672 1612 1804 1672 1816 1612 540 1816

PGID 1484 964 1612 1672 1804 1816 1208

WINPID TTY UID STIME COMMAND 1484 con 1001 13:22:17 /usr/bin/bash 1676 con 1001 13:22:25 /usr/local/bin/screen 1612 ? 1001 13:22:25 /usr/local/bin/screen 1460 0 1001 13:22:25 /usr/bin/sh 1500 0 1001 13:49:22 /usr/bin/vim 1568 1 1001 13:52:43 /usr/bin/sh 540 1 1001 14:01:41 /usr/bin/sh

Pgina 26 de 212

Introduccin a Linux

Introduccin a Linux

1620 540 1208 $ date Thu Nov 24 14:01:41 $ who felix cesar josemi

1588 2005

1 1001 14:01:41 /usr/bin/ps

Si practicas obtendrs resultados diferentes;vamos a ver qu hacen estas rdenes: pwd : nos indica en qu directorio estamos. ls : hace un listado de los archivos y directorios que hay en el directorio donde nos encontramos. ps : saca la lista de procesos que se estn ejecutando en este momento. date : nos indica la fecha y la hora actual. who : nos dice quin est conectado en este ordenador. cal : saca un calendario.

Opciones
Las opciones son letras o textos que se ponen detrs de la orden,normalmente con espacios y guiones. Hacen que el funcionamiento de la orden sea diferente del original. Veamos unos ejemplos: $ date Thu Nov 24 14:36:18 2005 $ date -u Thu Nov 24 13:36:18 UTC 2005 $ date --iso-8601 2005-11-24 date : Muestra la fecha y la hora en el formato por defecto. date -u : Muestra la fecha y la hora en formato universal (fjate que muestra una hora menos si ests en la zona horaria de Madrid con horario de invierno). date --iso-8601 : Muestra la fecha sacando primero el ao, el mes y el da.

Cuando la opcin est formada por una letra se suele poner un guin delante;cuando es una opcin larga se suelen poner dos guiones, pero esto no es estndar y depende de la orden de que se trate. Se pueden poner ms de una opcin y son equivalentes las siguientes rdenes: $ ls -l -h

Plataforma de Teleformacin de IFES

Pgina 27 de 212

Introduccin a Linux

total 0 drwxr-xr-x+ drwxr-xr-x+ drwxr-xr-x+ drwxr-xr-x+ $ ls -h -l total 0 drwxr-xr-x+ drwxr-xr-x+ drwxr-xr-x+ drwxr-xr-x+ $ ls -lh total 0 drwxr-xr-x+ drwxr-xr-x+ drwxr-xr-x+ drwxr-xr-x+ $ ls -hl total 0 drwxr-xr-x+ drwxr-xr-x+ drwxr-xr-x+ drwxr-xr-x+

2 3 4 2 2 3 4 2 2 3 4 2 2 3 4 2

ifes ifes ifes ifes ifes ifes ifes ifes ifes ifes ifes ifes ifes ifes ifes ifes

Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Nov Nov Nov Nov Nov Nov Nov Nov Nov Nov Nov Nov Nov Nov Nov Nov

24 23 24 24 24 23 24 24 24 23 24 24 24 23 24 24

12:05 13:48 09:03 14:51 12:05 13:48 09:03 14:51 12:05 13:48 09:03 14:51 12:05 13:48 09:03 14:51

RCS bin cursos tmp RCS bin cursos tmp RCS bin cursos tmp RCS bin cursos tmp

Da igual poner antes la opcin l o la opcin h . Las opciones cortas (de una sola letra) se pueden combinar y escribir -lh o -hl , con un slo guin.

Argumentos
Los argumentos son textos o nombres de archivos que se pasan a la orden para que los procese (que haga algo con ellos). En los dos ejemplos siguientes vamos a utilizar argumentos para la funcin date del tipo cadena de texto. $ date -d 1-may Sun May 1 00:00:00 2005 $ date -d 1-dec-2005 Thu Dec 1 00:00:00 2005 $ date -r /etc/passwd Mon Nov 21 10:45:48 2005 En los dos primeros ejemplos utilizamos la opcin -d para que nos saque por pantalla la fecha que le pasamos como argumento, en lugar de la fecha actual;as nos sacar la fecha del 1 de mayo de presente ao o la fecha del 1 de diciembre de 2005.

Pgina 28 de 212

Introduccin a Linux

Introduccin a Linux

Como el sistema en el que estoy trabajando est en ingls, los nombres de los meses tienen que estar en ingls (la abreviatura de mayo, may, en ingls es igual que en espaol, pero para diciembre hemos tenido que poner dec ). Comprueba cmo est instalado el idioma en tu sistema con los resultados que devuelve date .

En el tercer ejemplo modificamos el comportamiento de date con la opcin -r , que hace que en lugar de sacar la fecha actual, saque la fecha de la ltima vez que se ha modific un archivo. En este ltimo ejemplo el argumento es un fichero. Acurdate de utilizar los tabuladores para acabar las rdenes y los nombres de los directorios y archivos.

Comodines
El uso de los comodines lo hace el sistema operativo, que busca los archivos que tengan la forma que case con los comodines y se los pasa al programa, as que todos los programas admiten comodines.

Los comodines de la baraja son naipes que pueden tomar el valor que nos apetezca en juegos como el pquer o el rabino. En la lnea de comandos los comodines son: El asterisco ( * ) El cierre de parntesis ( ? ) Cualquier smbolo entre corchetes cuadrados ( [ ] ).

El asterisco sirve para indicar cualquier letra, un nmero de veces ilimitado. $ ls /bin/a* /bin/a2p /bin/addftinfo /bin/afmtodit /bin/animate

Plataforma de Teleformacin de IFES

Pgina 29 de 212

Introduccin a Linux

/bin/annotate /bin/antiword /bin/anytopnm /bin/apropos /bin/ascii /bin/asciitopgm /bin/ash /bin/aspell-import /bin/aspell /bin/atktopbm /bin/awk $ ls /bin/an* /bin/animate /bin/annotate /bin/antiword /bin/anytopnm $ ls /bin/*ba* /bin/banner /bin/basename /bin/bash /bin/bashbug /bin/libart2-config /bin/tiff2rgba En los ejemplo anteriores estamos mostrando los archivos que se encuentran dentro del directorio /bin y que adems: a* : Empiezan por a y sigue cualquier combinacin de caracteres. an* : Empiezan por an y sigue cualquier combinacin de caracteres. *ba* : Hay cualquier combinacin de caracteres seguido de las letras ba y cualquier combinacin de teclas despus.

El smbolo cierre de interrogacin (?) sirve para indicar cualquier letra, pero slo una vez. No te confundas el smbolo de inicio de interrogacin () que no tiene ningn significado en Unix.

$ ls /bin/?sh /bin/ash /bin/ssh $ ls /bin/??sh

Pgina 30 de 212

Introduccin a Linux

Introduccin a Linux

/bin/bash ls /bin/?sh : buscamos los archivos dentro del directorio bin que empiecen por cualquier letra y despus tengan una s y una hache. ls /bin/??sh : buscamos los archivos dentro del directorio bin que empiecen por cualquier letra, seguido de cualquier otra letra y despus tengan una s y una hache.

El otro comodn que se utiliza es poner las letras que nos interesan entre corchetes ([]). El sistema busca en su lugar cualquiera de las letras que estn en el corchete una sola vez. $ ls /bin/b[ae]* /bin/banner /bin/basename /bin/bash /bin/bashbug $ ls /bin/b[ai]* /bin/banner /bin/basename /bin/bash /bin/bashbug /bin/bioradtopgm $ ls /bin/[bc][ae]* /bin/banner /bin/basename /bin/bash /bin/bashbug /bin/cal /bin/cameratopam /bin/captoinfo /bin/cat As la orden ls /bin/b[ae]* muestra el contenido del directorio /bin/ que empiece con una b seguido indistintamente por una a o una e , seguido de cualquier letra o grupo de letras * .

Obtencin de ayuda
Para la obtencin de ayuda podemos utilizar el comando man $ man uname UNAME(1) UNAME(1) NOMBRE uname - imprime informacin del sistema SINOPSIS

Plataforma de Teleformacin de IFES

Pgina 31 de 212

Introduccin a Linux

uname [-snrvma] [--sysname] [--nodename] [--release] [--machine] [--all] [--help] [--version] DESCRIPCIN Esta documentacin no va a ser mantenida a partir de ahora y puede ser inexacta o incompleta. La documentacin Texinfo es ahora la fuente autorizada. Esta pagina de manual documenta la versin de GNU de uname . uname imprime informacin acerca de la mquina y el sistema operativo en los que esta corriendo. Si no se da ninguna opcin,uname acta como si se hubiera dado la opcin -s -a ;la informacin seleccionada se imprime en el orden `snrvm' con un espacio entre los diferentes elementos. OPCIONES -m , --machine Imprime el tipo de maquina (hardware). -n , --nodename Imprime el hostname del nodo de red de la maquina. -r , --release Imprime la versin del sistema operativo. -s , --sysname Imprime el nombre del sistema operativo. -v Imprime la fecha de compilacin del sistema operativo. -a , --all Imprime toda la informacin anterior. --help Imprime un mensaje de uso en la salida estndar y termina satisfactoriamente. --version Imprime informacin sobre la version por la salida estndar y termina satisfactoriamente. FSF Utilidades Shell de GNU UNAME(1) Para manejar el resultado, las rdenes ms importantes son: tecla q para salir, flecha arriba o flecha abajo para subir o bajar, / para buscar un texto (se escribe despus y se le da a enter), n para buscar el siguiente texto. Nadie es capaz de aprenderse todos los comandos que se utilizan en Unix con todas sus opciones, pero es un objetivo de este curso que se sepan utilizar las pginas del manual y encontrar las opciones necesarias para realizar lo que se quiera hacer.

Pgina 32 de 212

Introduccin a Linux

Introduccin a Linux

Sistema de ficheros

El sistema de archivos en Unix


Antes de continuar con las rdenes habituales, es necesario conocer cmo se organiza la informacin en Unix .

Ficheros y directorios
Como la mayora de los sistemas actuales, Unix organiza la informacin en ficheros y directorios. Tambin hay otros elementos un poco ms exticos que veremos a su debido tiempo.

Estructura jerrquica
En Unix no existen los equivalentes a las unidades de MS-DOS (c: o a: ), sino que

Plataforma de Teleformacin de IFES

Pgina 33 de 212

Introduccin a Linux

todo est en una nica estructura en rbol. El directorio raz se representa por la barra de dividir (/ ). Podemos ver qu hay en el directorio raz con la orden: $ ls / bin cygdrive cygwin.bat cygwin.ico etc home lib mnt tmp usr var Dentro del directorio raz nos encontramos varios directorios, como bin, etc, home, tmp, usr, var, etc. Para ver el contenido de uno de ellos ejecutamos las orden: $ ls /usr X11R6 bin doc etc include info lib local man sbin share src ssl tmp Con esta orden le hemos dicho que nos muestre el contenido de usr, que est dentro del directorio raz /. Para ver el contenido del directorio man que est debajo de usr, que est debajo de / usaremos la orden: $ ls /usr/man es man1 man5

Pgina 34 de 212

Introduccin a Linux

Introduccin a Linux

man7 En una direccin el smbolo / puede tener dos significados, si est al principio de la direccin, nos referimos al directorio raz. Si no est al principio es slo una separacin entre directorios.

Dnde estn los discos?


Pero si no se utilizan nombres de unidades, cmo se puede acceder al CD-ROM, a la disquetera o a un dispositivo USB?. Unix monta los diferentes dispositivos en un directorio que vara en funcin de la personalizacin de la distribucin, para ver donde las guarda tu distribucin puedes meter un CD-ROM de datos y probar con los siguientes comandos: $ ls /mnt/cd(tab) $ ls /cd(tab) $ ls /media/cd(tab) una de las rdenes anteriores debera funcionar. Si el sistema encuentra el directorio cd(algo), (estamos utilizando el tabulador), nos mostrar el contenido del CD-ROM.

Usuarios, grupos y permisos


Todos los archivos y directorios de un sistema Unix tienen, entre otras, estas caractersticas: Propietario, el nombre del usuario que lo ha creado. Grupo, grupo al que est asociado. Permisos para el propietario, para el grupo y para el resto de los usuarios.

As, si escribimos: $ ls -l / total 9 drwxrwxrwx+ dr-xr-xr-x -rwxrwxrwx -rwxrwxrwx

3 ifes Usuarios 0 5 0 root 0 1 ifes Usuarios 57 1 ifes Usuarios 7022

Nov Jan Nov Nov

23 09:01 bin 1 1970 cygdrive 21 11:06 cygwin.bat 23 14:26 cygwin.ico

Plataforma de Teleformacin de IFES

Pgina 35 de 212

Introduccin a Linux

drwxrwxrwx+ 16 ifes Usuarios drwxrwxrwx+ 3 ifes Ninguno drwxrwxrwx+ 18 ifes Usuarios drwxr-xr-x+ 2 ifes Ninguno drwxrwxrwt+ 4 ifes Usuarios drwxrwxrwx+ 16 ifes Usuarios drwxrwxrwx+ 7 ifes Usuarios

0 0 0 0 0 0 0

Nov Nov Nov Nov Nov Nov Nov

23 23 21 25 25 21 24

12:07 09:30 14:01 09:11 13:18 14:00 12:50

etc home lib mnt tmp usr var

podemos ver que el directorio /bin pertenece al usuario ifes y su grupo es Usuarios Los permisos tambin aparecen en este listado, pero son un poco ms complicados de entender. La primera letra de cada lnea indica el tipo es cada "objeto", un guin - indica que es un archivo, una d indica que es un directorio. Las siguientes nueve letras son las que indican los permisos asociados a ese archivo. Las tres primeras letras indican los permisos del propietario. Las tres siguientes indican los permisos del grupo. Las tres ltimas indican los permisos de otros que no sean ni el propietario ni pertenezcan al grupo del archivo.

En cada grupo de tres letras cada una tienen el significado: La primera indica si tiene permiso de lectura (r ) o no (- ). La segunda indica si tiene permiso de escritura (w ) o no (- ). La tercera indica si tiene permiso de ejecucin (x ) o no (- ).

Direcciones absolutas o relativas


Hay dos maneras de indicar la direccin de un fichero o un directorio, en la estructura de ficheros de un sistema Unix. Direcciones absolutas Direcciones relativas

Direcciones absolutas
Las direcciones absolutas empiezan con el smbolo / . Una direccin absoluta es vlida siempre.

Direcciones relativas
Pgina 36 de 212 Introduccin a Linux

Introduccin a Linux

Las direcciones relativas no empiezan con el smbolo / . Las direcciones relativas dependen del directorio donde nos encontremos, no funcionarn si nos encontramos en un directorio diferente. Normalmente las direcciones relativas son ms cortas de escribir que las direcciones largas. Ejemplos de direccionamiento absoluto y relativo: $ # Cul es mi directorio? $ pwd /home/felix $ # Qu hay en el directorio /usr? $ ls /usr X11R6 bin doc etc i686-pc-cygwin i686-pc-mingw32 include info lib local man sbin share src ssl tmp $ # Qu hay en mi directorio? $ ls bin cursos tmp $ # Ahora con direccionamiento absoluto $ ls /home/felix bin cursos tmp $ # Que hay dentro de cursos $ ls cursos bin linux $ # Dentro de cursos con direccionamiento absoluto $ ls /home/felix/cursos bin

Plataforma de Teleformacin de IFES

Pgina 37 de 212

Introduccin a Linux

linux Lo que se escribe en la consola despus del smbolo # ser ignorado hasta que empiece la siguiente lnea, se puede utilizar para poner comentarios. El sistema lo ignora.

Directorios virtuales
Cuando ponemos una direccin relativa podemos trabajar con dos directorios virtuales: Directorio actual ( . ). Directorio superior ( .. ).

El directorio actual (un punto) se utiliza cuando una orden necesita un argumento que es un directorio, en lugar de poner la ruta completa del directorio donde nos encontramos, como /home/francisco/proyecto, ponemos simplemente. El directorio superior (representado por un punto seguido de otro punto, ..) nos indica el contenido del directorio padre del que nos encontramos. Podemos escribir ls .. , o incluso ls ../.. , que nos listar el directorio padre del directorio padre del actual (o sea el abuelo ;-)).

Instrucciones de ficheros
Instrucciones de ficheros
A continuacin veremos las rdenes para trabajar con el sistema de archivos ms habituales, as como sus opciones ms usadas. Podemos ver la descripcin oficial de cada orden, con todas sus opciones tecleando man orden.

Pgina 38 de 212

Introduccin a Linux

Introduccin a Linux

Las rdenes se pueden agrupar por lo que hacen: Ver Crear Modificar Borrar

Inspeccionar

Ver
Instrucciones que nos dan informacin sobre el sistema de archivos. No modifican nada.

pwd
La orden pwd nos muestra en qu directorio nos encontramos. Hay muchas rdenes en las que si no les indicamos otro directorio, utilizan el actual, por lo que es importante conocer en dnde estamos en cada momento.

Es una de las pocas rdenes de Unix que no tienen opciones. $ pwd /home/ifes/cursos/linux $ cd /home $ pwd /home Al principio del ejemplo nos encontramos en el directorio linux, dentro de cursos, dentro de ifes, dentro de home, dentro del directorio raz. Cambiamos de directorio con la orden cd y pwd nos indica la nueva direccin.

ls
ls sirve para ver qu archivos o directorios hay en un directorio.

Plataforma de Teleformacin de IFES

Pgina 39 de 212

Introduccin a Linux

Si no le indicamos el directorio nos muestra el contenido del directorio actual (podemos saber cul es nuestro directorio con la orden pwd ). Hacemos un listado del directorio actual. $ ls Makefile RCS admin literal out src tmp $ pwd /home/ifes/cursos/linux Hacemos un listado del directorio /usr $ ls /usr X11R6 bin doc etc include info lib local man sbin share src ssl tmp Hacemos un listado de los archivos que acaban en sh del directorio /bin. $ ls /bin/*sh /bin/ash /bin/bash /bin/ppmflash /bin/sh /bin/ssh Las opciones ms habituales de ls son: -l : Hace que el listado sea largo, dando ms informacin adems del nombre. -h : Los datos de tamao de archivo estn en formato humano, en kbytes o

Pgina 40 de 212

Introduccin a Linux

Introduccin a Linux

mbytes. -a : Nos muestra todos los archivos, incluidos los ocultos.

Una opcin que utilizo es ls -rlt que hace un listado largo (-l ), ordenado por fecha de modificacin (-t ) en orden creciente (-r ). De esta manera los ficheros que aparecen al final son los ltimos en los que se ha estado trabajando. Si el entorno de texto no te acaba de mostrar la informacin que necesitas puedes interactuar con el entorno grfico o con alguna herramienta interactiva como md(midnight comander).

cat
La orden cat sirve para concatenar archivos y mostrarlos por pantalla. Varios ejemplos, para practicar puedes probar con los archivos que se encuentran en el directorio /etc. $ # Miramos qu archivos hay en el directorio tmp $ ls tmp bin carta1.txt carta2.txt cursos kk.tar.gz last_sesion.txt sesion.sh.1448.tmp sesion.sh.1528.tmp tree-1.5.0.tgz $ $ # Miramos el contenido de tmp/carta1.txt $ cat tmp/carta1.txt Nuevos ordenadores ===================================== Thu Dec 1 08:53:49 2005 Para: mantenimiento Hay que instalar los nuevos ordenadores para que los utilicen en el departamento de idiomas. $ $ # Miramos el contenido de tmp/carta2.txt $ cat tmp/carta2.txt Actualizacin de software =====================================

Plataforma de Teleformacin de IFES

Pgina 41 de 212

Introduccin a Linux

Thu Dec 1 08:55:43 2005 Para: mantenimiento Actualizar los ordenadores con la nueva versin de OpenOffice disponible en el repositorio habitual. $ $ # Miramos el contenido de todas las cartas $ cat tmp/carta* Nuevos ordenadores ===================================== Thu Dec 1 08:53:49 2005 Para: mantenimiento Hay que instalar los nuevos ordenadores para que los utilicen en el departamento de idiomas. Actualizacin de software ===================================== Thu Dec 1 08:55:43 2005 Para: mantenimiento Actualizar los ordenadores con la nueva versin de OpenOffice disponible en el repositorio habitual.

less
Cuando un archivo es ms grande que la pantalla y lo vemos utilizando el comando cat, el sistema no espera a que lo leamos, sino que lo pasa a toda velocidad. Para poder verlo poco a poco est el comando less. Cuando vemos la ayuda de cualquier programa con man, estamos utilizando el programa less para ver esta ayuda poco a poco. less es un programa interactivo, todas las rdenes anteriores eran no interactivas, le dbamos el nombre de la orden, sus opciones y parmetros y se ejecutaba. En los programas interactivos el programa espera la interaccin del usuario, para qu le diga qu quiere en cada momento. Para ver un archivo grande podemos probar: $ less /etc/passwd Cuando estamos viendo el archivo le podemos indicar qu queremos que haga mediante rdenes de una sola tecla, las ms importantes son: flecha abajo : sube el texto una lnea. f lecha arriba : baja el texto una lnea. avance pgina : sube una pantalla. retroceso pgina : baja una pantalla.

Pgina 42 de 212

Introduccin a Linux

Introduccin a Linux

/ : bsqueda, a continuacin escribimos el texto que queremos buscar y pulsamos enter. n : vuelve a buscar la siguiente aparicin del texto que estamos buscando. N : busca hacia el principio del texto. q : finalizar la ejecucin de less.

file
La orden file nos indica de qu tipo son los archivos, ya que la extensin es slo un adorno en Unix. $ file /home/felix/tmp/*.* /home/felix/tmp/blame-1.3: directory /home/felix/tmp/calculos.txt: ASCII text /home/felix/tmp/calendario.txt: ASCII text, with CRLF line terminators /home/felix/tmp/carta.txt: ISO-8859 text /home/felix/tmp/carta1.txt: ASCII text /home/felix/tmp/carta2.txt: ISO-8859 text /home/felix/tmp/grandes.txt: ISO-8859 English text, with CRLF line terminators /home/felix/tmp/kk.tar.gz: gzip compressed data, from Unix /home/felix/tmp/last_sesion.txt: ASCII text, with CRLF line terminators /home/felix/tmp/numeros.txt: ASCII text, with CRLF line terminators /home/felix/tmp/ordenes.txt: ASCII text /home/felix/tmp/sesion.sh.1076.tmp: ISO-8859 text, with CRLF, LF line terminators /home/felix/tmp/sesion.sh.1140.tmp: ASCII text /home/felix/tmp/sesion.sh.1188.tmp: ISO-8859 text /home/felix/tmp/sesion.sh.1196.tmp: ASCII text /home/felix/tmp/sesion.sh.1208.tmp: ISO-8859 text, with CRLF, LF line terminators /home/felix/tmp/sesion.sh.1256.tmp: ISO-8859 text /home/felix/tmp/sesion.sh.1344.tmp: ASCII text /home/felix/tmp/sesion.sh.1392.tmp: ASCII text /home/felix/tmp/sesion.sh.1448.tmp: ISO-8859 text /home/felix/tmp/sesion.sh.1504.tmp: ASCII text /home/felix/tmp/sesion.sh.1540.tmp: ASCII text /home/felix/tmp/sesion.sh.1572.tmp: ASCII text /home/felix/tmp/sesion.sh.1596.tmp: ISO-8859 text /home/felix/tmp/sesion.sh.1632.tmp: ISO-8859 English text /home/felix/tmp/sesion.sh.1664.tmp: ISO-8859 text /home/felix/tmp/sesion.sh.1668.tmp: ISO-8859 text /home/felix/tmp/sesion.sh.1696.tmp: ASCII text /home/felix/tmp/sesion.sh.1704.tmp: ISO-8859 text

Plataforma de Teleformacin de IFES

Pgina 43 de 212

Introduccin a Linux

/home/felix/tmp/sesion.sh.1708.tmp: ISO-8859 text /home/felix/tmp/sesion.sh.1720.tmp: ASCII text /home/felix/tmp/sesion.sh.1728.tmp: ISO-8859 text /home/felix/tmp/sesion.sh.1732.tmp: ISO-8859 text /home/felix/tmp/sesion.sh.1744.tmp: ISO-8859 English text /home/felix/tmp/sesion.sh.1752.tmp: ISO-8859 text, with CRLF, LF line terminators /home/felix/tmp/sesion.sh.1808.tmp: ISO-8859 text /home/felix/tmp/sesion.sh.1816.tmp: ISO-8859 text /home/felix/tmp/sesion.sh.1856.tmp: ISO-8859 text /home/felix/tmp/sesion.sh.1880.tmp: ASCII text /home/felix/tmp/sesion.sh.1900.tmp: ASCII text /home/felix/tmp/sesion.sh.1904.tmp: ISO-8859 text /home/felix/tmp/sesion.sh.1936.tmp: ISO-8859 text /home/felix/tmp/sesion.sh.1948.tmp: ISO-8859 text /home/felix/tmp/sesion.sh.1952.tmp: ISO-8859 text /home/felix/tmp/sesion.sh.1972.tmp: ISO-8859 text /home/felix/tmp/sesion.sh.1976.tmp: ISO-8859 text /home/felix/tmp/sesion.sh.472.tmp: ISO-8859 text /home/felix/tmp/sesion.sh.664.tmp: ASCII text /home/felix/tmp/sesion.sh.676.tmp: ASCII text /home/felix/tmp/sesion.sh.748.tmp: ISO-8859 text, with CRLF, LF line terminators /home/felix/tmp/sesion.sh.792.tmp: ISO-8859 text /home/felix/tmp/sesion.sh.880.tmp: ISO-8859 text, with CRLF, LF line terminators /home/felix/tmp/sesion.sh.924.tmp: ASCII text /home/felix/tmp/sesion.sh.964.tmp: ASCII text /home/felix/tmp/sesion.sh.972.tmp: ISO-8859 text /home/felix/tmp/sesion.sh.992.tmp: ISO-8859 text /home/felix/tmp/sesion.sh.996.tmp: ISO-8859 text /home/felix/tmp/tree-1.5.0.tgz: gzip compressed data, from Unix

wc
wc nos indica el nmero de lneas, palabras y letras que tiene un archivo. $ # cifras de /etc/passwd $ wc /etc/passwd 7 9 718 /etc/passwd $ # $ # slo las lneas $ wc -l /etc/passwd 7 /etc/passwd $ # $ # todas las cartas $ wc tmp/carta* 12 25 206 tmp/carta1.txt

Pgina 44 de 212

Introduccin a Linux

Introduccin a Linux

11 25 219 tmp/carta2.txt 23 50 425 total Las opciones ms habituales son: -l : slo saca el nmero de lneas. -w : slo saca el nmero de palabras (grupos de letras separados por smbolos). -c : slo saca el nmero de letras (incluidos smbolos, espacios, etc.).

Crear
Instrucciones para crear archivos o directorios. En este apartado no veremos otros mtodos para crear archivos como son los procesadores de texto o la redireccin, porque tcnicamente no son rdenes, se vern en otros mdulos.

touch
touch seguido de uno o varios nombres crea unos archivos con esos nombres si no existan, si ya exista le cambia la fecha de modificacin. $ ##################################### $ # $ # listamos los archivos de texto $ # que estn dentro del directorio tmp $ # $ ls tmp/*.txt tmp/carta1.txt tmp/carta2.txt tmp/last_sesion.txt $ ##################################### $ # $ # creamos 3 archivos de texto $ # dentro del directorio tmp $ # $ touch tmp/ene.txt tmp/feb.txt tmp/mar.txt $ ##################################### $ # $ # listamos los archivos de texto $ # que estn dentro del directorio tmp $ # para ver si estn los archivos nuevos $ # $ ls tmp/*.txt tmp/carta1.txt

Plataforma de Teleformacin de IFES

Pgina 45 de 212

Introduccin a Linux

tmp/carta2.txt tmp/ene.txt tmp/feb.txt tmp/last_sesion.txt tmp/mar.txt $ ##################################### $ # $ # sacamos un listado largo para ver $ # el tamao de los nuevos $ # y comprobamos que es cero. $ # $ ls -l tmp/*.txt -rw-r--r-- 1 felix Ninguno 206 Dec 1 08:54 tmp/carta1.txt -rw-r--r-- 1 felix Ninguno 219 Dec 1 08:56 tmp/carta2.txt -rw-r--r-- 1 felix Ninguno 0 Dec 1 09:59 tmp/ene.txt -rw-r--r-- 1 felix Ninguno 0 Dec 1 09:59 tmp/feb.txt -rw-r--r-- 1 felix Ninguno 36 Dec 1 09:43 tmp/last_sesion.txt -rw-r--r-- 1 felix Ninguno 0 Dec 1 09:59 tmp/mar.txt

mkdir
mkdir seguido del nombre de uno o varios directorios, los crea. Una opcin muy interesante es -p , si en el directorio a crear tiene que estar bajo otro directorio y ste no existe tambin lo crea. $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ ############################################# # # creamos el directorio trabajo # mkdir trabajo # # nos metemos en este directorio # cd trabajo # # creamos directorios con subdirectorios # mkdir -p clientes/opel clientes/seat prov/cepsa prov/pirelli # # salimos del directorio trabajo # subiendo al directorio superior # cd .. # # hacemos un listado recursivo # del directorio trabajo

Pgina 46 de 212

Introduccin a Linux

Introduccin a Linux

$ # $ ls -lR trabajo trabajo: total 0 drwxr-xr-x+ 4 felix Ninguno drwxr-xr-x+ 4 felix Ninguno trabajo/clientes: total 0 drwxr-xr-x+ 2 felix Ninguno drwxr-xr-x+ 2 felix Ninguno trabajo/clientes/opel: total 0 trabajo/clientes/seat: total 0 trabajo/prov: total 0 drwxr-xr-x+ 2 felix Ninguno drwxr-xr-x+ 2 felix Ninguno trabajo/prov/cepsa: total 0 trabajo/prov/pirelli: total 0

0 Dec 1 10:17 clientes 0 Dec 1 10:17 prov 0 Dec 1 10:17 opel 0 Dec 1 10:17 seat

0 Dec 1 10:17 cepsa 0 Dec 1 10:17 pirelli

cp
cp sirve para copiar archivos. $ $ $ $ cp archivoOrigen archivoDestino : copia el archivo origen (que tiene que existir) a destino, si no existe el destino lo crea

# copiamos el archivo passwd del directorio etc # a un nuevo archivo que se llamar archivo_de_claves.txt # en el directorio actual cp /etc/passwd archivo_de_claves.txt cp archivoOrigen directorioDestino ; copia el archivo origen en el directorio destino, manteniendo el nombre.

$ # copiamos el archivo passwd del directorio /etc $ # al directorio tmp manteniendo el nombre $ cp /etc/passwd tmp cp archivo1 archivo2 ... directorio : copia los archivos indicados en el directorio de destino, cuando copiamos varios archivos es obligatorio que el ltimo argumento sea un directorio.

$ # copiamos todos los archivos con la extensin txt

Plataforma de Teleformacin de IFES

Pgina 47 de 212

Introduccin a Linux

$ $ $ $ $

# que estn en el directorio tmp # al directorio clientes, debajo de trabajo, # debajo del directorio actual, # manteniendo los nombres de los archivos cp tmp/*.txt trabajo/clientes

Modificar
Para modificar archivos se usan editores en modo interactivo, no rdenes. Tambin se procesan archivos mediante redireccin que se estudiar ms adelante.

mv
La orden mv sirve para mover o renombrar un archivo o directorio. Las maneras de poner los argumentos son las siguientes: mv archivo nuevoNombre: renombra el archivo como nuevo nombre. mv archivo directorio: mueve el archivo al directorio manteniendo el nombre. mv archivo directorio/nuevoNombre: mueve el archivo al directorio cambiando el nombre.

En la lista anterior se puede sustituir archivo por directorio y la orden mv funciona exactamente igual.

Borrar rm
Para borrar archivos utilizamos la orden rm seguida del nombre del archivo o archivos que queremos borrar. rm no borra directorios a no ser que le demos algunas opciones extra. Las opciones ms habituales son: -i : interactiva, pregunta si queremos borrar interactivamente -f : forzado, no pregunta, los borra. -r : recursivo, le podemos poner directorios y los borra completamente.

Pgina 48 de 212

Introduccin a Linux

Introduccin a Linux

En Unix, en modo texto, no tenemos papelera, lo que borremos no podremos recuperarlo, es muy importante que antes de borrar nos aseguremos en qu directorio estamos (pwd ) y que borremos con la opcin de borrado interactivo (rm -i archivos ).

rmdir
rmdir sirve para borrar directorios vacos. Si contienen algn archivo o directorio, da un error y no los borra. Para borrar directorios y todo su contenido se puede utilizar la orden rm -r , pero nuestros datos estarn ms seguros si nos acostumbramos a borrar el contenido y luego borrar slo directorios vacos con rmdir directorio.

Instrucciones de texto
Las instrucciones de texto son muy importantes porque los archivos de configuracin, programacin y otros muchos estn en formato texto, as como el resultado de las rdenes tambin son de texto y podremos realizar acciones sobre estos resultados intermedios.

head

Plataforma de Teleformacin de IFES

Pgina 49 de 212

Introduccin a Linux

head (cabeza en ingls)

sirve para mostrar el principio de un archivo. Nos puede ser til para ver el aspecto de un documento o ver su definicin. Por defecto head muestra las primeras 10 lneas del archivo. Se puede modificar con la opcin -n nmero donde nmero puede ser 1,2,8,88, etc.

tail
tail (cola en ingls) sirve para mostrar el final de un documento. Se utiliza mucho para ver archivos que van aumentando de tamao, aadiendo lo que va pasando al final (logs). Las opciones ms habituales son: -n nmero: Indicamos cuantas lneas del final queremos ver. Si no indicamos nada nos muestra 10. +nmero: Nos muestra desde la lnea nmero hasta el final. -f : Le indicamos que nos muestre las ltimas lneas y tail se queda esperando, observando el archivo, en el momento que cambia nos muestra que lneas se han aadido. Esta opcin es til si queremos ver cmo va aumentando un archivo.

sort
Pgina 50 de 212 Introduccin a Linux

Introduccin a Linux

sort sirve para ordenar.

Veamos varios ejemplos:

$ # sacamos por pantalla el archivo passwd $ cat /etc/passwd SYSTEM:*:18:544:,S-1-5-18:: Administradores:*:544:544:,S-1-5-32-544:: Administrador:unused_by_nt/2000/xp:500:513:U-NUEVO2Administrador,S-1-5-21-20 ASPNET:unused_by_nt/2000/xp:1002:513:ASP.NET Machine Account,U-NUEVO2ASPNET,S-1-5-21-2000478354-1563985344-839522115-1002:/home/A felix:unused_by_nt/2000/xp:1003:513:U-NUEVO2felix,S-1-5-21-2000478354-156398 ifes:unused_by_nt/2000/xp:1001:513:U-NUEVO2ifes,S-1-5-21-2000478354-15639853 Invitado:unused_by_nt/2000/xp:501:513:U-NUEVO2Invitado,S-1-5-21-2000478354-1 $ # sacamos por pantalla el archivo passwd $ # pero esta vez ordenado $ sort /etc/passwd ASPNET:unused_by_nt/2000/xp:1002:513:ASP.NET Machine Account,U-NUEVO2ASPNET,S-1-5-21-2000478354-1563985344-839522115-1002:/home/A Administrador:unused_by_nt/2000/xp:500:513:U-NUEVO2Administrador,S-1-5-21-20 Administradores:*:544:544:,S-1-5-32-544:: Invitado:unused_by_nt/2000/xp:501:513:U-NUEVO2Invitado,S-1-5-21-2000478354-1 SYSTEM:*:18:544:,S-1-5-18:: felix:unused_by_nt/2000/xp:1003:513:U-NUEVO2felix,S-1-5-21-2000478354-156398 ifes:unused_by_nt/2000/xp:1001:513:U-NUEVO2ifes,S-1-5-21-2000478354-15639853

Plataforma de Teleformacin de IFES

Pgina 51 de 212

Introduccin a Linux

Las opciones ms habituales son: -n: ordena teniendo en cuenta los nmeros. -f: no tiene en cuenta las minsculas o maysculas (si no ponemos esta opcin primero muestra las maysculas y luego las minsculas). -r: hace que invierta el resultado.

echo
La orden echo saca por pantalla el texto que le pasemos como

argumento. Es til cuando queramos saber el valor de una variable o introducirle un texto a un programa. $ echo hola hola $ echo la variable HOME vale $HOME la variable HOME vale /home/felix Para sacar el valor de una variable tenemos que poner un smbolo dolar $ delante del nombre, pero esto ya lo veremos ms adelante.

grep

Pgina 52 de 212

Introduccin a Linux

Introduccin a Linux

La orden grep sirve

para seleccionar las lneas que queremos mostrar, nos sirve para buscar dentro de archivos sin tener que verlos por completo.

$ grep felix /etc/passwd felix:unused_by_nt/2000/xp:1003:513:U-NUEVO2felix,S-1-5-21-2000478354-156398 Las opciones ms habituales son: -i: ignora si la cadena est en maysculas o minsculas. Normalmente slo busca las lneas que contengan exactamente la misma cadena, teniendo en cuenta las minsculas o maysculas. -v: muestra las lneas en las que no aparece la cadena buscada. Es el significado contrario al habitual. -l: No muestra las lneas que contienen las cadenas, slo los nombres de los archivo.

Veamos algunos ejemplos: $ # Vamos a realizar varias bsquedas en el directorio $ # /usr/include en los ficheros con las extensin .h $ # $ # $ # Buscamos los que contengan la cadena Linux $ # $ grep Linux /usr/include/*.h /usr/include/bfd.h:/* Linux shared library support routines for the linker. */

Plataforma de Teleformacin de IFES

Pgina 53 de 212

Introduccin a Linux

/usr/include/bfdlink.h: wrap_hash. Used by PowerPC Linux for 'dot' symbols. */ /usr/include/expat.h:/* Expat follows the GNU/Linux convention of odd number minor version for /usr/include/libmng.h: (eg. Windows, Linux and some others) /usr/include/libmng.h: TO RECAP: for sRGB systems (Windows, Linux) no action required! /usr/include/libmng_types.h:/* * - changed inclusion of lcms.h for Linux platforms * */ /usr/include/pngconf.h:/* This is an attempt to force a single setjmp behaviour on Linux. If $ # $ # Ahora slo el nombre de los archivos $ # $ grep -l Linux /usr/include/*.h /usr/include/bfd.h /usr/include/bfdlink.h /usr/include/expat.h /usr/include/libmng.h /usr/include/libmng_types.h /usr/include/pngconf.h $ # $ # Repetimos las bsquedas anteriores pero $ # sin que me importe si est en maysculas o minsculas $ # $ # Buscamos los que contengan la cadena Linux $ # $ grep -i Linux /usr/include/*.h /usr/include/bfd.h:/* Linux shared library support routines for the linker. */ /usr/include/bfd.h:extern bfd_boolean bfd_i386linux_size_dynamic_sections /usr/include/bfd.h:extern bfd_boolean bfd_m68klinux_size_dynamic_sections /usr/include/bfd.h:extern bfd_boolean bfd_sparclinux_size_dynamic_sections /usr/include/bfdlink.h: wrap_hash. Used by PowerPC Linux for 'dot' symbols. */ /usr/include/expat.h:/* Expat follows the GNU/Linux convention of odd number minor version for /usr/include/lcms.h:// like linux, SGI, VAX, FreeBSD, BeOS, etc. /usr/include/libmng.h: (eg. Windows, Linux and some others) /usr/include/libmng.h: TO RECAP: for sRGB systems (Windows, Linux) no action required! /usr/include/libmng_types.h:/* * - changed inclusion of lcms.h for Linux platforms * */ /usr/include/netdb.h:/* Original linux netdb.h merged with winsock.h types */ /usr/include/netdb.h: /* Different from the linux versions - note

Pgina 54 de 212

Introduccin a Linux

Introduccin a Linux

the shorts.. */ /usr/include/pngconf.h:/* This is an attempt to force a single setjmp behaviour on Linux. If /usr/include/pngconf.h:# ifdef linux /usr/include/pngconf.h:# endif /* linux */ /usr/include/pngconf.h:# ifdef linux /usr/include/pngconf.h:# endif /* linux */ $ # $ # Ahora slo el nombre de los archivos $ # $ grep -il Linux /usr/include/*.h /usr/include/bfd.h /usr/include/bfdlink.h /usr/include/expat.h /usr/include/lcms.h /usr/include/libmng.h /usr/include/libmng_types.h /usr/include/netdb.h /usr/include/pngconf.h $ # $ # Ahora vamos a buscar los archivos que no $ # tengan una cadena por ejemplo "function" $ # $ grep -vl function /usr/include/*.h /usr/include/Imlib.h /usr/include/Imlib_private.h /usr/include/Imlib_types.h /usr/include/_ansi.h /usr/include/_syslist.h .... .... /usr/include/xmi.h /usr/include/xtiffio.h /usr/include/zconf.h /usr/include/zlib.h

cut
Si grep nos permite qu lineas de un archivo nos interesan, la orden cut nos deja elegir qu parte de la lnea queremos ver. Las dos maneras habituales de indicarle qu queremos ver son: cut -f campos -d'delimitador' archivo

Trabajando de esta manera el programa divide cada lnea utilizando el delimitador (que es una letra o un smbolo, como: , o un espacio en blanco, etc.) y nos muestra slo los

Plataforma de Teleformacin de IFES

Pgina 55 de 212

Introduccin a Linux

campos que le hayamos indicado con el argumento campos . Unos ejemplos de indicarle los campos que nos interesaran seran: 3 : Slo sacara el tercer campo. 1,5,7 : Sacar los campos 1, 5 y 7. 2,6-10 : sacar los campos 1, 6, 7, 8, 9 y 10. -5 : sacar todos los campos 1, 2, 3, 4 y 5. 3,8- : sacar el campo 3 y desde el campo 8 hasta el final.

Podemos ver que ocurre con el fichero /etc/passwd, que est separado en campos por ':'. $ # nombres de usuarios $ cut -f1 -d':' /etc/passwd SYSTEM Administradores Administrador ASPNET felix ifes Invitado $ # nmeros de usuario $ cut -f3 -d':' /etc/passwd 18 544 500 1002 1003 1001 501 $ # nombres y nmeros $ cut -f1,3 -d':' /etc/passwd SYSTEM:18 Administradores:544 Administrador:500 ASPNET:1002 felix:1003 ifes:1001 Invitado:501 La otra manera de trabajar con cut es eligiendo los caracteres que nos interesan, cut -c caracteres archivo.

Le indicamos qu caracteres nos interesan de la misma manera que los campos. $ ############################## $ #

Pgina 56 de 212

Introduccin a Linux

Introduccin a Linux

$ # slo las primeras 10 letras $ # $ cut -c -10 /etc/passwd SYSTEM:*:1 Administra Administra ASPNET:unu felix:unus ifes:unuse Invitado:u $ ############################## $ # $ # las siguiente 10 letras $ # $ cut -c 11-20 /etc/passwd 8:544:,S-1 dores:*:54 dor:unused sed_by_nt/ ed_by_nt/2 d_by_nt/20 nused_by_n $ ############################## $ # $ # Las 20 primeras letras de cada lnea $ # $ cut -c -20 /etc/passwd SYSTEM:*:18:544:,S-1 Administradores:*:54 Administrador:unused ASPNET:unused_by_nt/ felix:unused_by_nt/2 ifes:unused_by_nt/20 Invitado:unused_by_n

sed
sed nos permite hacer sustituciones cuando nos muestra un fichero. Con esta tcnica no modificamos los archivos slo el resultado que aparece, ms adelante s que lo haremos.

Plataforma de Teleformacin de IFES

Pgina 57 de 212

Introduccin a Linux

Las sintaxis es sed "s/busqueda/sustitucion/g" archivo . $ ############################################################ $ # $ # sacamos el archivo original para que podamos comparar $ # $ cat tmp/carta.txt Hola, soy felix El prximo da 8 es mi cumpleaos, espero que vengas a mi fiesta y traigas muchos regalos. Zaragoza, 30 de noviembre de 2008 $ ############################################################ $ # $ # sustituimos felix por mi nombre completo $ # $ sed "s/felix/Flix Jorge Anadn Trigo/g" tmp/carta.txt Hola, soy Flix Jorge Anadn Trigo El prximo da 8 es mi cumpleaos, espero que vengas a mi fiesta y traigas muchos regalos. Zaragoza, 30 de noviembre de 2008 $ ############################################################ $ # $ # sustituimos las letras oes por ceros $ # $ sed "s/o/O/g" tmp/carta.txt HOla, sOy felix El prximO da 8 es mi cumpleaOs, esperO que vengas a mi fiesta y traigas muchOs regalOs. ZaragOza, 30 de nOviembre de 2008 $ ############################################################ $ # $ # sustituimos los dobles espacios por un nico espacio $ # $ sed "s/ / /g" tmp/carta.txt Hola, soy felix El prximo da 8 es mi cumpleaos, espero que vengas a mi fiesta y traigas muchos regalos. Zaragoza, 30 de noviembre de 2008

Instrucciones tiles

Otras instrucciones potentes


Pgina 58 de 212 Introduccin a Linux

Introduccin a Linux

seq
Cuando necesitamos una lista de nmeros utilizaremos la orden seq. Le podemos indicar el inicio el incremento y el final. Si no le ponemos incremento, supondr que es 1. Si no le ponemos inicio supondr que empezaremos desde el 1. $ ############################################################ $ # $ # orden completa $ # $ seq 10 2 20 10 12 14 16 18 20 $ ############################################################ $ # $ # slo ponemos el inicio y el final $ # $ seq 38 42 38 39 40 41 42 $ ############################################################ $ # $ # solo indicamos hasta donde queremos llegar $ # $ seq 10 1 2 3 4 5 6 7 8 9 10

find
find es seguramente la orden ms compleja y con la pgina del manual ms grande del
Plataforma de Teleformacin de IFES Pgina 59 de 212

Introduccin a Linux

entorno Linux. find sirve para buscar, pero tambin sirve para buscar y hacer algo con lo encontrado. Su sintaxis es: find directorio opciones comparaciones acciones directorio es el directorio donde vamos a empezar a buscar recursivamente, es obligatorio, si queremos buscar en el directorio actual tenemos que indicrselo mediante un punto: (. ). opciones : estas opciones cambian el modo en el que se realiza la bsqueda, como -daystart que hace que los tiempos se busquen teniendo en cuenta el comienzo del da, no por horas. -maxdepth o -mindepth que regula el nmero de directorios donde busca. comparaciones : nos permiten elegir lo que queremos buscar. Podemos buscar por fechas (o minutos) de modificacin o de acceso, por tamaos, nombres o quien es el propietario. acciones : lo habitual es mostrarlo por pantalla, pero tambin podemos hacer que saque los datos de ese archivo de una manera diferente, o que ejecute una orden de Unix, como rm, cat, grep, etc. sobre los archivos encontrados.

Vamos a ver unos ejemplos que aporten algo de claridad a esta maraa de opciones. $ ############################################################ $ # $ # busqueda por nombre $ # desde el directorio actual $ # $ find . -name carta.txt ./tmp/carta.txt $ ############################################################ $ # $ # bsqueda por nombre en todo $ # el disco duro $ # $ find / -name passwd /etc/passwd $ ############################################################ $ # $ # bsqueda por nombre en todo $ # el disco duro $ # con comodines entre comillas $ # $ find / -name "*.mp3" /cygdrive/c/Archivos de programa/C-Media 3D Audio/Driver/Advance/MUSIC/Demo3_Bass.mp3 /cygdrive/c/Archivos de programa/C-Media 3D Audio/Driver/Advance/MUSIC/Demo3_Front.mp3 /cygdrive/c/Archivos de programa/C-Media 3D

Pgina 60 de 212

Introduccin a Linux

Introduccin a Linux

Audio/Driver/Advance/MUSIC/Demo3_Rear.mp3 /cygdrive/c/Archivos de programa/C-Media 3D Audio/Driver/Advance/MUSIC/Demo3_Side.mp3 /cygdrive/c/Archivos de programa/Winamp/demo.mp3 /cygdrive/c/Documents and Settings/felix/Mis documentos/mp3/campanas.mp3 /cygdrive/c/Documents and Settings/felix/Mis documentos/mp3/cantatas/2/1/bwv_20_01.mp3 /cygdrive/c/Documents and Settings/felix/Mis documentos/mp3/cantatas/2/1/bwv_20_02.mp3 /cygdrive/c/Documents and Settings/felix/Mis documentos/mp3/cantatas/2/1/bwv_20_03.mp3 /cygdrive/c/Documents and Settings/felix/Mis documentos/mp3/cantatas/2/1/bwv_20_04.mp3 $ ############################################################ $ # $ # bsqueda por fecha de modificacin en minutos $ # menos de 10 en el directorio cursos $ # $ find cursos -mmin -10 cursos/linux/src cursos/linux/src/.contenidos.txt.swp cursos/linux/src/contenidos.txt cursos/linux/tmp $ ############################################################ $ # $ # bsqueda fecha de acceso $ # por das $ # empezando a las 00 horas de hoy $ # el disco duro $ # $ find cursos -daystart -atime -1 cursos cursos/bin cursos/bin/hazmenu.pl cursos/bin/hazmenu.sh cursos/bin/ponenlaces.sh cursos/linux cursos/linux/.vimrc cursos/linux/admin cursos/linux/admin/contenidos.txt cursos/linux/admin/especificaciones.txt cursos/linux/literal cursos/linux/literal/img cursos/linux/literal/img/180px-Linus_Torvalds.jpeg cursos/linux/literal/img/bios.png cursos/linux/literal/img/blackbox.jpg cursos/linux/literal/img/curva_aprendizaje.png cursos/linux/literal/img/curva_aprendizaje4.png

Plataforma de Teleformacin de IFES

Pgina 61 de 212

Introduccin a Linux

cursos/linux/literal/img/gnome.png cursos/linux/literal/img/icewm.jpg cursos/linux/literal/img/kde.jpg cursos/linux/literal/img/logo_debian.gif $ ############################################################ $ # $ # bsqueda por tamao $ # archivos de ms de 100 kb $ # $ # $ # $ find cursos -size +100k cursos/linux/literal/img/blackbox.jpg cursos/linux/literal/img/gnome.png cursos/linux/literal/img/icewm.jpg cursos/linux/literal/img/kde.jpg cursos/linux/literal/img/xfce.png cursos/linux/out/img/backbox.jpg cursos/linux/out/img/blackbox.jpg cursos/linux/out/img/gnome.png cursos/linux/out/img/icewm.jpg cursos/linux/out/img/kde.jpg cursos/linux/out/img/xfce.png cursos/linux/src/RCS/contenidos.txt,v Ahora otra serie de ejemplos con acciones. $ ############################################################ $ # $ # busqueda por nombre $ # de archivos vacos $ # y posterior borrado $ # $ find tmp -type f -size 0 -exec rm {} \; $ ############################################################ $ # $ # bsqueda de archivos que se llaman carta y algo ms $ # sacamos el nombre del archivo y $ # sacamos las lneas que contienen la cadena Para $ # $ find . -name "carta*" -print -exec grep Para {} \; ./tmp/carta.txt ./tmp/carta1.txt Para: mantenimiento ./tmp/carta2.txt Para: mantenimiento de software

tar
Pgina 62 de 212 Introduccin a Linux

Introduccin a Linux

tar sirve para agrupar varios archivos en un nico archivo, con o sin compresin. Tambin sirve para ver el contenido de archivos con formato tar o extraer los archivos de este formato. Cuando se agrupa con esta orden a los archivos generados les solemos poner las extensiones .tar , .tar.gz o.tgz . Se utiliza profusamente para hacer copias de seguridad, copiar directorios para trasladarlos y es el formato en el que se distribuyen la mayor parte de los programas para Linux. La sintaxis de esta orden es: tar opciones archivos. Entre estas opciones tiene que estar obligatoriamente una de las siguientes: c: para crear un archivo "tar" x: para extraer de una archivo "tar" t: para listar de un archivo "tar" Otras rdenes menos usadas.

Adems hay otras opciones que suelen acompaar a las opciones anteriores: v: va mostrando qu est haciendo el programa z: el fichero que creamos o del que sacamos archivos est comprimido (con el algoritmo gZip) f fichero: sirve para indicarle el archivo dnde metemos los archivos que queremos agrupar.

Veamos unos ejemplos: $ # miramos el contenido del directorio tmp $ $ ls tmp introduccion_a_linux-50h-mod_01-ud_01-introduccion.htm introduccion_a_linux-50h-mod_01-ud_02-instalacion.htm introduccion_a_linux-50h-mod_01-ud_03-historia.htm introduccion_a_linux-50h-mod_01-ud_04-distribuciones.htm introduccion_a_linux-50h-mod_01-ud_04-entornos.htm introduccion_a_linux-50h-mod_02-ud_01-instrucciones_habituales.htm introduccion_a_linux-50h-mod_02-ud_02-sintaxis_ordenes.htm introduccion_a_linux-50h-mod_02-ud_03-sistema_de_ficheros.htm introduccion_a_linux-50h-mod_02-ud_04-instrucciones_de_ficheros.htm introduccion_a_linux-50h-mod_02-ud_05-instrucciones_de_texto.htm introduccion_a_linux-50h-mod_02-ud_06-instrucciones_utiles.htm introduccion_a_linux-50h-mod_03-ud_01-instrucciones_avanzadas.htm introduccion_a_linux-50h-mod_03-ud_02-editores_de_texto.htm

Plataforma de Teleformacin de IFES

Pgina 63 de 212

Introduccin a Linux

introduccion_a_linux-50h-mod_anexo-ud_01-glosario.htm ordenes.txt separa.smf $ $ # opcin c, creamos un fichero $ # opcin z, estar comprimido $ # opcin v, que nos muestre qu est haciendo $ # opcin f, le indicamos el nombre del fichero (tmp.tar.gz) $ # qu vamos a meter, el directorio tmp $ $ # podramos escribirlo: $ # tar -c -z -v -f tmp.tar.gz tmp $ $ # pero se pueden agrupar las rdenes y $ # escribirlo as: $ $ tar czvf tmp.tar.gz tmp tmp/ tmp/introduccion_a_linux-50h-mod_01-ud_01-introduccion.htm tmp/introduccion_a_linux-50h-mod_01-ud_02-instalacion.htm tmp/introduccion_a_linux-50h-mod_01-ud_03-historia.htm tmp/introduccion_a_linux-50h-mod_01-ud_04-distribuciones.htm tmp/introduccion_a_linux-50h-mod_01-ud_04-entornos.htm tmp/introduccion_a_linux-50h-mod_02-ud_01-instrucciones_habituales.htm tmp/introduccion_a_linux-50h-mod_02-ud_02-sintaxis_ordenes.htm tmp/introduccion_a_linux-50h-mod_02-ud_03-sistema_de_ficheros.htm tmp/introduccion_a_linux-50h-mod_02-ud_04-instrucciones_de_ficheros.htm tmp/introduccion_a_linux-50h-mod_02-ud_05-instrucciones_de_texto.htm tmp/introduccion_a_linux-50h-mod_02-ud_06-instrucciones_utiles.htm tmp/introduccion_a_linux-50h-mod_03-ud_01-instrucciones_avanzadas.htm tmp/introduccion_a_linux-50h-mod_03-ud_02-editores_de_texto.htm tmp/introduccion_a_linux-50h-mod_anexo-ud_01-glosario.htm tmp/ordenes.txt tmp/separa.smf $ $ # para ver su contenido usamos $ # la opcin t $ $ tar tzf tmp.tar.gz tmp/ tmp/introduccion_a_linux-50h-mod_01-ud_01-introduccion.htm tmp/introduccion_a_linux-50h-mod_01-ud_02-instalacion.htm tmp/introduccion_a_linux-50h-mod_01-ud_03-historia.htm tmp/introduccion_a_linux-50h-mod_01-ud_04-distribuciones.htm tmp/introduccion_a_linux-50h-mod_01-ud_04-entornos.htm tmp/introduccion_a_linux-50h-mod_02-ud_01-instrucciones_habituales.htm tmp/introduccion_a_linux-50h-mod_02-ud_02-sintaxis_ordenes.htm tmp/introduccion_a_linux-50h-mod_02-ud_03-sistema_de_ficheros.htm tmp/introduccion_a_linux-50h-mod_02-ud_04-instrucciones_de_ficheros.htm

Pgina 64 de 212

Introduccin a Linux

Introduccin a Linux

tmp/introduccion_a_linux-50h-mod_02-ud_05-instrucciones_de_texto.htm tmp/introduccion_a_linux-50h-mod_02-ud_06-instrucciones_utiles.htm tmp/introduccion_a_linux-50h-mod_03-ud_01-instrucciones_avanzadas.htm tmp/introduccion_a_linux-50h-mod_03-ud_02-editores_de_texto.htm tmp/introduccion_a_linux-50h-mod_anexo-ud_01-glosario.htm tmp/ordenes.txt tmp/separa.smf $ $ # podemos borrar el directorio tmp $ # pues tenemos una copia en tmp.tar.gz $ $ ls tmp* tmp.tar.gz tmp: introduccion_a_linux-50h-mod_01-ud_01-introduccion.htm introduccion_a_linux-50h-mod_01-ud_02-instalacion.htm introduccion_a_linux-50h-mod_01-ud_03-historia.htm introduccion_a_linux-50h-mod_01-ud_04-distribuciones.htm introduccion_a_linux-50h-mod_01-ud_04-entornos.htm introduccion_a_linux-50h-mod_02-ud_01-instrucciones_habituales.htm introduccion_a_linux-50h-mod_02-ud_02-sintaxis_ordenes.htm introduccion_a_linux-50h-mod_02-ud_03-sistema_de_ficheros.htm introduccion_a_linux-50h-mod_02-ud_04-instrucciones_de_ficheros.htm introduccion_a_linux-50h-mod_02-ud_05-instrucciones_de_texto.htm introduccion_a_linux-50h-mod_02-ud_06-instrucciones_utiles.htm introduccion_a_linux-50h-mod_03-ud_01-instrucciones_avanzadas.htm introduccion_a_linux-50h-mod_03-ud_02-editores_de_texto.htm introduccion_a_linux-50h-mod_anexo-ud_01-glosario.htm ordenes.txt separa.smf $ $ # borramos el directorio tmp $ $ rm -rf tmp $ $ # mucho cuidado al usar rm -rf! $ $ # restauramos el directorio desde el archivo tar $ $ tar xzvf tmp.tar.gz tmp/ tmp/introduccion_a_linux-50h-mod_01-ud_01-introduccion.htm tmp/introduccion_a_linux-50h-mod_01-ud_02-instalacion.htm tmp/introduccion_a_linux-50h-mod_01-ud_03-historia.htm tmp/introduccion_a_linux-50h-mod_01-ud_04-distribuciones.htm tmp/introduccion_a_linux-50h-mod_01-ud_04-entornos.htm tmp/introduccion_a_linux-50h-mod_02-ud_01-instrucciones_habituales.htm tmp/introduccion_a_linux-50h-mod_02-ud_02-sintaxis_ordenes.htm tmp/introduccion_a_linux-50h-mod_02-ud_03-sistema_de_ficheros.htm

Plataforma de Teleformacin de IFES

Pgina 65 de 212

Introduccin a Linux

tmp/introduccion_a_linux-50h-mod_02-ud_04-instrucciones_de_ficheros.htm tmp/introduccion_a_linux-50h-mod_02-ud_05-instrucciones_de_texto.htm tmp/introduccion_a_linux-50h-mod_02-ud_06-instrucciones_utiles.htm tmp/introduccion_a_linux-50h-mod_03-ud_01-instrucciones_avanzadas.htm tmp/introduccion_a_linux-50h-mod_03-ud_02-editores_de_texto.htm tmp/introduccion_a_linux-50h-mod_anexo-ud_01-glosario.htm tmp/ordenes.txt tmp/separa.smf $

zip/unzip
zip y unzip se usan para comprimir o descomprimir grupos de archivos. Normalmente se usa cuando estamos compartiendo datos con usuarios de Windows, que utilizan habitualmente este formato. Para comprimir se escribe: zip ficherozip lista de ficheros o directorios. Para descomprimir se escribe: unzip ficherozip.

-- Nuevo clasificador --

Pgina 66 de 212

Introduccin a Linux

Introduccin a Linux

Mdulo III. rdenes avanzadas


Redirecciones
La redireccin es una de las herramientas ms potentes cuando trabajamos con la consola de Linux. Hasta ahora, cuando ejecutbamos una orden el resultado sala por pantalla, la pantalla es lo que se conoce como salida estndar. Podemos decirle que cuando ejecute una orden el resultado no salga por pantalla sino que lo redirija a un fichero (por ejemplo). De esto ya hemos visto ejemplos en los ejercios del curso.

Redireccin de la salida estndar


Para redirigir la salida estndar a un fichero tenemos que terminar la orden con el smbolo mayor que (> ) y el nombre del fichero donde vamos a guardar los resultados de la ejecucin. $ # ejemplo de redireccin $ $ cal -m 5 2006 > tmp/calendario.txt $ $ # Hemos ejecutado la orden cal(endario) con la opcin $ # -m (las semanas empiezan en monday, lunes) $ # pero por pantalla no aparece nada, el resultado est $ # guardado en el archivo calendario.txt dentro del directorio tmp $ $ # Podemos verlo utilizando la orden less o cat $ $ cat tmp/calendario.txt May 2006 Mo Tu We Th Fr Sa Su 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 $ Cuando redirigimos la salida de una orden a un fichero y ste no existe el sistema lo

Plataforma de Teleformacin de IFES

Pgina 67 de 212

Introduccin a Linux

crea antes de escribir en l. Si el fichero ya existe y redirigimos a l una orden, su contenido es borrado antes de empezar a escribir en l. Si queremos aadir al final de un fichero el resultado de una orden, sin borrar el contenido previo, tendremos que utilizar el operador >>. $ # guardo la fecha actual en un fichero. $ $ date > fecha.txt $ $ cat fecha.txt Fri Dec 2 09:51:22 2005 $ $ # vuelvo a guardarla $ $ date > fecha.txt $ $ cat fecha.txt Fri Dec 2 09:51:31 2005 $ $ # la primera fecha ha desaparecido! $ $ # para no borrar las anteriores utilizamos el $ # operador >>, que aade el resultado de la orden $ # al final del archivo. $ $ date >> fecha.txt $ echo "---------------" >> fecha.txt $ cal -m >> fecha.txt $ cat fecha.txt Fri Dec 2 09:51:31 2005 Fri Dec 2 09:51:32 2005 --------------December 2005 Mo Tu We Th Fr Sa Su 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 $

Redireccin de la entrada estndar


La entrada estndar es mucho menos importante que la salida estndar, en casi todas

Pgina 68 de 212

Introduccin a Linux

Introduccin a Linux

las rdenes se puede poner como argumento el nombre de un fichero que es lo que hace la redireccin de la entrada. Algunas rdenes no tienen la opcin de indicarle el nombre de un fichero, pero la redireccin funciona siempre. Para redireccionar la entrada se pone el smbolo < seguido del archivo con el que queremos alimentar el archivo. $ # creo un fichero con nmeros $ $ seq 20 > tmp/numeros.txt $ $ # lo ordeno mediante sort $ $ sort tmp/numeros.txt 1 10 11 12 13 14 15 16 17 18 19 2 20 3 4 5 6 7 8 9 $ $ # con sort no hara falta redireccionar $ # pero lo hacemos por motivos didcticos $ $ sort < tmp/numeros.txt 1 10 11 12 13 14 15

Plataforma de Teleformacin de IFES

Pgina 69 de 212

Introduccin a Linux

16 17 18 19 2 20 3 4 5 6 7 8 9

Redireccin de los errores


Cuando ejecutamos un programa y se producen errores, por la pantalla salen tanto los errores como los resultados correctos. Por ejemplo, si nos ponemos a buscar en todo el disco duro, habr carpetas donde no tengamos permisos de escritura y nos saldr un error. Para que los errores no salgan por pantalla los podemos redirigir con el operador 2> No podemos separar el 2 del > .

$ # buscamos los archivos que tengan ms de un mega $ # en el disco duro $ # y metemos sus nombres en el archivo grandes.txt $ # $ # los errores los metemos en grandes.errores $ $ find / -size +1000k > tmp/grandes.txt 2> tmp/grandes.errores $ $ # miramos a ver cuantos archivos hay y cuantos errores se han producido. $ $ wc -l tmp/grandes.* 6 tmp/grandes.errores 781 tmp/grandes.txt

Pgina 70 de 212

Introduccin a Linux

Introduccin a Linux

787 total Si sabemos que se van a producir errores pero no nos interesan se pueden redirigir al dispositivo nulo, que es como tirarlos a la basura. $ # buscamos los archivos que tengan ms de un mega $ # en el disco duro $ # y los metemos el archivo grandes.txt $ # $ # los errores los eliminamos $ $ find / -size +1000k > tmp/grandes.txt 2> /dev/null $ $ # miramos a ver cuantos archivos hay $ $ wc -l tmp/grandes.* 781 tmp/grandes.txt

Uso de tuberas
Es muy comn que el resultado de una orden lo queramos volver a tratar mediante otra orden por ejemplo:

$ # vamos a buscar cul es el nmero asociado a un usuario determinado $ $ # buscamos en el archivo etc/passwd los usuarios que se llaman felix $ # y lo guardamos para su posterior tratamiento $ $ grep felix /etc/passwd > tmp/felix.txt $ $ # podemos ver qu hemos obtenido con $ $ cat tmp/felix.txt felix:unused_by_nt/2000/xp:1003:513:U-NUEVO2felix,S-1-5-21-2000478354-156398 $ $ # como nos interesa el tercer campo lo cortamos con cut $ $ cut -d':' -f 3 tmp/felix.txt 1003 $ $ # ahora ya podemos borrar el archivo temporal $ $ rm tmp/felix.txt $

Plataforma de Teleformacin de IFES

Pgina 71 de 212

Introduccin a Linux

Todo lo anterior lo podemos escribir de forma mucho ms resumida utilizando tuberas (mediante el smbolo | ) que pasa la salida de una orden a la siguiente. $ grep felix /etc/passwd | cut -d':' -f 3 1003 Se pueden concatenar varias tuberas, no slo una: $ find / -name '*.h' | grep "sys" | head -n 30 | less /cygdrive/c/WINNT/system32/faxcount.h /cygdrive/c/WINNT/system32/iasperf.h /cygdrive/c/WINNT/system32/msdtcprf.h /cygdrive/c/WINNT/system32/perfci.h /cygdrive/c/WINNT/system32/perffilt.h /cygdrive/c/WINNT/system32/perfwci.h /cygdrive/c/WINNT/system32/pschdcnt.h /cygdrive/c/WINNT/system32/rasctrnm.h /cygdrive/c/WINNT/system32/rsvpcnts.h /home/felix/tmp/blame-1.3/lib/sysexit_.h /home/felix/tmp/blame-1.3/src/system.h /lib/gcc/i686-pc-cygwin/3.4.4/include/syslimits.h /lib/gcc/i686-pc-cygwin/3.4.4/install-tools/gsyslimits.h /lib/gcc/i686-pc-mingw32/3.4.4/include/syslimits.h /lib/gcc/i686-pc-mingw32/3.4.4/install-tools/gsyslimits.h /lib/perl5/5.8/cygwin/CORE/iperlsys.h /usr/include/cygwin/in_systm.h /usr/include/cygwin/sysproto.h /usr/include/gtk-2.0/gtk/gtkfilesystem.h /usr/include/mingw/sys/fcntl.h /usr/include/mingw/sys/file.h /usr/include/mingw/sys/locking.h /usr/include/mingw/sys/param.h /usr/include/mingw/sys/stat.h /usr/include/mingw/sys/time.h /usr/include/mingw/sys/timeb.h /usr/include/mingw/sys/types.h /usr/include/mingw/sys/unistd.h /usr/include/mingw/sys/utime.h /usr/include/netinet/in_systm.h $ $ # buscamos archivos que acaben en .h $ # nos quedamos con los que contengan el texto sys $ # nos quedamos con las 30 primeras $ # lo vemos poco a poco con un programa interactivo

Pgina 72 de 212

Introduccin a Linux

Introduccin a Linux

Podemos ir viendo cmo se van uniendo las rdenes escribiendo la primera orden, recuperndola y poniendo la tubera y la siguiente orden, y as sucesivamente y vemos cmo va quedando.

$ find / -name '*.h' /lib/gcc/i686-pc-cygwin/3.4.4/install-tools/include/stddef.h /lib/gcc/i686-pc-cygwin/3.4.4/install-tools/include/unwind.h .... .... /usr/X11R6/include/Xm/XmosP.h /usr/X11R6/include/Xm/XmP.h /usr/X11R6/include/Xm/XmStrDefs.h /usr/X11R6/include/Xm/XpmP.h $ $ # ejecutamos la primera orden $ $ # vemos que est sacando montones de archivos $ # recuperamos la orden y la aadimos la tubera $ # y la orden grep para limitar qu resultados se muestran $ $ find / -name '*.h' | grep "sys" /cygdrive/c/WINNT/system32/faxcount.h /cygdrive/c/WINNT/system32/iasperf.h /cygdrive/c/WINNT/system32/msdtcprf.h /cygdrive/c/WINNT/system32/perfci.h /cygdrive/c/WINNT/system32/perffilt.h /cygdrive/c/WINNT/system32/perfwci.h /cygdrive/c/WINNT/system32/pschdcnt.h /cygdrive/c/WINNT/system32/rasctrnm.h /cygdrive/c/WINNT/system32/rsvpcnts.h /home/felix/tmp/blame-1.3/lib/sysexit_.h /home/felix/tmp/blame-1.3/src/system.h /lib/gcc/i686-pc-cygwin/3.4.4/include/syslimits.h /lib/gcc/i686-pc-cygwin/3.4.4/install-tools/gsyslimits.h /lib/gcc/i686-pc-mingw32/3.4.4/include/syslimits.h /lib/gcc/i686-pc-mingw32/3.4.4/install-tools/gsyslimits.h /lib/perl5/5.8/cygwin/CORE/iperlsys.h /usr/include/sys/acl.h /usr/include/sys/cdefs.h .... .... /usr/lib/gcc/i686-pc-cygwin/3.4.4/install-tools/gsyslimits.h /usr/lib/gcc/i686-pc-mingw32/3.4.4/include/syslimits.h /usr/lib/gcc/i686-pc-mingw32/3.4.4/install-tools/gsyslimits.h

Plataforma de Teleformacin de IFES

Pgina 73 de 212

Introduccin a Linux

/usr/lib/perl5/5.8/cygwin/CORE/iperlsys.h $ $ # vemos que est sacando slo los que contienen el texto sys $ # recuperamos la orden y la aadimos la tubera $ # y la orden head para que slo saque 30 $ $ find / -name '*.h' | grep "sys" | head -n 30 /cygdrive/c/WINNT/system32/faxcount.h /cygdrive/c/WINNT/system32/iasperf.h /cygdrive/c/WINNT/system32/msdtcprf.h /cygdrive/c/WINNT/system32/perfci.h /cygdrive/c/WINNT/system32/perffilt.h /cygdrive/c/WINNT/system32/perfwci.h /cygdrive/c/WINNT/system32/pschdcnt.h /cygdrive/c/WINNT/system32/rasctrnm.h /cygdrive/c/WINNT/system32/rsvpcnts.h /home/felix/tmp/blame-1.3/lib/sysexit_.h /home/felix/tmp/blame-1.3/src/system.h /lib/gcc/i686-pc-cygwin/3.4.4/include/syslimits.h /lib/gcc/i686-pc-cygwin/3.4.4/install-tools/gsyslimits.h /lib/gcc/i686-pc-mingw32/3.4.4/include/syslimits.h /lib/gcc/i686-pc-mingw32/3.4.4/install-tools/gsyslimits.h /lib/perl5/5.8/cygwin/CORE/iperlsys.h /usr/include/cygwin/in_systm.h /usr/include/cygwin/sysproto.h /usr/include/gtk-2.0/gtk/gtkfilesystem.h /usr/include/mingw/sys/fcntl.h /usr/include/mingw/sys/file.h /usr/include/mingw/sys/locking.h /usr/include/mingw/sys/param.h /usr/include/mingw/sys/stat.h /usr/include/mingw/sys/time.h /usr/include/mingw/sys/timeb.h /usr/include/mingw/sys/types.h /usr/include/mingw/sys/unistd.h /usr/include/mingw/sys/utime.h /usr/include/netinet/in_systm.h $ $ # vemos que est sacando slo los 30 primeros $ # recuperamos la orden y la aadimos la tubera $ # y la orden less para poder leerlo con comodidad $ $ find / -name '*.h' | grep "sys" | head -n 30 | less /cygdrive/c/WINNT/system32/faxcount.h /cygdrive/c/WINNT/system32/iasperf.h /cygdrive/c/WINNT/system32/msdtcprf.h /cygdrive/c/WINNT/system32/perfci.h /cygdrive/c/WINNT/system32/perffilt.h /cygdrive/c/WINNT/system32/perfwci.h

Pgina 74 de 212

Introduccin a Linux

Introduccin a Linux

/cygdrive/c/WINNT/system32/pschdcnt.h /cygdrive/c/WINNT/system32/rasctrnm.h /cygdrive/c/WINNT/system32/rsvpcnts.h /home/felix/tmp/blame-1.3/lib/sysexit_.h /home/felix/tmp/blame-1.3/src/system.h /lib/gcc/i686-pc-cygwin/3.4.4/include/syslimits.h /lib/gcc/i686-pc-cygwin/3.4.4/install-tools/gsyslimits.h /lib/gcc/i686-pc-mingw32/3.4.4/include/syslimits.h /lib/gcc/i686-pc-mingw32/3.4.4/install-tools/gsyslimits.h /lib/perl5/5.8/cygwin/CORE/iperlsys.h /usr/include/cygwin/in_systm.h /usr/include/cygwin/sysproto.h /usr/include/gtk-2.0/gtk/gtkfilesystem.h /usr/include/mingw/sys/fcntl.h /usr/include/mingw/sys/file.h /usr/include/mingw/sys/locking.h /usr/include/mingw/sys/param.h /usr/include/mingw/sys/stat.h /usr/include/mingw/sys/time.h /usr/include/mingw/sys/timeb.h /usr/include/mingw/sys/types.h /usr/include/mingw/sys/unistd.h /usr/include/mingw/sys/utime.h /usr/include/netinet/in_systm.h Es muy habitual acabar una orden que genera muchas lneas con | less para poder verlas ms cmodamente.

Tambin son finalizaciones habituales | wc para saber cuantas lneas genera o | grep cadena para quedarnos slo con las lneas que nos interesan.

Concatenar rdenes

Plataforma de Teleformacin de IFES

Pgina 75 de 212

Introduccin a Linux

rdenes seguidas
Normalmente cuando tenemos que poner varias rdenes se escriben en diferentes lneas. El mismo resultado se produce si las escribimos en la misma lnea, separadas por punto y coma (; ). $ # es lo mismo escribir $ $ ls tmp/*.txt tmp/calculos.txt tmp/calendario.txt tmp/carta.txt tmp/carta1.txt tmp/carta2.txt tmp/grandes.txt tmp/last_sesion.txt tmp/numeros.txt tmp/ordenes.txt $ date Fri Dec 2 12:01:41 2005 $ $ # que separarlo con punto y coma $ ls tmp/*.txt; date tmp/calculos.txt tmp/calendario.txt tmp/carta.txt tmp/carta1.txt tmp/carta2.txt tmp/grandes.txt tmp/last_sesion.txt tmp/numeros.txt tmp/ordenes.txt Fri Dec 2 12:01:41 2005 Tanto la separacin en diferentes lneas como con punto y coma hacen que se ejecuten las rdenes, una despus de otra independientemente de si se han ejecutado bien o mal. A veces querremos que una orden se ejecute slo si la orden anterior se ha realizado con xito. $ tar czvf usuario.tar.gz proyecto;rm -rf proyecto En el cdigo anterior realizamos una copia de seguridad del directorio proyecto y a

Pgina 76 de 212

Introduccin a Linux

Introduccin a Linux

continuacin lo borramos. Si la copia de seguridad no se ha producido porque hemos escrito algo mal o no tenemos permisos de escritura o est el disco lleno o cualquier otra cosa, el directorio se borrar de cualquier manera, habremos perdido el directorio sin tener la copia de seguridad.

Ejecucin condicional
Para asegurarnos de que una orden se ejecute slo si la anterior se ha realizado las concatenaremos con el smbolo && , sin separar. $ tar czvf usuario.tar.gz proyecto && rm -rf proyecto con este cdigo creamos el archivo donde guardamos la copia de seguridad y slo en el caso de que todo haya ido bien borraremos el directorio. Otras veces querremos que se ejecute una segunda orden slo si la primera ha fallado. Para concatenar rdenes y que se ejecute la segunda slo cuando falle la primera se utiliza el smbolo || . As en cat /etc/passwd || echo "no puedo abrirlo" >> /tmp/errores.txt Si se puede abrir, la segunda orden no se ejecuta. Si no lo podemos abrir, por el motivo que sea, ejecutaremos la orden echo, que guardar un texto en el archivo errores.txt.

Agrupar rdenes con parntesis


Hay veces que queremos agrupar varias rdenes para ejecutarlas si se cumple una condicin o queremos que el resultado de todas ellas vaya a un nico archivo. Para hacer esto se ponen las rdenes entre parntesis. $ echo escribe el ao;read a; cal -m $a || (echo el mes $a no es correcto; cal -m -y) En el ejemplo anterior el sistema nos pide el valor de la variable a , donde almacenamos el ao que nos interesa, intentamos sacar el calendario de ese ao y si se produce un fallo realizamos dos acciones, ya que estn entre parntesis, sacar un mensaje de error y sacar el calendario del ao actual). Los aos vlidos son del 1 al 9999.

Plataforma de Teleformacin de IFES

Pgina 77 de 212

Introduccin a Linux

$ (date;echo;cal -m;pwd) > /tmp/estado.txt es una manera mucho ms corta (y elegante) que escribir: $ $ $ $ date >/tmp/estado.txt echo >>/tmp/estado.txt cal -m >> /tmp/estado.txt pwd >>/tmp/estado.txt

Uso de variables
Las variables sirven para almacenar valores para utilizarlos ms adelante. Las variables se pueden establecer de dos maneras: $ a=32 $ read b hola poniendo el nombre de la variable, el smbolo = y el valor que se le asigna. No puede haber espacios antes ni despus del igual. Si el valor va a tener espacios hay que ponerlo entre comillas. leyendo el valor de la variable interactivamente con la orden read .:

Para utilizar el valor de una variable tenemos que aadirle el smbolo del dolar ($ ) antes del nombre. Utilizando variables podemos ahorrarnos tener que escribir mucho texto. $ $ $ $ $ $ t=/tmp/archivo_temporal.txt find / -size +10000k > $t wc $t head $t rm -f $t

Nos hemos creado la variable t con el valor de un archivo que se utiliza mucho. As en las siguientes rdenes slo escribimos $t y no tenemos que escribir el nombre completo. Cuando veamos las estructuras de control veremos ms utilidades de las variables.

Variables del sistema


El sistema define y utiliza varias variables que podemos ver y utilizar.

Pgina 78 de 212

Introduccin a Linux

Introduccin a Linux

Por ejemplo la variable HOME indica cul es nuestro directorio personal. Podemos ver su valor con la instruccin: $ echo $HOME Si hacemos un programa que depende del directorio del usuario podemos poner esta variable en lugar de tener que modificarlo. Para ver las variables del sistema utilizamos la orden set .

Para ver todas utilizamos esta orden pero con tuberas set | less o set | grep -i home .

Uso de comillas
En el shell utilizamos 3 tipos de comillas. comilla simple ('). En la tecla a la derecha el cero. Sirve para escribir texto literal. comilla doble ("). En la tecla del 2 con maysculas pulsadas. Si dentro de estas comillas hay una variable se sustituye por su valor. comilla grave (`). En la tecla que hay a la derecha de la tecla p, al pulsarla no sale nada en la pantalla, hay que pulsar un espacio despus. Su contenido se ejecuta y es sustituido por el resultado de la ejecucin.

$ # uso de las comillas para asignar un valor que tiene espacios $ $ v="alguien ha visto un pingino resfriado?" $ $ echo 'no sustituyo las variables ($v)' no sustituyo las variables ($v)

Plataforma de Teleformacin de IFES

Pgina 79 de 212

Introduccin a Linux

$ $ echo "con comillas dobles s ($v)" con comillas dobles s (alguien ha visto un pingino resfriado?") $ $ # uso de comillas graves $ $ echo "hoy es `date`" hoy es Fri Dec 2 13:08:53 2005

Estructuras de control
Las estructuras de control son "instrucciones" que hacen que unas rdenes se repitan o se ejecuten de forma condicionada por variables o estados del sistema. Todos los lenguajes de programacin tienen estructuras de control, pero esto es un entorno de trabajo, las estructuras nos permiten hacer gran cantidad de cosas en poco tiempo.

for
La estructura for hace que se repitan una serie de rdenes asignando a una variable un valor diferente cada vez que se repite el bucle. for i in pepe juan ana do tar czvf /var/backup/$i.tar.gz /home/$i && rm -rf /home/$i done Como podemos ver en el ejemplo anterior for va seguido del nombre de la variable que vamos a utilizar, en este caso i, despus la palabra in seguida de una lista de palabras, letras o nmeros que son los valores que ir tomando la variable. Despus de la lista viene la palabra do indicando que empiezan las rdenes que se van a repetir. Despus de las rdenes hay que poner la palabra done para indicar que hemos acabado las rdenes que se repiten. Vamos a seguir paso a paso qu hace el cdigo anterior: asigna a i el valor pepe. crea el archivo /var/backup/pepe.tar.gz partiendo del directorio /home/pepe. si se ha ejecutado bien la orden anterior se borra el directorio /home/pepe. asigna a i el valor juan. crea el archivo /var/backup/juan.tar.gz partiendo del directorio /home/juan. si se ha ejecutado bien la orden anterior se borra el directorio /home/juan.

Pgina 80 de 212

Introduccin a Linux

Introduccin a Linux

asigna a i el valor ana. crea el archivo /var/backup/ana.tar.gz partiendo del directorio /home/ana. si se ha ejecutado bien la orden anterior se borra el directorio /home/ana. terminamos el bucle.

Podemos hacer bucles que combinen los conocimientos anteriores: $ for i in enero febrero marzo abril;do echo "$i tiene `echo $i|wc -c` letras";done enero tiene 6 letras febrero tiene 8 letras marzo tiene 6 letras abril tiene 6 letras La instruccin superior tiene una alta densidad de tcnicas recientemente aprendidas, vamos a verlas con ms detalle: Separacin mediante ; . Debemos fijarnos que al acabar la lista (abril ), va un punto y coma, pero no va despus de do. Dentro de la cadena de echo sacamos el valor de la variable i. Utilizamos comillas graves para sacar el resultado de ejecutar una orden. En este caso la orden que se ejecuta es la combinacin de dos rdenes unidas mediante una tubera, la salida de la orden echo se le pasa a wc para que cuente cuantas letras tiene. Como wc -c cuenta tambin el carcter de retorno, nos muestra una letra de ms. Podamos arreglarlo pasndole menos letras. Lo siguiente ya es para nota.

$ for i in enero febrero marzo abril;do echo "$i tiene `echo $i|cut -c 2- |wc -c` letras";done enero tiene 5 letras febrero tiene 7 letras marzo tiene 5 letras abril tiene 5 letras Si queremos realizar un bucle numrico como en muchos lenguajes de programacin podemos usar como lista del for la orden seq entre comillas graves.

$ for i in `seq 1 10`;do echo hola $i;done hola 1 hola 2

Plataforma de Teleformacin de IFES

Pgina 81 de 212

Introduccin a Linux

hola hola hola hola hola hola hola hola

3 4 5 6 7 8 9 10

Editores de texto
Un editor de texto es simplemente un programa que nos permite escribir y modificar archivos de texto. Los editores de texto nos permiten tambin escribir programas, varias rdenes seguidas en diferentes lneas, hacer pruebas y volver a modificar los archivos de texto. Entre los programadores usuarios de Linux la mayora utiliza Vim o Emacs, que son editores de texto con multitud de trucos, opciones y atajos. Pero cuesta mucho tiempo aprender a manejarlos con soltura.

Pgina 82 de 212

Introduccin a Linux

Introduccin a Linux

Editor vim. Si no se va a trabajar intensivamente en modo consola es recomendable editar nuestros archivos de texto con programas grficos como Kate o gedit.

Plataforma de Teleformacin de IFES

Pgina 83 de 212

Introduccin a Linux

Editor Kate.

Pgina 84 de 212

Introduccin a Linux

Introduccin a Linux

Editor gedit. En modo texto hay varios editores sencillos como joe, pico o nano.

Plataforma de Teleformacin de IFES

Pgina 85 de 212

Introduccin a Linux

F.A.Q.

Pgina 86 de 212

Introduccin a Linux

Introduccin a Linux

Apndices (Conceptos bsicos)


Qu es un sistema operativo?
Un sistema operativo es un programa (o conjunto de programas) de control que tiene por objeto facilitar el uso de la computadora y conseguir que sta se utilice eficientemente. Se encarga de gestionar y asignar los recursos hardware que requieren los programas. El sistema operativo es el programa principal de nuestro computador: sin l no funcionara ningn otro y todos los dems programas se ejecutan sobre l, siendo el S.O. quien los administra y gestiona. El objetivo fundamental de los sistemas operativos es, por lo tanto, gestionar y administrar eficientemente los recursos hardware, permitiendo que se ejecuten concurrentemente varios programas, sin que haya conflictos en el acceso de cada uno de ellos a cada uno de los recursos que necesite, y sin que ningn programa monopolice alguno de ellos. Los recursos hardware son: el procesador (CPU ), la memoria principal, los discos y otros perifricos. Pensemos en un sistema multiusuario, esto es, un ordenador utilizado desde diversos terminales por varios usuarios (por ejemplo, el ordenador de un banco que gestiona las cuentas de los clientes o el ordenador que gestiona la reserva de los billetes de una lnea area). Obviamente, si varios usuarios estn utilizando la misma computadora, debe haber alguien o algo que asigne los recursos y evite los conflictos que puedan surgir cuando dos programas requieran los mismos elementos (la misma unidad de disco, o la impresora, por ejemplo). Esta es una de las funciones del sistema operativo. Adems de esta funcin de asignar los recursos a cada programa, el sistema operativo se encarga de contabilizar stos, y de la seguridad (que un usuario no pueda acceder sin autorizacin a la informacin de otro, por ejemplo). Del mismo modo, es normal que un ordenador ejecute varios programas simultneamente. Pueden darse conflictos cuando dos aplicaciones quieran modificar el mismo fichero. Es funcin del sistema operativo controlar estas situaciones para que no se produzcan daos o prdidas de informacin, como por ejemplo podra ocurrir si dos agencias de viaje intentan vender el mismo billete simultneamente. El sistema operativo facilita el uso de la computadora. Para ello crea un sistema de capas que evita al usuario y a las aplicaciones de mayor nivel tener que estar pendiente de las operaciones de menor nivel. Por ejemplo, cada dispositivo de E/S

Plataforma de Teleformacin de IFES

Pgina 87 de 212

Introduccin a Linux

(entrada/salida, como el teclado, la pantalla, la impresora, etc.), para ser utilizado, requiere varias instrucciones mquina que establezcan un dialogo entre las unidades centrales y el perifrico, enviando o captando el dato de salida o de entrada, respectivamente. Estas instrucciones dependen considerablemente de las caractersticas concretas del perifrico. Si se trata, por ejemplo, de una unidad de disco, hay que considerar el ancho de los buses, el tamao de su memoria intermedia, el arranque (y parada) de los motores de la unidad, el cdigo identificador de la posicin a donde hay que acceder, etc. Por otra parte, un dispositivo dado, estas instrucciones u operaciones son comunes para grabar o leer cual tipo de informacin (programas o datos), sea cual sea su naturaleza. El sistema operativo, con objetivo de facilitar el trabajo de los programadores, contiene mdulos de gestin de entradas / salidas que evitan a los usuarios tener que incluir esas instrucciones cada vez que hacen una operacin de entrada o salida. Se puede decir que esos programas del sistema operativo hacen transparente al usuario las caractersticas hardware concretas de los dispositivos. El sistema operativo tambin hace que la computadora se utilice eficientemente. Para poner de manifiesto cmo el sistema operativo puede incrementar la eficiencia consideremos otro sencillo ejemplo. Los programas tradicionalmente se ejecutan secuencialmente; es decir, hasta que no concluye la ejecucin de una instruccin no se ejecuta la siguiente. Supongamos que dentro de un programa hay una instruccin que implica la escritura de una pgina en una impresora lser. Hasta que no acabe de imprimirse dicha pgina el programa no puede continuar ejecutndose. Sin embargo, el sistema operativo puede recoger la orden de impresin, almacenarla en memoria y encargrsela a una rutina de impresin, dejando el programa que haba efectuado la llamada original a la impresora liberado para poder seguir trabajando. En resumen, el sistema operativo efecta, entre otras, las siguientes funciones: Facilita el uso de la computadora, en general, la comunicacin computadora / usuario Gestiona y asigna recursos hardware (procesador, memoria y perifricos) a los distintos programas o tareas Gestiona y mantiene los archivos en dispositivos de memoria masiva Apoya a otros programas Protege los datos y los programas, cuestin especialmente compleja en sistemas multiusuario Identifica y autentifica a los usuarios que hacen uso de la computadora. Contabiliza la utilizacin de los recursos realizada por los distintos usuarios

Qu es el software libre?
Adaptado de: , un documento de

Pgina 88 de 212

Introduccin a Linux

Introduccin a Linux

Qu es el software?
Empecemos con la definicin de Software : son los componentes no fsicos(programas) que un ordenador --o un aparato con capacidades de computacin-- necesita para funcionar. Lamentablemente, el castellano no ha adoptado una palabra propia para definir este concepto y nos vemos obligado a usar este anglicismo. Durante una poca, en los albores del ordenador personal en la dcada de los 80, se propuso el trmino logical , pero no lleg a prosperar su uso. El software, por el tipo de licencia, se divide en dos grupos principales: Software Libre y Software Propietario .

El software propietario
Este software se define como aquel cuya licencia restringe drsticamente su uso. Puede ser creado por desarrolladores para el uso en una nica empresa, como es el caso de numerosas aplicaciones verticales, aunque en este caso la empresa cliente suele retener la propiedad completa del software, o por pequeas empresas, que lo venden bajo numerosos tipos de licencias, algunas de ellas gratuitas (pero no libres). Sin embargo, cuando nos referimos a este tipo de software, estamos pensando en el que es producido principalmente por grandes empresas. La ms conocida de ellas probablemente sea Microsoft, pero existen otras: Oracle, Adobe,... En este caso, cuando pagas por un programa, no pagas por el cdrom, el programa o su cdigo, solamente pagas por su licencia, que es la autorizacin de su uso, con las condiciones que ponga la empresa propietaria de dicho software. En general, las condiciones que tiene la licencia del software propietario son stas, aunque la empresa propietaria del mismo suele poner las que le interesa: No se puede averiguar el cdigo fuente del programa; no se puede usar ms que en una sola mquina; no se puede copiar ni prestar a un amigo (para que lo copie ni para que lo use, aunque nosotros no lo estemos usando); no se puede ceder, no se puede alquilar. Esto hace que, por ejemplo, haya que pagar 2 veces por el mismo programa si se instala en 2 puestos de trabajo, aunque sean usados por la misma persona (en casa y en la oficina). Adems de no poder aprender sobre el software viendo el cdigo, ni adaptarlo a

Plataforma de Teleformacin de IFES

Pgina 89 de 212

Introduccin a Linux

nuestras posibilidades sin incurrir en delito. Algunas de estas empresas utilizan en ocasiones procedimientos comerciales que intentan monopolizar el mercado, causando el mayor nmero de incompatibilidades posibles para evitar que se use otro software que no sea el de su empresa y tener que estar pagando para actualizar cada poco tiempo los programas.

El software libre
Este software ha sido desarrollado principalmente por una comunidad de usuarios, para ponerlo al servicio de la sociedad. Hay excepciones, en que una empresa comercial, por algn motivo, desarrolla un software abierto y lo pone a disposicin de la comunidad de usuarios. Para que un software sea libre, ha de cumplir los siguientes requisitos: Libertad de uso: se puede usar de la manera que se quiera, por quien quiera, en el nmero de ordenadores que se quiera. Libertad de cdigo: la cual permite ver el cdigo, estudiarlo, usarlo, copiarlo, mejorarlo, adaptarlo a nuestras necesidades y ponerlo a disposicin de la comunidad. El cdigo fuente de un programa libre, debe estar a la disposicin de quien lo quiera. Libertad de distribucin: se puede copiar, regalar o vender, cmo y a quien se quiera. Sin dar explicaciones a los autores. Una lista de las licencias ms frecuentes de cdigo abierto est disponible en la pgina web de la Open Source Iniciatives: . Quizs el mximo exponente del software libre son las distribuciones GNU/Linux, ms conocidas globalmente como Linux.

Por qu usar software libre?


Adaptado de , un documento de

Por economa
Usando software propietario, por cada ordenador, hay que tener una licencia de cada programa que se use. Por poner un ejemplo, el sistema operativo que es lo mas bsico para que funcione el ordenador, la versin que se comercializa actualmente para uso
Pgina 90 de 212 Introduccin a Linux

Introduccin a Linux

domstico es el WindowsXP home y su licencia suele superar los 120 Euros, pero para poder hacer algo ms que encender el ordenador necesitamos programas de ofimtica como la suite de Microsoft Office XP y algunos programas de audio, publicacin y retoque fotogrfico, por ejemplo. El precio del software de cada terminal de trabajo puede superar ampliamente los 600 euros pudiendo invertir este dinero en la compra de nuevos equipos o perifricos que se necesiten si usamos software libre. Una distribucin de Linux, que se puede conseguir de forma gratuita, aunque puede costar desde los 20 a los 80 euros, donde se suelen incluir, algn manual, adems de soporte tcnico y el cdigo fuente del programa para su estudio o modificacin, un paquete de programas, entre los que hay software de oficina, editores grficos,herramientas para la administracin de redes, servidores de pginas web,correo electrnico, edicin de publicaciones... Un paquete de software que difcilmente podra pagar una persona normal... y pocas empresas con un parque de ordenadores.

Por su filosofa
Porque el software libre, ha sido y es creado por miles de personas que cooperan desde todas las partes de la geografa mundial coordinndose mediante Internet, de forma descentralizada adems de desinteresada en su mayora, aportan su conocimiento, su trabajo y su tiempo, para la creacin de este software, que ha sido propuesto a la Unesco a formar parte del patrimonio de la Humanidad. El Software Libre es la prueba de que las cosas pueden funcionar de muchas formas diferentes a como funcionan actualmente. Ensea los valores de la cooperacin por encima de la competicin, el de la libertad frente a la restriccin, compartir frente a retener, la difusin del conocimiento frente al oscurantismo y a valorar a las personas por su forma de ser y no por su apariencia, gnero o raza, ya que en la red desaparecen estas caractersticas.

Por favorecer el desarrollo tecnolgico


La poltica de desarrollo del software libre, tiene el mismo modelo que (hasta hace poco) la comunidad cientfica, que ha funcionado tan bien a la Humanidad. Cada descubrimiento, se pone inmediatamente en conocimiento del resto de la comunidad, lo que permite una rpida evolucin. Mientras que el software propietario, lejos de potenciarlo, lo frena poniendo

Plataforma de Teleformacin de IFES

Pgina 91 de 212

Introduccin a Linux

impedimentos para que otras compaas no puedan mejorarlo.

Por seguridad
El software libre basa su robustez y su seguridad en su transparencia. Miles de miembros de la comunidad del software libre, participa activamente en la bsqueda de fallos de seguridad, que son rpidamente reportados, siendo los mismos que encuentran los fallos muchas veces los que reportan la solucin, o los mismos desarrolladores, en poco tiempo. Mientras que el software propietario, basa su seguridad en el oscurantismo, esto es, no dar a conocer los fallos de seguridad del software, para que no puedan ser aprovechados por supuestos atacantes. Esto no hace ms que dar una ficticia seguridad a sus usuarios, que ven como da a da, se ven afectados por una gran cantidad de virus, gusanos e intrusos informticos.

Licencias de software libre

Introduccin a las licencias de software libre


Jorge Nonius. v. 0.92, 16 de abril de 2002

Resumen
Este artculo introduce a los usuarios de Debian GNU, con poco o ningn conocimiento jurdico, en el Derecho espaol sobre propiedad intelectual y su efecto en las licencias de software libre. Continua la serie dedicada a la propiedad intelectual que se inici con la "Introduccin a la propiedad intelectual" publicada tambin en La Espiral. Se completa con tres apndices en el apartado 7. El artculo se centra en el Derecho espaol, pero las normas sobre propiedad intelectual de programas de ordenador son prcticamente idnticas en todos los

Pgina 92 de 212

Introduccin a Linux

Introduccin a Linux

Estados miembros de la Unin Europea. El punto de vista adoptado no es siempre el del autor o fabricante de software, sino que ms bien se les trata de igual a igual con los usuarios, consumidores y dems personas con derechos y libertades implicados en la creacin, explotacin y utilizacin del software. 2001, Jorge Nonius. La versin ms actualizada se encuentra disponible en http://www.laespiral.org/xml/. Para ponerse en contacto con el autor: jnonius@terra.es. Este artculo puede ser copiado y distribuido en las condiciones de la licencia GNU para documentacin libre, GFDL (http://www.gnu.org/copyleft/fdl.html). [Nota de La Espiral: El autor, que firma con seudnimo, es usuario de Debian GNU y Licenciado en Derecho.]

Los derechos del autor del software


Este artculo continua la serie dedicada a la propiedad intelectual que se inici con la "Introduccin a la propiedad intelectual" publicada en La Espiral, pero, a diferencia de all, aqu no se trata slo de los derechos de autor, sino tambin de los derechos de los consumidores y usuarios, de ciertas libertades pblicas, y en suma de un abigarrado conjunto de situaciones jurdicas que aparecen en los conflictos, tericos o prcticos, acerca de las licencias de software libre. Utilizaremos siempre el trmino "libertad" en su acepcin tcnica estricta: Libertad es la situacin jurdica en que se encuentra uno cuando no le alcanza una prohibicin. Las prohibiciones, que adoptan muchas formas y muchas ms denominaciones (deberes, obligaciones, cargas, sujeciones) provienen de muchas fuentes: directamente de la ley, por medio de un contrato, de una demanda judicial o de una sentencia, etc. De estas prohibiciones trata este primer apartado. En el segundo apartado trataremos las libertades y restricciones a los usuarios implicadas en una licencia de software, y en especial en una de software libre. Pero antes daremos un repaso rpido a la contrapartida de las libertades de los usuarios: los derechos del autor del software, reconocidos y garantizados por la LPI. Vamos a explicar cules y cmo son los derechos del autor del programa. Por ahora trataremos al software como una obra intelectual ms, sin fijarnos demasiado en aquello que lo caracteriza y distingue de, por ejemplo, una novela o una cancin. Despus de tratar algunas cuestiones generales (1.1), definiremos quin es el titular de los derechos de autor de un programa (1.2), sobre qu objetos recaen y sus tipos (1.3), qu es y qu implica la divulgacin y la publicacin del software (1.4), cul es el multiforme contenido del derecho de autor y sus lmites (1.5), su duracin (1.6), las formas de explotacin y cesin de derechos (1.7) y finalmente las garantas legales de todo esto (1.8).

Plataforma de Teleformacin de IFES

Pgina 93 de 212

Introduccin a Linux

El lector que conozca los fundamentos jurdicos de la propiedad intelectual puede saltarse este apartado 1 y pasar directamente al 2.

Cuestiones generales sobre el software como obra protegida


La LPI slo protege los programas originales generados por el intelecto. sta es la definicin legal de programa protegible. Un programa no expresado (p. ej. una idea) no es un programa, ni tampoco lo es un programa no original, aunque veremos que se reconocen ciertos grados de originalidad en la LPI, por ejemplo para los programas derivados. No estn protegidos pues los programas no originales y en cierto modo tampoco los que se encuentren en dominio pblico, que son aquellos para los que ha transcurrido el plazo de duracin. Tampoco estn protegidos los programas que, aunque originales, estn destinados a producir fallos en el funcionamiento del sistema (virus, etc). Estas exclusiones se irn detallando en su lugar ms adelante, pues deben ser analizadas con cuidado. [P. ej.: La divulgacin de programas inditos que estn en dominio pblico genera derechos de propiedad intelectual a favor del divulgador].

El software no es patentable. Excepciones


La propiedad intelectual de los programas se reconoce y regula en la LPI ya que el software es oficialmente considerado "obra generada por el intelecto" . Por contra, el software no tiene consideracin oficial o legal de objeto patentable, pues en derecho espaol slo son patentables las invenciones nuevas de aplicacin industrial. Resulta que los programas de ordenador no se consideran invenciones (?), en un juicio ms formal que de fondo, y por lo tanto no pueden patentarse. Dicho de otro modo, un programa no puede ser objeto de propiedad industrial, que es el conjunto de derechos de los inventores sobre sus inventos y de las empresas sobre sus marcas y rtulos comerciales, o de los ingenieros sobre topografa de semiconductores, etc. Es una propiedad "incorporal" o "inmaterial" , lo mismo que la propiedad intelectual, pero se regula no en la LPI sino en la LP y LM, conforme a reglas y mecanismos diferentes. No obstante, un programa protegido por la LPI puede ser tambin objeto de proteccin por la LP si forma parte de un invento patentado. En ese caso, ambas vas de proteccin de derechos, la garantizada por LPI y la que garantiza la LP, son independientes, compatibles y acumulables. Vase en el Apndice B la referencia de las leyes citadas.

Pgina 94 de 212

Introduccin a Linux

Introduccin a Linux

Es el software equivalente a una obra literaria?


No es realmente necesario etiquetar a los programas de ordenador como obras literarias, artsticas o cientficas. Puede leerse en tratados internacionales y normas de la Unin Europea que los programas de ordenador han de quedar protegidos como "obras literarias" , por alguna extraa razn; tal vez porque, como no son obras cientficas (?) ni artsticas (??), en algn cajn hay que meterlos (???). Al fin y al cabo, el programa fuente viene expresado en lenguaje humano, aunque sea tan poco literario como C++. Este asunto es demasiado general, y no hace falta tratarlo aqu. Mejor veamos qu proteccin dispensa la LPI a los programas de ordenador, comparmosla con la dispensada a las obras literarias, y concluyamos sobre las diferencias encontradas. Adelantemos que hay diferencias, y muy notables. Probablemente a causa de que los programas no son en absoluto equivalentes a las obras literarias.

Los titulares de los derechos de propiedad intelectual sobre un programa


Menores de edad y asalariados
Los autores de programas que sean menores de edad son por supuesto considerados titulares nicos de sus derechos, igual que los mayores de edad. Pero slo los menores de 18 aos y mayores de 16 independientes -de acuerdo con sus padres o tutorespueden ceder sus derechos de explotacin del programa sin la autorizacin de quien les tenga a su cargo. Si un asalariado crea un programa original durante y con motivo de su relacin laboral con un empresario, se entiende que cede a ste en exclusiva sus derechos de explotacin sobre el programa, salvo pacto en contra. Pero el empresario no puede disponer del software con fines distintos de los de su actividad empresarial habitual. Ms adelante volveremos sobre este delicado asunto.

Programas colectivos y en colaboracin


La LPI nunca considera "autoras" de las obras intelectuales a las personas jurdicas (asociaciones, sociedades annimas, fundaciones), sino slo a las personas naturales o fsicas, con una excepcin: los programas de ordenador! Tcnicamente hablando

Plataforma de Teleformacin de IFES

Pgina 95 de 212

Introduccin a Linux

hay otro caso en el que tambin se dice que una persona jurdica queda equiparada al autor de la obra: las obras colectivas. Obra colectiva es un concepto difcil de definir con precisin. Para la LPI, programa de ordenador colectivo es el generado por iniciativa y coordinacin de una persona (natural o jurdica), que lo edita y divulga bajo su nombre. El programa colectivo est constituido por aportaciones de diferentes programadores, de las que resulta una creacin nica y autnoma, sin atribucin de partes o cuotas a cada aportador, y sin que uno solo de ellos pueda atribuirse derechos sobre el conjunto del programa. Programa colectivo no es lo mismo que programa creado en colaboracin, que nace del trabajo de varios coautores y permite la explotacin separada de cada aportacin. Volveremos sobre esta distincin enseguida, apartado 1.3.

Titulares originarios y derivados


El autor es el titular originario de los derechos de propiedad intelectual sobre su programa. Pero muchos de esos derechos, como veremos ms adelante, pueden ser cedidos a otras personas, que no por ello pasan a ser autores obviamente, pero s titulares de los derechos. Decimos en este caso que son titulares derivados, o simplemente titulares. Al hablar de titular originario diremos simplemente "autor" .

Tipos de programas
Los programas pueden clasificarse segn varios criterios con arreglo a la LPI: 1. 2. 3. Por la autonoma del programa tenemos programas independientes y programas dependientes. Por el nmero de autores y su forma de cooperar tenemos programas individuales, programas en colaboracin y programas colectivos. Por su originalidad tenemos programas estrictamente originales por un lado y programas derivados y compuestos por otro.

Ahora nos interesa slo dar algunas definiciones. Llamamos programa independiente al constituido como una "creacin autnoma" , aunque se publique conjuntamente con otros programas. Se distingue del programa compuesto, formado por varios programas independientes preexistentes. Decimos que un programa es realizado en colaboracin si resulta unitariamente del trabajo de varios desarrolladores, en el que es posible separar las aportaciones de cada cual y de explotarlas independientemente. En este caso, los programadores son co-autores, y pueden entre ellos pactar lo contrario y explotar por su cuenta cada cual su parte. Si no hay acuerdo, el nico lmite a la explotacin separada consiste en no

Pgina 96 de 212

Introduccin a Linux

Introduccin a Linux

perjudicar la explotacin comn. Para divulgar y modificar un programa en colaboracin hace falta el consentimiento de todos los coautores, que slo el juez puede excusar. Los derechos de autor pertenecen a cada coautor en la proporcin que entre ellos pacten; en otro caso, se aplican las reglas generales del Cdigo Civil sobre la comunidad de bienes. Programa derivado es el que se ha obtenido de un modo u otro de software anterior, p. ej. traducindolo, adaptndolo, modificndolo o revisndolo. En general debe hablarse de programa derivado ante cualquier transformacin de un programa preexistente. Pero cuidado: La LPI protege los derechos de los dos autores: el del programa primitivo y el del derivado. Un programa se dice "compuesto" si se ha obtenido de la incorporacin de uno o ms programas preexistentes y sin la colaboracin de los autores originarios. Se considera obra protegida siempre que haya autorizacin de los titulares de los programas originarios y se respeten sus derechos sobre ellos. Es decir: el autor del programa compuesto tiene derechos slo sobre la composicin, no sobre el software que la compone. La distribucin Debian GNU/Linux Potato, p. ej., es una obra compuesta, compuesta de software. Debian slo tiene derechos sobre la composicin en s, no sobre los programas independientes incluidos en la distribucin. Un programa (obra intelectual) se distingue del soporte en que est contenido (bien mueble, como puede ser un CD). El soporte del programa es el material en que se plasma, no es lo mismo que el programa. [Advertencia probablemente superflua: El significado de soporte al que nos referimos nada tiene que ver con el utilizado constantemente en informtica de "servicio de apoyo" ]. Lo importante es que son distintos e independientes los derechos sobre el programa (derechos inmateriales, de propiedad intelectual) y los derechos sobre el CD (derechos materiales, de propiedad comn). Al cederse los derechos de propiedad intelectual no necesariamente se ceden los derechos sobre el soporte. Viceversa y ms importante: ser dueo del soporte no significa ser titular de los derechos sobre el programa que incorpora.

Divulgacin y publicacin de un programa


Divulgar un programa es expresarlo de modo que se haga accesible al pblico por primera vez en cualquier forma. La divulgacin es facultad exclusiva y personalsima del autor, se dice incluso que es un "derecho moral" (vase ms adelante). Lo importante de todo esto es la fecha de divulgacin, porque a partir de ella se cuenta el plazo de duracin de los derechos de propiedad intelectual. La publicacin del programa es una forma de divulgarlo, de las ms importantes pero no la nica. Publicar un programa es expresarlo de modo que lo hace accesible al pblico mediante ejemplares o copias. Verdaderamente es la forma principal de

Plataforma de Teleformacin de IFES

Pgina 97 de 212

Introduccin a Linux

divulgacin del software, por eso no trataremos otras, como la comunicacin pblica, apenas concebible en el mbito de los programas de ordenador. No obstante, vase el apartado 1.7.

Facultades del autor del programa y sus lmites


Los derechos del autor se manifiestan ante todo en dos grupos de facultades: 1 Los derechos morales, o facultades personalsimas que tiene sobre los programas que ha creado; y 2 Los derechos patrimoniales, como la facultad exclusiva de explotarlos en cualquier forma y obtener remuneracin por ello; o el derecho a obtener remuneracin por el simple acceso a las fuentes; y el derecho a autorizar o prohibir su uso, divulgacin y explotacin; etc. El derecho moral es una figura que slo encontraremos en los derechos continentales, no en las leyes anglosajonas, al menos con el mismo aspecto. No puede cederse en vida, como parece deducirse del texto de la LPI. En realidad son varios los derechos morales del autor: 1. 2. 3. 4. 5. Decidir si su programa ha de divulgarse y en qu forma; Decidir si el programa aparecer con su nombre, bajo seudnimo o annimamente; Exigir el reconocimiento de su condicin de autor del programa, y el respeto a su integridad, sin deformaciones, modificaciones o atentados que perjudiquen el inters o reputacin del autor; A modificar el programa cuando le plazca, aunque ha de respetar los derechos adquiridos por otras personas. Volveremos sobre esto al tratar de las modificaciones de los programas; A retirar su programa por cambio de convicciones (derecho de arrepentimiento), indemnizando a quienes perjudique la retirada, normalmente los usuarios y el explotador del programa. Esta facultad y las dos siguientes no es probable que un programador las ejercite nunca; A acceder al ejemplar nico o raro de su programa que se halle en poder de otra persona, indemnizando los posibles perjuicios; A publicar su programa en coleccin escogida o completa.

6. 7.

Para ms detalles sobre el derecho moral, vanse los artculos 14 a 16 LPI. Los derechos patrimoniales son los que tienen relevancia econmica. Los trataremos muy sintticamente en el apartado 1.7, dedicado a la explotacin del software.

Duracin de los derechos. Programas en dominio pblico


Pgina 98 de 212 Introduccin a Linux

Introduccin a Linux

Los derechos de propiedad intelectual nacen con la simple creacin del programa, no es preciso anunciarlo ni registrarlo. Pero, como en las dems propiedades intelectuales, los derechos no duran indefinidamente; se disfrutan por un tiempo y despus se extinguen; se dice entonces que el programa pasa al dominio pblico. Esto es esencial, al menos en teora. Veamos: Una vez creado el programa, nacen los derechos de propiedad intelectual sobre l, que duran toda la vida del autor y 70 aos tras su muerte, contados desde el 1 de enero del ao siguiente al de la muerte, y despus se extinguen. Hay reglas especiales para los programas annimos y seudnimos, los realizados en colaboracin y los programas colectivos, los programas publicados por partes, que no detallaremos aqu (vense los artculos 26 y 30 LPI). Sin embargo, el derecho moral dura toda la vida del autor, pero slo dos de sus facultades duran despus indefinidamente sin lmite de tiempo: exigir el reconocimiento de la autora y exigir la integridad del programa. El resto de las facultades se extinguen con la muerte del autor, salvo la divulgacin del programa indito durante su vida, pero ste es un caso muy extrao y tampoco lo trataremos. Cuando los derechos de explotacin se extinguen por transcurso del plazo, el programa pasa al dominio pblico, es decir, puede ser utilizado por cualquiera siempre que respete la autora e integridad del software. Trataremos de nuevo el dominio pblico, con ms fundamento, en el apartado 4.

Formas de explotacin del programa. Cesin de derechos


Explotar un programa es difundirlo en cualquier forma con obtencin de beneficio. Comprende todas las modalidades posibles de ganar utilidad con el programa, pero las ms importantes son las formas de explotacin tipificadas por la LPI, que son las habituales: fijacin o grabacin, reproduccin, transformacin y distribucin. Los beneficiarios de la explotacin son en principio los autores, a quienes se llama tambin titulares originarios de los derechos de propiedad intelectual sobre el programa, pero es muy normal ceder la explotacin a empresarios especializados, quienes pagan al autor por ello. A estos les llamamos titulares derivados. No podemos ver aqu en detalle cunto hay detrs de las reglas sobre explotacin de los programas, recomendamos al lector interesado que acuda a la "Introduccin a la propiedad intelectual" publicada en La Espiral. Nos arreglaremos con una sinopsis: Todo el que no sea titular ha de obtener autorizacin para explotar el programa, salvo en casos tasados que veremos despus. Al titular corresponde la facultad de explotar el software, con los medios presentes o

Plataforma de Teleformacin de IFES

Pgina 99 de 212

Introduccin a Linux

futuros, ya que los tipos legales (reproduccin, distribucin, transformacin) slo son algunos de los posibles. Cualquier otra modalidad corresponde siempre y en exclusiva al autor, mientras no la ceda a otra persona. Cada modalidad de explotacin es adems independiente una de otra. No hemos citado una modalidad de explotacin, la comunicacin pblica, porque es dudoso que sea apta para el software, como s lo es para, por ejemplo, una obra musical. Remitimos al lector al otro artculo de esta serie para algunos detalles sobre esta jurdicamente compleja forma de explotacin, de todos modos seguramente inaplicable a los programas, pues no hay forma de acceder a ellas si no es mediante copia. Las formas tpicas de explotacin son, repetimos, la fijacin, la reproduccin u obtencin de copias, la modificacin y la distribucin. Nos ocuparn el resto de este artculo, as que ahora no diremos mucho sobre ellas.

Pero lo dicho no es suficiente. A riesgo de resultar esquemticos en exceso, aunque con la seguridad de no dejar cosas importantes sin atender, recapitulemos las facultades del autor de un programa (se encuentran principalmente en el art. 99 LPI): 1. 2. Derecho exclusivo de autorizar o prohibir la divulgacin del programa, derecho al reconocimiento de la autora, y dems derechos llamados morales. Los trataremos con un enfoque diferente en el apartado 4.2. Derecho exclusivo de explotacin del programa. Aqu comienzan los obstculos para las libertades de los usuarios que expondremos despus. Algunos de ellos no slo igualan, sino exceden, las facultades de los autores de los dems tipos de obras. Resulta que la explotacin de un programa de ordenador se entiende que incluye: 1. La reproduccin incluso para uso personal, o sea: la copia privada, que por tanto est expresamente prohibida. Es ilcito copiar programas sin autorizacin del autor, autorizacin normalmente expresada en una licencia. La prohibicin de copia es muy completa: Cuando la carga, presentacin, ejecucin, transmisin o almacenamiento de un programa requiera copiarlo (reproducirlo), debe disponerse de autorizacin del autor; 2. La transformacin y su reproduccin. De todos modos, es muy difcil transformar un programa si se carece del cdigo fuente, cdigo que el autor no tiene en modo alguno obligacin legal de ceder a nadie; 3. La distribucin pblica. Pero como incluso la reproduccin privada est prohibida, como acabamos de ver, resulta que tambin est prohibida o imposibilitada la distribucin privada, aunque la LPI no lo diga expresamente. Cuando se produce la cesin del derecho de uso, es decir cuando tenemos a un usuario legtimo (despus definiremos este concepto), se entiende que es una cesin no exclusiva -el autor del programa puede ceder el uso a ms personas, o crear ms usuarios legtimos, dar ms licencias en suma-; se entiende que la cesin es intransferible -el usuario no puede dar licencias a

3.

Pgina 100 de 212

Introduccin a Linux

Introduccin a Linux

su vez-; y la finalidad de la cesin es satisfacer las necesidades nicamente del usuario y de nadie ms. Este es el panorama con que se enfrentan las licencias de software libre, que vienen a subvertir los trminos: No limitar al usuario, que explote el programa a su entero placer, sin restricciones. Permite esto la LPI espaola? No se encontrar una licencia de software libre, y especialmente las copyleft que son las ms interesantes desde el punto de vista terico-jurdico, con el muro infranqueable de algn derecho del autor que sea inviolable, ni siquiera contando con la propia voluntad del autor? A esto tratan de responder los apartados siguientes. Pero antes, y para rematar el cuadro, trataremos brevemente el sistema de garantas de los derechos de autor.

Garantas legales de los derechos del autor del programa


Registro de programas
Ya sabemos que la autora se reconoce por la simple creacin del programa, no es preciso inscribirlo en ningn Registro. Pero el hecho es que tener un programa registrado refuerza muchsimo la prueba de la autora (art. 101 LPI). Los programas no se patentan, no pueden patentarse, pero s pueden registrarse. Por cierto que el software libre puede registrarse, precisamente como software libre, y esto no quita nada a la licencia, que sigue siendo de software libre en sus trminos literales. El Registro se limita a dar publicidad de su existencia y a dar fe de su validez. De hecho es la misma licencia lo que se inscribe. Pero todo esto es teora. Los programas se inscriben en la llamada Seccin VII del Registro General de la Propiedad Intelectual, cuya organizacin y funciones bsicas se exponen en la "Introduccin a la propiedad intelectual" . En realidad slo se inscribe en l una descripcin del programa o la determinacin de los elementos que permiten su completa identificacin, que se entiende contenida en las diez primeras y diez ltimas hojas del cdigo fuente (?), o en un resumen de un mximo de 20 folios del manual de uso (??), "siempre y cuando [dice el Reglamento del Registro] ste reproduzca los elementos esenciales del programa" (???) (arts. 13 y 14.7 del Reglamento de 1993). Si el programa es indito (o sea: si no se ha publicado) entonces debe adjuntarse todo el cdigo fuente (????). Estas son las reglas. No se dispone de datos acerca del uso que los programadores hacen del Registro, pero al parecer s lo usan. Cmo da publicidad el Registro a los programas inscritos? Esto tampoco es lo que

Plataforma de Teleformacin de IFES

Pgina 101 de 212

Introduccin a Linux

parece: El Registro es ciertamente pblico, pero de un programa inscrito slo podemos consultar los datos personales del autor y sus derechos sobre el programa (esto es: la licencia si existe). Y slo nos proporcionarn el ttulo y la fecha de publicacin. Por supuesto, jams nos permitirn consultar el cdigo fuente ni los manuales. As lo dice el art. 32 del Reglamento.

Infracciones de los derechos del autor del programa


Hay que estar de acuerdo con la FSF en que las leyes de copyright presentan como infracciones lo que, visto desde el punto de vista del usuario del software, son libertades truncadas que ste poda esperar disfrutar en el uso normal de un programa, libertades que de hecho se reconocen para otro tipo de obras. Una vez uno compra un libro (soporte fsico de una obra intelectual, literaria tal vez) no necesita licencia especial para leerlo. Por qu ha de ser as con el uso del software? Volveremos despus sobre esto. Pero nuestro esquema no estara completo si no se citaran aqu lo que la LPI llama claramente infracciones del derecho de autor. [Un tratamiento ms extenso del sistema de proteccin de los derechos de autor se encuentra en la "Introduccin a la propiedad intelectual" ]. Ahora nos centraremos en las infracciones de los derechos de autor de los programas de ordenador. Se encuentran especificadas en el art. 102 LPI y son stas (asstese el lector): Poner en circulacin una o ms copias de un programa, conociendo o pudiendo presumir su naturaleza ilegtima (no tener licencia para copiarlo). Est prohibido copiar un programa de ordenador sin licencia. Esta es la regla y slo una licencia puede excusar de su cumplimiento. En los apartados 4.3 y 6.2 trataremos este asunto de nuevo. Almacenar o simplemente tener con fines comerciales una o ms copias ilegtimas. Poner en circulacin o tener con fines comerciales instrumentos cuyo nico uso es facilitar la supresin o neutralizar sin autorizacin cualquier dispositivo tcnico utilizado para proteger un programa de ordenador. Hay que entender que adems de los virus, este tipo de software tampoco es obra protegida? No, pues la ley slo se refiere a ponerlo en circulacin. ste es de todos modos un caso dudoso.

En fin, si no se arregla de otro modo y por las buenas, el autor o titular que considere violados sus derechos ha de acudir al Juez de 1 Instancia de la localidad en donde se haya producido la infraccin, al que pedir que se condene al infractor a devolverle el beneficio ilcito, a indemnizarle por los perjuicios, a detener la actividad ilegal e impedirle que pueda reanudarla. Entretanto estudia el litigio y dicta sentencia, el juez puede adoptar medidas cautelares que llegan a ser muy gravosas para el presunto infractor, como el secuestro de los equipos y materiales de reproduccin y copia, etc. No podemos entrar en detalles, adems muy tcnicos y farragosos, fuera del objetivo de esta "Introduccin" . Para las infracciones de las licencias de software libre, vase el

Pgina 102 de 212

Introduccin a Linux

Introduccin a Linux

apartado 4.7.

Las libertades de los usuarios


Despus del examen general del apartado anterior, toca ahora cambiar el enfoque para tratar un tipo muy especial de frmula de cesin de derechos de explotacin todava poco conocida en los medios profesionales jurdicos: la licencia de software libre. Para esto es necesario partir de las libertades del usuario del programa, no de los derechos de autor. stos se encuentran protegidos por la LPI, como hemos visto en el apartado 1. Las libertades de los usuarios por contra tienen sus garantas (en la Constitucin y en otras leyes que se citarn) muy difuminadas y dispersas, no en un nico cuerpo legal sistemtico. Para empezar despejaremos algunos problemas de nomenclatura. Reservaremos el trmino software libre ( "free software" ), que abreviaremos sl, para los programas que se ajustan a la especificacin de la Free Software Foundation, que es la ms rigurosa, pero puede utilizarse tambin como denominacin genrica del conjunto de licencias que liberan las facultades tpicas del copyright bsicas para la libre utilizacin del software, aunque no se ajusten estrictamente a la definicin de la FSF y siempre que del contexto se deduzca a qu nos referimos (en los apartados 3.1 y 4.1 se encuentran las definiciones). Sin embargo, no nos atendremos necesariamente al criterio de la compatibilidad de las licencias con la GPL, no porque este punto de vista no tenga importancia, en realidad es tal vez el ms importante, sino porque la propia FSF dispone de documentacin apropiada -vanse las referencias al final en el apndice Cy porque aqu deseamos examinar solamente la compatibilidad de las licencias de software libre con el Derecho espaol. Huelga decir que el objetivo es el de saber a qu atenernos en Espaa cuando surjan conflictos de intereses relacionados con el software libre. Y es que la FSF opera obviamente con categoras jurdicas anglosajonas, sutilmente diferentes de la europeas continentales en lo sustancial, y decididamente distintas en los formalismos. Tenemos que asegurarnos de que hablamos consistentemente, pues las palabras son importantes. Para empezar, los hispanohablantes no tenemos ningn problema en distinguir algo que es gratis de algo que es libre, pequeez que a los angloparlantes les ha costado mucha tinta. El primer objetivo es entonces disponer de un vocabulario apropiado, no obligatoriamente castellanizado, por exigencias prcticas obvias y que sirva para entendernos en nuestras discusiones. Pero hay un segundo objetivo: Comprender lo mejor posible las licencias de software, que es el instrumento utilizado por el movimiento del sl en general, y por el copyleft en particular, para articular jurdicamente un fenmeno que sobrepasa el mbito del

Plataforma de Teleformacin de IFES

Pgina 103 de 212

Introduccin a Linux

software, alcanza a la documentacin tcnica y cientfica y comienza a sustentar la distribucin de otro tipo de bienes y productos (vase el apartado 5). No es que software libre y copyleft hayan surgido de las licencias, sino que stas han "instrumentado" tales movimientos, se han servido de ellas para recuperar las libertades acadmicas, cientficas y de los usuarios. De hecho, parece que el software libre es incluso un modelo de negocio, pero tambin es un fenmeno social, un mtodo de investigacin y de docencia. Orbitando las licencias de software se encuentran muchos asuntos que no podemos tratar, pero tan importantes que se citan a continuacin algunos: Conflictos graves, comerciales o no, entre distribuidores de software, p. ej. el pleito ATT-Berkeley de 1992, o la cuestin GNU v. KDE de 1997. Aparicin de sistemas operativos libres, con representantes como la rama BSD o GNU/Linux, en competencia insospechada con los grandes fabricantes de software cerrado (expresin que usaremos en lugar de software propietario, ms adelante se explica por qu). Alianzas expresas o tcitas entre fabricantes de software libre y hardware, en competencia tambin inesperada con los chips dominantes. Es el caso del acuerdo Apple-Universidad Carnegie Mellon para el MacOS X, o el impulso dado por el software libre a los chips Alpha, SPARC... Nuevos modelos de negocio, como el de Cygnus con el compilador GCC, acuerdos de Red Hat con Penguin Computer y con la misma Cygnus Solutions (noviembre de 1999). La aparicin de un instrumento incomparable de colaboracin profesional y cientfica, y de frmulas como la FDL para la transmisin de documentacin tcnica. Vase sobre esto el apartado 5. Iniciativas legislativas, como la reciente sobre uso de software libre en la Administracin pblica del Per, 9 de abril 2002.

Todos estos son asuntos del mayor inters, en el apndice C se encontrarn algunas referencias. Tambin se trata de cuestiones complejas, pero alejadas en cierto modo de nuestro tema, mucho ms restringido: las licencias de software segn el Derecho espaol, y especialmente las de software libre. Comenzaremos con unas cuantas frases fuertes y un esquema lo ms breve posible, para comodidad del lector, de lo que ya se ha ido apuntando con otro enfoque en el apartado 1, es decir: Qu exige la LPI espaola a las licencias de software libre para considerarlas viables o atendibles por los jueces (stos como ltimo recurso, claro est).

Premisas del software libre


El sistema jurdico espaol, como todos los europeos y anglosajones de corte

Pgina 104 de 212

Introduccin a Linux

Introduccin a Linux

"constitucional" , se basa en la libertad, en el sentido de que uno puede hacer lo que guste mientras no est prohibido. Esta es una afirmacin muy general, pero nos sirve para enfocar la cuestin tal y como interesa, o sea: desde el punto de vista de las libertades del usuario, y no el de los derechos de autor. Este ltimo, as lo esperamos, ha quedado expuesto ya en el apartado 1. Para ms detalles, vase la "Introduccin a la propiedad intelectual" publicada en La Espiral. En nuestros modernos sistemas legales se entiende que la libertad tiene lmites, no se garantiza la libertad absoluta. Un gnero esencial de esos lmites a la libertad son los derechos y libertades de los dems. As que nuestra primera afirmacin queda "uno puede hacer lo que guste mientras no dae los derechos y libertades de los dems" . Por supuesto, los derechos y libertades de los dems tampoco son absolutos.

Las libertades del usuario de software


Algunos derechos y libertades se consideran fundamentales, se les garantiza una proteccin reforzada sobre los dems derechos y libertades ordinarias. De entre ellos, las licencias de software se encuentran con los siguientes, que vamos a clasificar en tres grupos: 1) En el primer grupo tenemos los fundamentos de nuestra sistema poltico. No se trata de un autntico reconocimiento de libertades y derechos fundamentales, sino de su basamento: La libertad es el fundamento de todo lo dems. Se ha dicho muchas veces, y no se trata slo de una dificultad idiomtica del ingls, que el concepto software libre trata de la libertad, no del precio. El concepto de libertad es calificado por nuestra Constitucin, nada menos que en el primer prrafo de su primer artculo, como uno de los valores superiores del ordenamiento jurdico espaol, junto con la justicia, la igualdad y el pluralismo poltico. Es cometido de los poderes pblicos promover las condiciones para que la libertad y la igualdad de los individuos y grupos sean reales y efectivas; remover los obstculos que impiden o dificultan su plenitud; y facilitar la participacin de todos en la vida cultural (art. 9.2 CE). El libre desarrollo de la personalidad es uno de los fundamentos de nuestro orden poltico (art. 10.1 CE).

2) El segundo grupo es el ms importante a efectos prcticos. Se trata de las libertades y derechos fundamentales que directa y necesariamente los jueces han de proteger. Los ms importantes son los tres ltimos de los que se citan a continuacin, directamente esgrimibles ante argumentos del tipo "el software libre atenta contra la libre expresin, embota la creatividad y vulnera el copyright" , etc. No es as, sino justamente al contrario. En trminos jurdicos, el usuario de cualquier software debera poder argir conforme a los siguientes tems, que incluso tienen proteccin de amparo

Plataforma de Teleformacin de IFES

Pgina 105 de 212

Introduccin a Linux

garantizada hasta el recurso ante el Tribunal Constitucional, y aplicables segn las circunstancias. Son los siguientes: Derecho a la igualdad y no discriminacin por condicin social (art. 14 CE). El uso de la informtica ser limitado por la ley para garantizar el pleno ejercicio de los derechos de los ciudadanos (art. 18.4 CE). Este artculo se incluy en la Constitucin con una finalidad relativamente clara: evitar que mediante la informtica se alcanzara un control excesivo sobre las personas, y con la misma finalidad se promulg la Ley de proteccin de datos personales de 1998. Pero cabe una segunda interpretacin interesada, y un poco traida por los pelos, pero no irrazonable: Las limitaciones al uso del software, especialmente algunas clusulas abusivas (vase el apartado 6), dificultan de tal modo el pleno ejercicio de los derechos de los consumidores y ciudadanos en general que deben quedar restringidas por la ley [Me complace hacer constar aqu que estando ya estas lneas escritas, encuentro este mismo argumento como motor del proyecto (proposicin) de ley sobre uso del software libre en la Administracin pblica remitido al Congreso peruano en abril de 2002 por los congresistas VILLANUEVA NEZ y RODRICH ACKERMAN, as como en la admirable carta que el primero dirigi al gerente de Microsoft del Per. Los textos se pueden encontrar en http://www.gnu.org.pe/rescon.html] Derecho a la libre expresin de pensamientos e ideas (art. 20.1.a CE). Derecho a la produccin y creacin literaria, artstica, cientfica y tcnica (art. 20.1.b CE). Derecho a la educacin y a la libertad de enseanza. Aunque la libertad acadmica, y una de sus componentes, la libertad de estudio, no figuran expresamente en el art. 27 CE, puede entenderse que se encuentran implcitamente reconocidas por la Constitucin, pues son necesarias y congruentes con el modelo docente general que pretende garantizar.

3) Finalmente tenemos los principios rectores de la poltica social y econmica. No son derechos y libertades fundamentales propiamente dichos, sino directrices que, aplicadas a stos, han de inspirar su efectividad y garanta. Se trata concretamente del mandato que la Constitucin contiene en el art. 44, dirigido a los poderes pblicos, de promover y tutelar el acceso a la cultura, a la que todos tenemos derecho, as como a la ciencia y la investigacin cientfica y tcnica en beneficio del inters general.

El derecho de autor no es un derecho fundamental


Por contra, y desde el punto de vista del autor del programa, no puede decirse que haya derechos fundamentales implicados. No es pensable una lesin a los derechos de propiedad intelectual que afecte tambin a un derecho fundamental de los que acabamos de citar, ni a ningn otro, con una sola excepcin, por lo dems bastante rara en la prctica: el atentado contra el honor, la reputacin, la imagen del autor,

Pgina 106 de 212

Introduccin a Linux

Introduccin a Linux

derivado de una infraccin de los derechos de propiedad intelectual (vase el art. 18.1 CE). Este es un caso poco usual y no vamos a tratarlo, salvo algunos apuntes en 4.5.2. En realidad, s tiene que ver la propiedad intelectual con un derecho fundamental, pero de los que la Constitucin considera de segunda categora, el derecho de propiedad (art. 33 CE). No puede negarse que tanto el fenmeno del software libre, como ms acentuadamente el copyleft, parecen superficialmente ir directos contra el derecho de propiedad (intelectual). Nada ms falso. El software libre se basa en el derecho de autor para, sobre l, modular sus facultades intrnsecas a las necesidades prcticas de las libertades que hemos citado antes, sin machacarlo en modo alguno. Simplemente el software libre tiene copyright. Asmismo, una licencia copyleft, que impide la redistribucin de software con restricciones aadidas a las de la distribucin originaria, no atenta contra el derecho de autor del programa originario, pero esto no es obvio y en lo que sigue tratar de demostrarse. Tampoco atenta contra los derechos del autor del programa derivado, que modific el software porque la licencia copyleft se lo permita, si no no hubiera podido hacerlo; y se ve obligado a redistribuirlo con licencia copyleft por el mismo motivo, es decir: por haber aceptado previamente una licencia copyleft, una decisin voluntaria y libre. Naturalmente que cuando uno acepta una licencia (copyleft o no) ve limitadas algunas de sus libertades y derechos, se dice que asume obligaciones, deberes y sujeciones, lo mismo que cuando se casa o cuando firma un prstamo hipotecario. Simplemente acepta de forma libre los trminos que se le ofrecen. En este sentido puede decirse que la GNU-GPL es un tratado de desarme (WAYNER), porque da total libertad a todos, salvo a quien quiere apropiarse -para s y con exclusin de los dems- de la libertad que recibi, la que le permiti y permite explotar el programa. El derecho de propiedad, decimos en Espaa, queda delimitado por su funcin social de acuerdo con la ley (art. 33 CE). No puede haber otra finalidad del Derecho de propiedad intelectual que garantizar al autor la percepcin de los beneficios de su explotacin, lo que es perfectamente acorde con los postulados del software libre. Pero tampoco hay funcin social de la propiedad del software que no sea su libre uso y explotacin por quien sepa hacerlo. No debe olvidarse que el autor tiene derecho al honor y a la propia imagen, ya se ha dicho; pero tambin l mismo est manifestando, al escribir cdigo, su libertad de expresin de pensamientos e ideas y su derecho a la produccin cientfica y tcnica. En resumen, las licencias de software son expresin de un derecho individual ordinario: el derecho de autor. Aunque la autora de una obra tiene mucho que ver con algunos derechos fundamentales, es muy dudoso que, fuera de los aspectos relacionados con la reputacin del autor, los dems sean considerados por un juez como expresin de

Plataforma de Teleformacin de IFES

Pgina 107 de 212

Introduccin a Linux

sus derechos fundamentales. Por contra, los usuarios s pueden esgrimir sus derechos y libertades fundamentales frente a ciertos atentados contra el software libre (vase el apartado 4.7).

Las normas imperativas de la LPI


Los lmites de las libertades de la gente sobre los programas de ordenador, y los derechos sobre ellos de sus autores o titulares, se encuentran principalmente en la LPI, aunque no solamente. Debe tenerse en cuenta tambin toda la legislacin existente sobre proteccin de los consumidores y usuarios, competencia desleal, condiciones generales de la contratacin y tantos otros asuntos. No se har aqu as, nos limitaremos al campo de los derechos de autor, o de propiedad intelectual. Ms adelante aadiremos de todos modos algunas notas sobre estas cuestiones. La LPI est pensada sobre todo para proteger a los autores, es decir, sus derechos ordinarios sobre la obra; no para proteger las libertades de los dems (usuarios, otros programadores), aunque no falten artculos que garantizan algunas, muy escasas e indefensas, como vamos a ver. Efectivamente, ya se habr advertido que hay reglas claramente limitativas a los usuarios o destinatarios de los programas o a quienes los explotan; y otras por contra limitan a los autores. Esto es lo que puede esperarse de un sistema jurdico que no admite libertades o derechos absolutos. Pero lo importante ahora est un paso ms all: Hay reglas de la LPI que son solamente indicativas, pueden no seguirse sin cometer ninguna ilegalidad (se llaman reglas "dispositivas" ); y tambin hay reglas que necesariamente han de seguirse, a riesgo de que despus el sistema no te proteja si las infringes, se llaman reglas "imperativas" . Uno no puede saltarse las reglas imperativas de la LPI impunemente. Cmo se sancionan sus infracciones? Depende del grado de la infraccin, pero para resumir diremos que va desde tener la falta por inexistente -como una clusula invlida de una licencia, simplemente no se aplica- hasta la prisin -desde luego, slo en casos muy graves y poco frecuentes. Ahora lo que interesa es recalcar que si una licencia de software contiene clusulas contrarias a las normas imperativas de la LPI, tales clasulas no valen, incluso si el perjudicado hubiera dado su acuerdo para aceptar la licencia (p. ej., porque desconoca que tales clasulas eran ilegales).

Beneficios irrenunciables de los autores de software


Aunque una licencia de software libre no implica renuncia alguna, al menos en sentido tcnico, conviene aclarar algunas cuestiones que al parecer sus crticos mantienen en reserva. Para empezar, en Espaa es en general posible la exclusin voluntaria de la ley aplicable, lo mismo que la renuncia de derechos reconocidos en la ley, a condicin

Pgina 108 de 212

Introduccin a Linux

Introduccin a Linux

de que no se contrare el inters o el orden pblico ni se perjudique a terceros (art. 6.2 CC). Lo que no se permite es obligar a nadie a renunciar a sus derechos irrenunciables, y justamente para prevenir esta posibilidad se establecen las reglas que se citan a continuacin, pensadas para proteger al autor de contratos leoninos con empresarios sin escrpulos, no para proteger a distribuidores de software dominantes frente al desorganizado pblico de usuarios, en su mayora desconocedores de las posibilidades inauditas de sus mquinas. Por lo tanto, interesa saber cules son esas normas imperativas. Relacionarlas todas no es fcil ni por suerte tampoco muy til. Basta conocer las ms importantes. Hay de todo: beneficios renunciables slo por acuerdo de las partes, ventajas irrenunciables... Nos quedaremos nicamente con las reglas imperativas relevantes sobre los programas de ordenador: 1) Los derechos morales son irrenunciables y no transmisibles (artculo 14 LPI). Veremos ms adelante que las licencias de software libre no afectan a esta limitacin, vase el apartado 4.2. 2) La cesin de derechos de autor no puede alcanzar nunca a las modalidades de utilizacin o medios de explotacin o difusin inexistentes o desconocidos al tiempo de la cesin (artculo 43.5 LPI). En general, para la cesin de derechos y el efecto de esta regla sobre el software libre vase el apartado 4.2. 3) Tambin son irrenunciables los beneficios que la LPI otorga a los autores en los actos de transmisin de sus derechos, o contratos de cesin de derechos de autor. As lo dice el artculo 55 de la Ley. Esto tiene mucha ms importancia, y de hecho algunos de los siguientes tems nos dar algn trabajo despus. Pero en general las licencias de software libre no se ven afectadas por estas reglas sobre "derechos irrenunciables" , aunque parezca paradjico. Pinsese que al fin y al cabo la GPL (p. ej.) no supone renuncia alguna para el autor, sino la cesin voluntaria de sus derechos transmisibles. Todo esto se tratar despus, ahora nos limitaremos a enumerar, slo aproximativamente, los beneficios irrenunciables de los autores al ceder sus derechos: Es nula la cesin de derechos de explotacin respecto del conjunto de obras que pueda el autor crear en el futuro (art. 43.3). Es obligatorio documentar las cesiones (art. 45). Durante 10 aos desde la cesin de la explotacin, el autor puede exigir la revisin de la cantidad con que se le ha remunerado si considera (y logra probar) que es inequitativa o desproporcionada al beneficio obtenido por el cesionario o explotador del programa (art. 47). Supongamos que Juan cede sus derechos a Pedro mediante la licencia L-1, y Pedro los cede a su vez a otro mediante L-2. Si L-2 no respeta los trminos de L-1, esta primera licencia puede quedar sin efecto y dejar de amparar a Pedro, a requerimiento de Juan (art. 68.1.d LPI). Las cesiones no exclusivas son intransmisibles (art 50.1).

Plataforma de Teleformacin de IFES

Pgina 109 de 212

Introduccin a Linux

En general, las obligaciones de los editores suponen en muchos casos -en el polo opuesto- derechos irrenunciables del autor del programa.

Garantas a favor de los usuarios


Por otro lado estn las normas imperativas de la LPI que establecen garantas a favor de los usuarios, insoslayables para el autor. A diferencia de antes, algunas garantas no desaparecen ni siquiera mediante pacto en contra, pero otras s (se encuentran en el art. 100 LPI). Las primeras son stas: El usuario legtimo -vase ms adelante su definicin- siempre ha de poder hacer una copia de seguridad, si es necesaria (?) para la utilizacin del programa. El usuario legtimo siempre puede observar, estudiar y verificar el funcionamiento del programa para determinar las ideas y principios implcitos [algoritmo] en cualquier elemento, mientras lo haga durante cualquiera de las operaciones de carga, visualizacin, ejecucin, transmisin o almacenamiento del programa que tiene derecho a hacer.

Las siguientes son facultades del usuario legtimo, pero son renunciables mediante pacto contrario entre el usuario y el autor: Puede reproducir o transformar un programa, includa la correccin de errores, si es necesario para su utilizacin legtima y conforme con la finalidad. Pero cabe pacto en contra, que es lo normal, pues mal pueden corregirse los errores sin tener a mano el cdigo fuente. El autor no puede oponerse a que el titular de derechos de explotacin realice o autorice versiones sucesivas y programas derivados. El lector ha ledo bien: la LPI garantiza al titular de derechos de explotacin (aparentemente no al mero usuario) de un programa del que no sea autor la posibilidad de modificarlo o de que otros lo hagan con su autorizacin. Este apartado supone un aparente obstculo a algunos requerimientos del software libre, lo despejaremos despus. Aunque no parece que un usuario realice con el mero uso una explotacin del programa, la LPI no parece excluirlo, tal vez a causa de una redaccin defectuosa del precepto o por falta de sistemtica. Nuestra conclusin provisional podra ser: La LPI garantiza a cualquier usuario o explotador legtimos hacer este tipo de transformaciones en el cdigo. Pero desde luego, necesitar para ello el cdigo fuente. Y la interpretacin estndar no es sa, sino la siguiente: Esta regla se refiere slo a los programas realizados por encargo, o slo a los titulares no autores de derechos de explotacin distintos del mero uso. Tampoco puede el autor de un programa oponerse a su reproduccin y transformacin si se dan todas las condiciones siguientes: 1. Que sea indispensable para obtener la informacin necesaria para la interoperabilidad con otros programas de un programa creado de

Pgina 110 de 212

Introduccin a Linux

Introduccin a Linux

2. 3. 4. 5.

forma independiente; Que la reproduccin o transformacin la haga el usuario legtimo o persona facultada para utilizar una copia del programa, o persona autorizada en su nombre; Que la informacin necesaria para conseguir la interoperabilidad no haya sido puesta a disposicin, fcil y rpidamente, de las personas citadas antes; Que la reproduccin o transformacin se limiten a las partes del programa original necesarias para la interoperabilidad; Que el resultado se utilice slo para la interoperabilidad del programa creado de forma independiente; slo se comunique a terceros si es necesario para la interoperabilidad; y no se utilice para el desarrollo, produccin y comercializacin de un programa sustancialmente distinto en su expresin o para cualquier otro acto que infrinja los derechos de autor.

Estas reglas sobre la interoperabilidad (excepcin o lmite a la prohibicin de reproducir y transformar un programa sin autorizacin del autor) no pueden interpretarse de modo que se perjudique injustificadamente los legtimos intereses del titular de los derechos de autor, o se contrare la explotacin normal del programa. Est claro adems que esta garanta para el usuario, muy limitada y borrosa, no es efectiva si no se proporciona el cdigo fuente, al menos de las partes del programa necesarias para la interoperabilidad. Una interpretacin restrictiva acerca de los derechos sobre los interfaces es la siguiente: La especificacin del interfaz est protegida, pero no lo estn los protocolos en que se base y que sean necesarios para escribir cdigo que cumpla las especificaciones. Tales protocolos no pueden ser obra protegida. Hasta aqu llega la proteccin que garantiza la LPI a los usuarios de programas de ordenador. No olvidemos que esta ley, como todas las de su clase en los dems pases, y lo mismo en los tratados internacionales, est pensada para proteger los derechos del autor. De un autor preconcebido, idealizado en el literato, en el pintor, indefensos frente a los editores, los galeristas. Un autor de aspecto distinto al del titular de derechos de explotacin de un programa de ordenador, p. ej. un gran fabricante de software cerrado. Sea como sea, la LPI reconoce y protege sobre todo los derechos del autor de un programa, no los del usuario del programa. Ahora estamos listos para acometer nuestra tercera tarea: Seguir aclarando la terminologa, dar algunas definiciones ms, desentraar el contenido estndar de una licencia de software y, digamos en general, perder un poco el respeto a las ms abtrusas discusiones jurdicas e incluso poder participar en ellas. Para esto, disponer de un lenguaje preciso es esencial.

Plataforma de Teleformacin de IFES

Pgina 111 de 212

Introduccin a Linux

Cuestiones generales y terminolgicas sobre las licencias de software


Inevitablemente y antes de nada, hemos de ponernos de acuerdo sobre las definiciones, sobre el significado de los conceptos que vamos a emplear, que confrontaremos con los de la ley espaola para obtener conclusiones congruentes. Aadiremos ms definiciones, que no necesitaremos hasta entonces, en el apartado 4.1.

Qu es una licencia de software


Es un tipo de contrato de software, de software ya creado. Recae sobre los derechos de propiedad intelectual. En este artculo no se tratan los contratos de software por crear, como el contrato de desarrollo de programas por encargo, servicios de adaptacin de software; ni contratos como "escrow" , etc. Pero ojo: s trata de los derechos de propiedad intelectual originados por motivo de esos contratos, o de cualquier otro por el que se genere software original. Externamente una licencia puede adoptar muchas formas, desde un documento en papel hasta un archivo electrnico de texto, parte de un ejecutable, etc. Puede ser un acto jurdico independiente o puede integrarse documentalmente en el seno de otro contrato, aunque la LPI exige documentos independientes. La licencia puede recaer sobre software tambin muy variado, aunque la LPI hable slo de programas. En esencia es una oferta de acuerdo realizada por el autor o titular del programa, que si es aceptada por un usuario o explotador del software, pasa a convertirse en contrato entre las partes. Aqu hay varios conceptos involucrados, necesitamos desmenuzarlos.

Qu es una licencia
En realidad lo que llamamos licencia pasa por varios estadios: Primero es una declaracin unilateral del autor del programa en la que expresa las condiciones en que se puede acceder a l y explotarlo. Como tal declaracin prcticamente no tiene ningn valor legal, slo lo adquiere (se dice que pasa a ser ley entre las partes) cuando otra persona acepta sus trminos. Como es lgico, cuando la licencia se rechaza, o no se acepta, simplemente no llega a tener efecto. Es preciso recalcarlo: Aunque la licencia es unilateral, pues la origina el autor voluntariamente y en los trminos que le interesen, est pensada para ser aceptada o rechazada por otros, normalmente quienes van a usar el programa o van a explotarlo de algn modo. Si la contraparte rechaza la licencia no hay ms que hablar: probablemente el autor del programa no ceder su software, p. ej. no permitiendo su

Pgina 112 de 212

Introduccin a Linux

Introduccin a Linux

instalacin. Pero si la licencia es aceptada, entonces deja de ser una declaracin unilateral y se convierte en un negocio bilateral, entre licenciante (el autor o el titular de los derechos de autor) y licenciatario (quien va a usar o explotar el software). A este negocio puede llamrsele "licencia" o "licencia contractual" o tambin "acuerdo de licencia" . Su denominacin tcnica precisa es, para la mayora de los casos, la de "contrato de cesin de derechos de uso y/o explotacin del programa de ordenador" . Es normal que el documento de licencia contenga otras cuestiones, como garanta, servicios de soporte y postventa, que no tienen nada que ver con la propiedad intelectual ni con el software libre, y no los tratamos en este artculo. Tal vez haya ocasin en versiones sucesivas de tratar alguno de estos asuntos.

Qu es "software"
La LPI no habla nunca de software desde luego, sino de "programas de ordenador" , que define (art. 96) como secuencia de instrucciones o indicaciones destinadas a ser utilizadas, directa o indirectamente, en un sistema informtico para realizar una funcin o una tarea o para obtener un resultado determinado, cualquiera que sea su forma de expresin o fijacin. No es una bella definicin, ni tampoco un modelo de precisin. Dice la LPI que gozan de la misma proteccin que los programas tanto la documentacin preparatoria como la documentacin tcnica y los manuales de uso. Ya sabemos adems que se protegen las versiones sucesivas y los programas derivados, pero no los creados con el fin de ocasionar efectos nocivos a un sistema informtico. Tampoco estn protegidas las ideas y principios en que se base cualquier elemento de un programa, incluidos los que sirven de fundamento a los interfaces. Esta exclusin parece referirse a los algoritmos y otros elementos, que no necesitamos determinar completamente para saber a qu nos referimos con el trmino legal genrico "programa de ordenador" . En la prctica, el problema de la definicin se plantea ante casos como los sitemas expertos, los interfaces, etc. Los programas no pueden patentarse, pero s formar parte de un objeto patentado. Entonces, la proteccin de la Ley de Patentes tambin se activa a favor del programa, aunque sea indirectamente. [Nota sobre patentes: Recurdese lo dicho en el apartado 1, en Derecho espaol son patentables las invenciones nuevas de aplicacin industrial, pero los programas de ordenador no se consideran invenciones, y por lo tanto son no patentables]. Asmismo un programa puede incorporar una marca comercial, sea su mismo ttulo u otra marca. La marca comercial del programa no es objeto de proteccin por la LPI pero s por la Ley de Marcas, lo mismo que antes. Por supuesto podemos considerar incluidos en la definicin legal de programa todo aquello que tcnicamente lo es: ejecutables de cualquier tipo, mdulos, controladores,

Plataforma de Teleformacin de IFES

Pgina 113 de 212

Introduccin a Linux

aplicaciones de usuario y sistemas operativos, suites, paquetes y distribuciones, con toda la documentacin. La GPL concretamente se aplica a programas y a "cualquier otro tipo de trabajo" . No olvidemos que la LPI exige que la secuencia de instrucciones sea original, obra del intelecto, y se destine a un sistema informtico. La Directiva 1991/250, traspuesta a la ley espaola en 1993, incluye los programas "incorporados al hardware" . En Espaa, por otra parte, la topografa de semiconductores est protegida en una ley propia de 1988; vase el art. 104 LPI. Son programas protegidos tanto los originales como los derivados, las versiones sucesivas y las originadas en bifurcaciones. Tenemos obras independientes, como un kernel; y obras compuestas, como paquetes y distribuciones. Tenemos obras originales como el primer ncleo Linux, y obras derivadas como un kernel 2.2.x. Sin embargo, puede que no encontremos software en dominio pblico por expiracin del plazo de duracin de los derechos, pues no han transcurrido aos suficientes desde la aparicin de los primeros programas a mediados del siglo XX. Es cierto que, adems, este software slo tiene utilidad histrica. Puede un autor poner su software en dominio pblico voluntariamente? No en Derecho espaol, para el cual una obra est en dominio pblico slo cuando se extinguen todos los derechos de explotacin por transcurso del plazo de duracin. No es exactamente lo mismo que carecer de copyright, como lo definen la FSF y la OSI en su digamos "plataforma jurdica anglosajona" . Volveremos sobre todo esto ms adelante en 4.1.

Quin es el autor del software


Aqu no vamos a extendernos, porque esto ha debido quedar claro desde el apartado 1. Recordemos los conceptos de autor asalariado, y de obra colectiva frente a obra en colaboracin. Un programa como Windows XP es obra colectiva, creada por asalariados de Microsoft, que asume la autora del programa y sin que ninguno de los desarrolladores puedan reclamar la explotacin separada sobre su parte. La distribucin Debian GNU/Linux es una obra en colaboracin en cuanto a los componentes individuales, pero la distribucin en s es una obra colectiva, compuesta, cuyo titular es una asociacin de desarrolladores voluntarios que se sirve de la organizacin Software In The Public Interest, Inc. para dotarse de personalidad jurdica, titular de los derechos de autor de la distribucin en sus diferentes versiones [Esta explicacin es conforme con el Derecho espaol, y en realidad vale para todo el mundo. Se incluye aqu a ttulo de ejemplo, esperemos que apropiado]. Una observacin comn en la literatura jurdica acerca de lo ventajosa que resulta la proteccin del programa no libre para una empresa de software por las reglas del derecho de autor, se basa en que normalmente los autores de los programas son annimos y quien se beneficia de los derechos de autor (la empresa) no es autor. Pero
Pgina 114 de 212 Introduccin a Linux

Introduccin a Linux

lo cierto es que, primero, la observacin tambin rige para los autores de obras literarias salvo excepciones; segundo, la observacin no se aplica al software libre, cuyos autores no son casi nunca annimos; y, tercero, la mayor parte de los derechos de explotacin -y por tanto su proteccin legal- queda cedida a la comunidad de usuarios y por tanto las vas para obtener beneficio no derivan ya de la exclusividad.

Quin es "usuario legtimo" del software


Este es un concepto mucho ms importante, aunque la LPI no lo define. Podemos suponer, en un examen superficial de las premisas del apartado 2.1, o simplemente deducindolo de nuestra experiencia cotidiana, que usuario legtimo es quien ha comprado el software, y en efecto as es cuando la compra del soporte incorpora -mediante la licencia- la autorizacin para usarlo. Pero hablando estrictamente, no existe la "compraventa de software" . Lo que uno compra en la tienda (tal vez un CDROM con un juego o una distribucin GNU) no es el programa, sino slo su soporte ms una oferta de licencia para uso y explotacin -licencia que despus habr de aceptar. Y esto es todo (y nada menos, dirn el vendedor, el distribuidor, el titular de derechos de explotacin y/o el autor del programa). Esta explicacin suele encontrarse en las licencias de software propietario, que en este artculo y por las razones que se explicarn despus, preferimos denominar "software cerrado" . No es una explicacin realmente necesaria, pues todo software nace con copyright. Pero tambin puede adquirirse software por ftp annimo gratuitamente con licencia copyleft, y por supuesto quien lo obtiene as puede usarlo muy legtimamente; simplemente la LPI no estaba pensando en esta circunstancia. Cuando se aprob la LPI en 1987, incluso cuando se aprob en Bruselas en 1991 la directiva que oblig a hacer algunas modificaciones en la ley espaola en 1993, el software libre no era un movimiento lo suficientemente relevante en Europa y menos en Espaa. Lo relevante para nosotros ahora es otra cosa: No hay otro tipo de obras para las que la LPI distinga entre usuarios legtimos e ilegtimos, slo hace la distincin para los programas de ordenador y para las bases de datos. No se habla nunca de usuario ilegtimo de un libro, o espectador ilegtimo de un cuadro. Esto parece absurdo, y puede que lo sea en cierto sentido que vamos a explicar. Ante todo, no estamos hablando de quien roba un CD que contiene un programa, o roba un libro, o entra en un museo sin pagar. Estamos hablando de quien usa un programa que instal desde un CD prestado por un amigo, de quien ha ledo un libro prestado por un amigo, de quien contempla en casa un cuadro prestado por un amigo. Es evidente que en los dos ltimos casos no hablamos de "lector ilegtimo" ni de "espectador ilegtimo" , pero para la LPI el primer fulano, el del programa de ordenador prestado, se es un usuario ilegtimo. Esta es una extraa asimetra. Nos dar que hablar despus.

Plataforma de Teleformacin de IFES

Pgina 115 de 212

Introduccin a Linux

Quin es el responsable ante el usuario


El autor tiene siempre algunas obligaciones frente a quienes explotan su obra. Ante todo responde de la autora y de la originalidad de la obra. Responde tambin de su propia capacidad jurdica para licenciar el programa. El supuesto que ms problemas puede dar es el de un redistribuidor de software que l cree libre y que en realidad no lo es, por error, a sabiendas o mediante engao (y esto tendr que probarlo). Ocurre que las exigencias jurdicas del software libre (sl) pueden confundir: Redistribuir software libre del que no se es autor no traslada automticamenten al redistribuidor las responsabilidades del autor. Para empezar, la habitual clusula de ausencia de garanta deja claras ya algunas cosas. En general, si el licenciante del programa original (normalmente el autor pero no necesariamente, p. ej. en el caso de los asalariados) y el licenciatario (quien tal vez lo va a modificar y redistribuir) acuerdan vlidamente los trminos de la licencia, est claro que de la autora de los programas responde cada cual: del original el autor o licenciante; y del derivado el licenciatario, pero por motivo de una segunda licencia, en la que es l ahora el licenciante de un tercero licenciatario, y as sucesivamente. Ms en general no es posible, ni seguramente til, tratar los diferentes supuestos de responsabilidad (patrimonial o no, ya sea civil, penal o administrativa). Es un asunto demasiado amplio, rido y complejo. Y a efectos prcticos no muy til. Tal vez sea ste, como otros del presente artculo, objeto apropiado para una apartado FAQ en versiones sucesivas. De todos modos, uno debera ser capaz de deducir la respuesta a su duda a partir de cuanto contienen la presente "Introduccin" (sa es su finalidad).

Contenido deseable de una licencia de software


Lo que sigue pretende indicar al lector, que probablemente no ser ducho en cuestiones jurdicas, en qu debera fijarse al leer una licencia para entenderla correctamente y sin mucho trabajo. El mtodo no va a ser la presentacin de un prototipo de licencia abstracta, sino el examen de la mejor licencia concreta que hemos podido encontrar, ya sirva a un programador tal cual, o como modelo para obtener otra a su gusto, o tal vez de anticristo para estigmatizarla a placer. Se trata de la GPL. La GNU-GPL es una pieza jurdica de gran valor. Entre otras utilidades, contiene la estructura completa del sistema de cesin de derechos de autor sin atentados al copyright y respetuosa con los derechos y libertades de los usuarios. Es superior tcnicamente a los mejores ejemplos de licencias de software no libre, es ms completa que las licencias breves tipo BSD, y mucho ms clara y fcil de leer que cualquier otra de software no libre que conozcamos. Para empezar, la GNU-GPL carece de traducciones oficiales. Pero esto no es ningn

Pgina 116 de 212

Introduccin a Linux

Introduccin a Linux

problema prctico, primero porque hay traducciones oficiosas; segundo, porque el ingls original es fcilmente traducible a trminos jurdicos de cualquier pas; tercero, porque el texto evita deliberadamente los tecnicismos y expresiones o rodeos oscuros. Sin ser coloquial, que casi lo es, pasa por ser un modelo de redaccin jurdica. Estas cualidades no se deben slo a su punto de vista distinto al de la propiedad intelectual. Por cierto, la GPL no se opone a la propiedad intelectual, pero su enfoque no es desde luego el de la proteccin de los derechos de autor -para eso ya est la LPI- sino el del respeto de la libertad de los usuarios. Para redactar una licencia que acabara por dar nombre a una forma de distribucin ( "copyleft" ) la FSF debi sortear ms de un serio escollo, adems de enfrentarse con crticas no siempre benvolas, con el punto de mira desviado y finalmente incapaces de demoler el imponente edificio que se estaba levantado bajo su proteccin. Por ahora no disponemos de un modelo mejor, aunque todo es perfectible. Las directrices Open Source son muy prcticas, pero tcnicamente hablando no son un modelo de licencia, y en trminos jurdicos significan un paso atrs sobre el esquema de la FSF, como se tratar de demostrar despus. No son tampoco fciles de entender. Pero su importancia e influencia son enormes y le dedicaremos el apartado 4.5.2. Iremos dando indicaciones por orden, para desmenuzar la licencia deseable, aunque no llegaremos a los detalles. La forma ms segura de licenciar el programa consiste en incluir un anuncio al principio de cada fichero fuente, unas lneas de indicacin de autora y ao de publicacin (es decir, lo que se llama "lnea de copyright" ) y la indicacin de uno o dos lugares fcilmente accesibles donde encontrar el texto completo de la licencia. Una licencia no necesita un prembulo que exponga la justificacin de las clusulas o cuerpo de la licencia, pero la GPL tiene uno, y muy til porque sirve para solventar las dudas que pueden aparecer al leer o al aplicar las clusulas. La GPL no es neutral, pretende ser interpretada en un sentido dado y no en otro distinto u opuesto. Su sentido es el de la libertad, y est recogido justamente en el prembulo, que forma parte de la licencia misma, aunque esto la FSF no se ha ocupado de indicarlo as. De todos modos, la licencia es toda ella autoexplicativa, e interpretarla debera de resultar fcil. No puede decirse lo mismo de muchas otras licencias estndar que hemos podido consultar. En el cuerpo de una licencia de software debe encontrarse 3 grupos de clusulas, slo en lo que se refiere a los derechos de autor; habr ms apartados si se tratan asuntos sobre garantas, servicios de apoyo, pagos y dems, pero las materias ajenas a la propiedad intelectual no son tratadas en estas notas. Los grupos de clusulas son los siguientes, y se incluye despus de cada uno, como ejemplo, las clusulas correspondientes de la GPL. La discusin del grupo segundo, el cuerpo principal sobre explotacin del programa, la dejamos para el apartado 4. 1. Clusulas generales

Plataforma de Teleformacin de IFES

Pgina 117 de 212

Introduccin a Linux

2.

3.

Definiciones y mbito de aplicacin de la licencia. Advertencias de copyright (GPL clusula 0) 2. Formas de aceptacin de la licencia (GPL clusula 5) Uso y explotacin del programa 1. Copia, modificacin y distribucin libres (GPL clusulas 1 a 3) 2. Copyleft, o persistencia de la libre distribucin de programas derivados (GPL clusulas 4, 6 y 10) 3. Integridad del sistema copyleft en caso de impedimento forzoso a la libre distribucin (GPL Clusula 7) 4. Posibilidad de lmites geogrficos a la libre distribucin (GPL clasula 8) Intangibilidad de la licencia. Versiones sucesivas (GPL clusula 9)

1.

Las diferencias entre el orden lgico y el de presentacin por la GPL se deben a necesidades prcticas de exposicin de la FSF. Comprobaremos que para analizar el funcionamiento de una licencia de software libre es ms apropiada la ordenacin lgica. A continuacin tratamos las clusulas generales, y como se ha dicho dejamos las relativas a la explotacin para el apartado 4.

Clusulas generales
Definiciones, mbito de aplicacin de una licencia y avisos de copyright Estas declaraciones de la licencia no tratan directamente de la explotacin del software, e incluso pueden ser tericamente innecesarias, pero siempre ayudan a la comprensin del cuerpo principal. En cuanto a las definiciones, podemos usar las contenidas en las leyes o bien habremos de hacerlo nosotros mismos. Son esenciales las de programa u objeto licenciado, programa derivado (el obtenido a partir del que ahora licenciamos) y las formas de explotacin. De todo ello se encuentra informacin en los apartados anteriores. Es tpico de las licencias, como de muchos otros contratos, fijar los trminos importantes que vayan a usarse ms a menudo: "usted" puede ser el licenciatario, "titular del copyright" o simplemente "titular" es el autor o el derecho-habiente de las facultades de explotacin que van a autorizarse, "versiones y/o programas derivados" son el resultado de cualquier modificacin del programa, incluida la traduccin, etc. Todo esto depende de las concretas necesidades en cada caso. Una licencia debe delimitar claramente su mbito geogrfico de aplicacin, su duracin (que puede ser indefinida) y las formas de explotacin que se van a tratar, las que se retienen y las que se ceden. Aqu bastar limitarse a definirlas lo mejor posible y siempre que parezca conveniente o necesario. Hacen referencia a cuestiones generales tratadas en otras partes de este artculo, as que no las repetimos. Es clsico advertir que la licencia no se aplica a la entrada o a la salida del programa, salvo que se diga otra cosa, es decir: siempre que una y otra no sean a su vez obra protegida.

Pgina 118 de 212

Introduccin a Linux

Introduccin a Linux

Es casi esencial que el programa incluya de algn modo uno o ms avisos de copyright y de la licencia, como ya hemos reseado antes. La copia impresa debe prevalecer sobre la informacin que muestre la pantalla, porque es ms sencillo hacer modificaciones de ltima hora en aqulla. Formas de aceptacin de la licencia Este asunto es clave, al menos formalmente, pero no debe dar problemas en su puesta en prctica. No hay autntica licencia hasta su aceptacin por el destinatario, esto ya lo sabemos. La forma de la aceptacin es variada, las hay muy rebuscadas, incluso puede encontrarse algunas definitivamente abusivas para el usuario (vase el apartado 6.1). Aqu nos referiremos slo a las habituales. En esencia, se trata de que queden claras las voluntades del licenciante y del licenciatario, por cualquier medio admitido. Primero, es conveniente advertir al destinatario que no est obligado a aceptar la licencia para el uso y la copia privada, pero s para la modificacin y distribucin (o redistribucin) del programa. Los dos primeros actos son privados, normalmente; pero los segundos involucran a terceras personas. A primera vista, de lo dicho se podra deducir que este software no va a tener "usuario legtimo" en el sentido genuino de la LPI, ni estar prohibida la copia privada, tambin en contra de la LPI. Pero no es as. El uso y la copia privada son actos que normalmente slo conocen los mismos usuario y copista, p. ej. si se realizan en casa. Por tanto no tiene mucho sentido exigir la aceptacin de la licencia para estas dos formas de explotacin. Esto es as sobre todo para el software libre, en donde por definicin prcticamente todo usuario es legtimo y quedan autorizadas las formas principales de explotacin. Obviamente, para el software cerrado la situacin es muy distinta, ya que su explotacin est radicalmente restringida desde el mismo uso. De hecho, desde antes del uso, pues para algunos fabricantes el romper los precintos del paquete de CDs supone la aceptacin de la licencia (puede comprobarse en las licencias de conocidas casas comerciales). Suele darse por vlido que la realizacin de actos de explotacin permitidos por la licencia suponen su aceptacin. Por supuesto, pulsar "aceptar" en el ejecutable interactivo tiene exactamente -jurdicamente- ese valor, aunque debera darse la oportunidad al usuario de poder usar el programa durante un tiempo para comprobaciones y ajustes, antes de la aceptacin. En fin, que no hace falta una declaracin pesonal por escrito, firmada y fechada, para aceptar una licencia. S tal vez para rechazarla, si uno cree que ha realizado, por error o defecto del programa, algo que puede significar la aceptacin de lo inaceptable. El software libre, de todos modos, no se enfrenta con estos problemas casi nunca.

Intangibilidad de la licencia
El contenido de una licencia, sobre todo de una licencia de software libre, no es libre.

Plataforma de Teleformacin de IFES

Pgina 119 de 212

Introduccin a Linux

Dicho de otro modo, el efecto de una licencia de sl no es reflexivo, no se aplica a s misma. Una licencia no puede permitir su propia modificacin entretanto est en vigor, salvo por acuerdo expreso de ambas partes. En Derecho espaol se dice, ms en general, que los trminos de un contrato no pueden quedar al arbitrio de uno solo de los contratantes. Por todo esto se exige que la licencia sea intangible, intocable mientras est en vigor. Tenemos que distinguir las novaciones, o cambios que puede sufrir una licencia por acuerdo entre las partes o por sentencia judicial, p. ej. si un tribunal anula una clasula abusiva; de las revisiones de una licencia-modelo o general, como p. ej. la GNU-GPL. El supuesto interesante es el segundo. Una licencia-tipo, como la GPL o la FDL, que al fin y al cabo son obras literarias, estn protegidas por las leyes de derechos de autor, aqu aplicados estrictamente con la finalidad de mantener el texto sin cambios. Estas licencias estn sujetas al copyright, en este caso de la FSF, con domicilio en Boston-MA. Esto significa que quien use la GPL para licenciar su programa y mantenga el nombre de la licencia en el ejemplar que utilice para su programa, debe mantenerla ntegra y sin modificaciones. En otro caso, y si prefiere el autor realizar algn cambio, no ser ya "licencia GPL" y no podr utilizar tal denominacin. A esto se refiere la GPL en la advertencia que va antes del prembulo. La intangibilidad de las licencias-tipo se debe a su papel de destinataria de tantas remisiones que circulan por ah. La seguridad del trfico exige que los trminos literales no cambien. An as, una licencia modelo puede pasar revisiones, y por tanto podemos encontrarnos con versiones distintas, pero no deberan serlo mucho sino slo en mejoras, aclaraciones y tratamiento de casos nuevos. Todas las versiones deben ajustarse al esptitu de la licencia original, en otro caso habr de redactarse una licencia distinta y con otro nombre o identificador. La FSF admite adems que si alguien licencia su programa con la versin x puede hacerlo al mismo tiempo con referencia a cualquier versin posterior. Esto se contrapesa estableciendo que cuando no se especifique el nmero de versin de la licencia, el destinatario elegir la que ms le convenga, algo perfectamente vlido y respetuoso con el usuario. Puede revocarse una licencia? Una licencia es revocable por el autor en muchas circunstancias y en ejercicio de varias facultades. Una de ellas, el caso del llamado derecho de arrepentimiento, por cambio de convicciones del autor, forma parte del derecho moral. Por supuesto tiene un lmite: indemnizar los perjuicios que pueda producir a terceros. Y lo mismo ocurre con cualquier revocacin unilateral (no pactada) de la licencia. Si hay acuerdos sobre este asunto, habr que estar a lo acordado. En el sl la situacin no tiene mayor relevancia, salvo en un caso: la revocacin de la licencia copyleft Es ello posible? Y de serlo, qu consecuencias tiene para el autor? Y para los licenciatarios antiguos y nuevos? En el software de uso masivo, sea libre o no, las dificultades en la aplicacin prctica de las reglas sobre revocacin de licencias son tan grandes que se usa otra frmula:

Pgina 120 de 212

Introduccin a Linux

Introduccin a Linux

nueva licencia para una nueva versin del programa; o bien la doble licencia. Los problemas resueltos de esta forma resultan ms manejables, pero no dejan de ser serios. Su tratamiento aqu excede del mbito de las presentes notas, aunque se espera poder tratarlo mnimamente en versiones sucesivas.

Tipos de licencias de software


Aunque la GNU-GPL, BSD, XFree86, Mozilla, y otras muchas son las licencias ms conocidas, lo cierto es que no podramos enumerarlas todas porque cada autor puede tener la suya, y una distinta para cada programa. Pero esto no es ningn problema, por varias razones. Primera, porque disponemos de un instrumento de anlisis de las licencias: las premisas del apartado 2.1 de este artculo. Segunda, porque hay varias licencias que sirven como modelos para otros programas, y as hablamos de "tipo BSD" para referirnos a licencias similares a la del sistema operativo de Berkeley. Hay incluso licencias y modelos creados en abstracto, sin referencia a un concreto programa, como la misma GNU-GPL o la Open Source Definition. Las licencias tpicas son muy cmodas de usar ya que el autor de un programa dado, conocedor de la que ms le conviene, la incluye tal cual o hace slo las modificaciones que precisa, sin el trabajo de redactar una por entero, o encargarla a un abogado. Por otro lado, quienes van a usar o explotar un programa (los licenciatarios) tambin conocen estas licencias tpicas y saben de antemano a qu atenerse. Igualmente, los abogados y los jueces tienen mejor conocimiento de ellas que de una licencia nueva u original. Todo esto simplifica las relaciones y los negocios y resulta til. Nosotros vamos a ocuparnos slo de las licencias tpicas. Las ms interesantes son las licencias de software libre, ya que en una licencia se materializa la voluntad del autor sobre cmo desea que su programa se use y explote, y las de software libre materializan una voluntad radicalmente contraria a la que la LPI espera de un autor. En particular, las licencias copyleft revierten literalmente las relaciones autor-usuario que la LPI presupone. Por contra, las licencias de software no libre, exactamente las de software cerrado, se asientan en la LPI y desde ella pueden incluso lanzarse ms all en la limitacin de los derechos y libertades de los usuarios. Pero esto slo es vlido, como ya sabemos, si no se atenta contra las normas imperativas, que conocemos del apartado 2.1.3. Por eso se dice que las licencias de software no libre estn acompasadas con la LPI y son por lo tanto mucho menos interesantes. La lectura completa de una de estas licencias no libres puede resultar adems una penosa experiencia. Con todo, slo las licencias tpicas forman ya un buen montn. Tampoco tiene mucha utilidad hacer una seleccin, pues la FSF y la OSI ya han hecho algunas muy valiosas, aunque no siempre detalladas, y de las que en el apndice C se encuentran las referencias. Nosotros vamos a examinarlas de una forma distinta, y nos evitaramos

Plataforma de Teleformacin de IFES

Pgina 121 de 212

Introduccin a Linux

tanto el tedio de la exposicin de licencias una por una, como una lectura rida o abrumadora. De todos modos, se encontrar en 4.6 una breve discusin final sobre los criterios de las clasificaciones principales. Y llegamos por fin al ncleo de la cuestin.

Las licencias de software libre

Ms definiciones
Necesitamos an algunas definiciones ms para seguir aclarando la terminologa que estamos usando y otra nueva que introduciremos enseguida. Las definiciones ms tiles para hablar de software libre son, de nuevo por su rigor jurdico, las de la FSF, que usamos en este artculo por convencin. Tenemos dos grandes superconjuntos: el software libre y el resto del software, que por tanto llamamos no libre. Cualquier otra terminologa para estos superconjuntos no es aceptable en espaol. Por cierto, software no libre no es sinnimo de "software propietario" , y como esta ltima expresin es horrible adems de inexacta, nosotros no la utilizaremos, adems en el fondo nos sobra. En caso necesario hablaremos de "software cerrado" . Es ms preciso hablar en general de software no libre, y de paso englobamos a los semipropietarios, semilibres, sharewares y dems. Esta terminologa tambin nos facilitar la comprensin cabal de un cuadro bastante grande de licencias. "Software libre" (sl) es el que incorpora una autorizacin general no discriminatoria para usar, copiar, modificar y distribuir el programa original o sus derivados, gratuitamente o no. Debe proporcionarse las fuentes, directa o indirectamente, pero siempre de forma fcil y asequible. Todo programa que no incorpore esta autorizacin no es libre, decimos que es software no libre. Abusaremos un poco del lenguaje llamando "licencia libre" a la licencia de un programa libre. Estas definiciones no son pacficas. Nosotros las usaremos convencionalmente, pero ignorar cunto hay detrs es un pobre servicio al conocimiento, porque no se trata de pequeeces. Para empezar, las definiciones de software libre ( "free software" ) y fuente abierta ( "open source" ) no son coincidentes, aunque vienen ciertamente a significar casi lo mismo. Pero estas diferencias no son importantes por ahora, las dejamos para el apartado 4.5.2. Tambin es esencial distinguir sl (superconjunto) de copyleft (subconjunto). ste es software libre cuyos trminos de distribucin no permiten a los re-distribuidores aadir a su licencia restricciones adicionales a las de la licencia de que se sirvieron. Esto

Pgina 122 de 212

Introduccin a Linux

Introduccin a Linux

supone la perpetuacin de la condicin de libertad del software hasta su extincin. El copyleft determina la imposibilidad (jurdica) de apropiarse del software libre. Y ste es el hallazgo de la FSF, al que dedicaremos por entero el apartado 4.5.1. El resto del sl que no es copyleft puede ser modificado aadiendo restricciones a la libre distribucin que no se encontraban en la licencia del programa originario. Los ejemplos caractersticos son las licencias BSD y X11. Esta segunda dicotoma "sl-copyleft v. sl-no-copyleft" es en cambio pacfica, porque los trminos de distribucin de, p ej., la GNU-GPL son claros y terminantes. Es cierto que una cuestin de estrategia invit a la FSF a redactar la Lesser GPL, y que se han detectado una o dos lagunas relativamente importantes, pero procedentes slo de una interpretacin forzada del sentido de su texto. Un programa es copyleft o no lo es, y esto es fcil distinguirlo. Aun as, la FSF habla de "grados" de copyleft (hay programas ms copyleft que otros), y finalmente introduce una ltima subdivisin: "copyleft compatible GNU v. copyleft no compatible GNU" . Lo mismo hace la OSI con su calificacin de compatibilidad Open Source. Pero estas expresiones, graduacin y compatibilidad, forman otro de los asuntos en los que, dado el mbito de este artculo, no podremos entrar a fondo hasta una versin ulterior. En Derecho anglosajn se incluye dentro del sl el software que se encuentra en dominio pblico, pero esto generalmente no es as en los Derechos continentales. En primer lugar, no es fcil con arreglo a la ley espaola encontrar programas en dominio pblico por las razones expuestas antes, simplemente no ha transcurrido suficiente tiempo desde la aparicin de los primeros programas protegidos para que se haya producido la extincin de los derechos de autor sobre ellos (recurdese: toda la vida del autor y 70 aos ms). Segundo, probablemente las fuentes pueden no estar disponibles. Tercero, el Derecho espaol admite la apropiacin del dominio pblico indito (art. 129.1 LPI), y desde luego la apropiacin de las obras derivadas del dominio pblico, pero no del dominio pblico mismo. Con razn la FSF considera que el software en dominio pblico no es en modo alguno copyleft, sobre todo en Derecho anglosajn. Ni siquiera tiene que ser necesariamente libre, p. ej. no lo es si las fuentes no estan disponibles. Volveremos an sobre el dominio pblico en 4.5.1.

Encaje general de las licencias de software libre en la ley espaola


Sin rodeos, no plantean problemas en Derecho espaol, son perfectamente vlidas y viables. Trataremos de demostrarlo en lo que resta de este apartado 4. En primer lugar: 1. No afectan a los derechos morales del autor, aunque la existencia del llamado derecho de arrepentimiento, tpico de los Derechos continentales, parece sugerir otra cosa. Pero ya tratamos este asunto (superficialmente, es

Plataforma de Teleformacin de IFES

Pgina 123 de 212

Introduccin a Linux

2.

cierto) en el apartado 3.2.2 al hablar de la revocacin de las licencias. Aunque all quedaron temas por tratar, ste en particular qued allanado. Se trata de un asunto ms terico que otra cosa, de todos modos. Y an volveremos de nuevo a l cuando tratemos de la Open Source Definition. En cuanto a los derechos patrimoniales del autor, tampoco hay nada en las licencias de software libre que infrinja las normas imperativas de la LPI. En efecto: 1. El derecho de autorizar o prohibir la explotacin de la obra se manifiesta justamente en la facultad del autor de dar licencia a su programa, siempre que no se vulneren otras normas imperativas u obligaciones asumidas. 2. Las licencias de software libre no implican renuncia del derecho de remuneracin, aunque en muchos casos se renuncie de hecho a una remuneracin, que es cosa distinta, perfectamente renunciable. Es claro que el autor no renuncia a la explotacin por s mismo. Y respecto de la explotacin por los dems, la cede con causa (liberalidad, prestigio, obtencin de una marca comercial, de apoyo en el mantenimiento del programa, etc, etc). 3. Las licencias regulan sobre todo la cesin de los derechos de explotacin, que es su cometido, y por tanto son el vehculo apropiado para contener las condiciones de uso y explotacin de un programa de ordenador.

Una dificultad ms seria se encuentra en la limitacin que la ley espaola impone a cualquier cesin de derechos de explotacin: Queda limitada siempre a los medios de explotacin existentes en el momento de la cesin, esto es, en el momento de la aceptacin de la licencia; y no se extiende por tanto a los medios futuros de copia, modificacin, etc, ni a los inexistentes. Por su parte la GPL deja bien claro que la explotacin libre autorizada se refiere "a cualquier medio" (clasula 1) y queda restringida a determinadas formas de explotacin (y no a otras), concretamente la copia, modificacin y distribucin. Si se produce una explotacin de distinto tipo, la GPL deja de amparar al licenciatario (cl. 1 y 4), pero el sentido de la GPL es el de respetar las libertades del usuario, no la restriccin injustificada del uso y explotacin de los programas; y no entra, salvo lo ya sealado, en buscar limitaciones ms all de las necesarias a su finalidad. Por lo tanto se concluye que la GPL ampara formas de explotacin sobrevenidas despus de la aceptacin de la licencia, pero siempre que no se atente contra el espritu de la GPL. Aunque nunca est de ms avisar al licenciante, puede incluso ser imprescindible. Tambin hemos de resolver una aparente contradiccin entre la regla imperativa de la LPI que dice "las cesiones no exclusivas son intransmisibles" (art. 50.1) y el hecho de que una licencia de sl, que consiste en una cesin no exclusiva, justamente permite la transmisin ulterior de derechos por el licenciatario si ste crea un programa derivado. Pero no hay tal contradiccin. Por al menos dos razones: 1 La esencia del sl est en la cesin de derechos de explotacin sin exclusiva, y no en ninguna renuncia del

Pgina 124 de 212

Introduccin a Linux

Introduccin a Linux

copyright. Mediante la licencia libre el autor cede sus derechos de explotacin sin exclusiva, pero ello no permite al licenciatario re-licenciar la obra originaria, ni licenciar su obra derivada en trminos contrarios a los aceptados en la primera licencia. 2 El art. 50.1 no es realmente una norma imperativa, existe para proteger al autor, pero ste puede disponer de ella, es en realidad una norma dispositiva. Se incluy en su momento como imperativa por pura precaucin, pues el tenor literal de la LPI da que pensar. Para los ms juristas: una licencia de sl tiene algo de donacin modal (te doy algo si haces esto), y esta es otra forma de demostrar que la contradiccin es slo aparente. A continuacin veremos con ms detalle las libertades aparejadas a una licencia de software libre. Seguiremos el orden expuesto al final del apartado 3.2, o sea: el segundo grupo de clasulas que tenamos pendientes. Puede adelantarse que no se trata de un examen pormenorizado de cuantas cuestiones suscitan los rtulos de los apartados, sino un vistazo general. Esto podemos en cierto modo permitrnoslo porque, primero, estamos tratando con el negativo de las habituales licencias de software cerrado, innecesariamente prolijas y obsesivas. Segundo, estamos tratando acerca de las libertades, ms simples de expresar que las sujeciones.

Libertades de uso y reproduccin


Estas libertades no nos darn ya mucho trabajo. Todo ha quedado definido en apartados anteriores y sabemos por tanto que una licencia de sl otorga libertad prcticamente plena para utilizar y copiar el programa cuando, como, cuanto y donde a uno le apetezca. Suele incluirse restricciones formales, como el mantenimiento del aviso de copyright, que si son razonables no hacen al programa no libre. Por supuesto, es lcito bajo licencia de sl cobrar por el acto fsico de transfererir copias del programa (p. ej. en CDROM), as lo dice entre otras la GPL en el ltimo inciso de la clusula 1. Significa esto que la cesin de derechos de explotacin del programa (que es una transferencia de objeto inmaterial) ha de ser gratuita si se utiliza la GPL? Aqu la GPL parece confundir el programa (obra intelectual, inmaterial, objeto de los derechos de autor) con el soporte de la obra (un binario o cdigo fuente, grabados en un CDROM). Debera estar claro que la GPL no exige gratuidad en la cesin de derechos de explotacin, no hay restriccin a los derechos de autor ni a la libertad del usuario, pero es un hecho la cesin gratuita en muchas ocasiones. Adems, a quin se cobra por una cesin de derechos de explotacin muy amplia y con destinatario indeterminado? Este asunto es muy terico y no merece ms atencin en este momento.

Libertad de modificacin
Plataforma de Teleformacin de IFES Pgina 125 de 212

Introduccin a Linux

Tampoco aqu encontraremos a estas alturas dificultades mayores, aunque siempre es posible complicarse la vida. Uno puede modificar libremente un programa libre, que lo es porque entre otras cosas se dispone de su cdigo fuente. Puede traducirse, transformarse, combinarse con otros, o dividirse. Todos los programas o colecciones de programas obtenidos son obras derivadas, pero (un gran pero) no necesariamente libres. Qu ocurre si redistribumos un programa en el que hemos includo parte del cdigo de un programa libre? Que el programa obtenido ha de ser libre en su totalidad. Es decir, no puede extraerse de un programa libre copias u obras derivadas que a su vez se licencien como libres slo en la parte derivada. En varias ocasiones la GPL tiene en cuenta este supuesto, especialmente para los trabajos derivados (clasula 2), exigiendo que la licencia se aplique al programa "como un todo" , de modo que el carcter libre se transfiera al programa derivado. Aunque hay excepciones. Esta es una exigencia coherente con las bases del sistema copyleft, de hecho es la primera exigencia del copyleft, en el mbito de la modificacin de programas. Es el primer supuesto que nos encontramos en nuestro recorrido con el llamado incorrectamente "virus copyleft" , calificado tambin de efecto contaminante. Desde el punto de vista de las libertades del usuario es ms bien un efecto supermineralizante, reconstituyente. Estos calificativos no tienen mucha importancia, s el efecto mismo por supuesto. Pero esta restriccin no es toda la clusula copyleft, en realidad no lo es en absoluto en cuanto a las modificaciones que no se redistribuyen. Ms bien, la transmisin del carcter libre de un programa original a sus derivados es una exigencia del copyright: Si el programa original es copyleft, porque el derecho del autor del programa derivado se origina en una licencia copyleft, de la que no puede sustraerse. Y si el programa original no es copyleft, exactamente igual. Luego el mal llamado carcter contaminante del copyleft resulta que se da bajo cualquier licencia, como cualquier jurista esperara. Las crticas habituales suelen tener lugar en otro plano, sea econmico, empresarial o poltico. Por ejemplo, que la contaminacin por licencias no libres es una calamidad para el usuario, que la producida por licencias Open Source no copyleft es incierta, y que la producida por el copyleft es defitivamente una bendicin para el usuario y la libre computacin en general, porque mantiene la libertad. Nada de esto se deduce del Derecho, que, todo lo ms, establece reglas muy generales, como que lo accesorio sigue la suerte de lo principal (art. 379 CC) y que los derechos sobre una mezcla indivisible son proporcionales a los elementos mezclados (art. 381 CC), siempre que no haya otros pactos. Puede darse el caso de un programa que posee partes identificables no derivadas de un programa libre. Entonces, y siempre que se trate de trabajos independientes y separados ( "autnomos" en nuestra nomenclatura del apartado 1), slo entonces no se transmite el copyleft. Pero si esas partes se distribuyen como un todo derivado del

Pgina 126 de 212

Introduccin a Linux

Introduccin a Linux

programa libre, la distribucin del todo debe producirse segn la licencia libre, cuyas autorizaciones se extienden al todo. La finalidad de esto (vase cl. 2 GPL) no es otra que la de controlar la distribucin de los trabajos derivados del programa libre. Adems, y esto es esencial en las distribuciones y paquetes, la reunin o coleccin de trabajos libres y no libres en un volumen de almacenamiento o medio de distribucin NO hace que unos trabajos pasen al mbito licenciado por otros. Esto se ajusta como un guante a las reglas comunes, o sea las del CC que hemos citado. Vamos a ser ms explcitos.

Adquisicin de propiedad: Unin y especificacin de cosas


Como base del debate sobre cmo han de transmitirse los efectos de las licencias de programas originales a los programas derivados, vamos a utilizar las reglas del CC citadas arriba, y algunas ms. Se trata de saber cmo se adquiere la propiedad sobre objetos derivados, bien por unin de cosas distintas (mezcla y adjuncin), bien por especificin de una cosa. Este es un viejo asunto de los juristas, desde hace ms de 2000 aos. "Nada ms complicado y de ms difcil apreciacin jurdica en la vida real... Las relaciones que supone... han llegado a [considerarse] de casi imposible determinacin..." , as se expresaba un magistrado, J.M MANRESA, hace un siglo aproximadamente. Con esta alentadora perspectiva, vamos a basarnos en las normas del CC aplicables a los bienes muebles, porque de cierto que los programas de ordenador no son inmuebles (!). Unin de programas Tenemos dos tipos de unin de cosas, la mezcla y la adjuncin. La mezcla de elementos supone que stos resultan despus inseparables, de modo que cada propietario adquiere un derecho proporcional sobre la parte que le corresponde segn el valor de las cosas mezcladas (art. 381 CC). La adjuncin ocurre por la unin de cosas heterogneas que se unen indisolublemente para constituir un solo y nuevo objeto, no desmontable. En este objeto pueden distinguirse tal vez sus antiguos componentes, pero no pueden ya separarse. En este caso, la regla es que lo accesorio sigue la suerte de lo principal (art. 375 CC). Accesorio es lo que facilita el uso o perfecciona lo principal (art. 376 CC). Pero suele utilizarse como criterio ms prctico el del valor econmico de los componentes (art. 377.1 CC). Versiones de programas o especificacin La especificacin consiste en dar a una cosa una nueva forma. Ms estrictamente, es dar nueva forma a una cosa ajena, crendose as una nueva cosa de ms valor. El art. 383 CC dice que el especificador hace suya la cosa nueva, si efectivamente es de

Plataforma de Teleformacin de IFES

Pgina 127 de 212

Introduccin a Linux

mayor valor, aunque habr de indemnizar al dueo de la cosa especificada ( "versioneada" ). En otro caso, ste puede optar por quedarse con la nueva especie, indemnizando el valor de la obra nueva; o pedir indemnizacin de la materia original. Todo esto slo vale si quien mezcla, adjunta o especifica acta de buena fe.

Exigencias razonables para la modificabilidad del software


Por supuesto, no hay modificacin factible de un programa de ordenador si no se dispone del cdigo fuente. La disponibilidad del cdigo recompilable puede darse de varias formas, pero slo algunas son admitidas en la definicin de software libre. Habr de escogerse alguna de stas en tal caso y dependiendo de la explotacin que se prev: Acompaar las fuentes completas en formato electrnico y en el soporte habitualmente utilizado para intercambiar programas. Actualmente estos medios y soportes son casi siempre ftp annimo y/o CDROM. La carencia simultnea de estos dos citados resulta inaceptable. Acompaar un compromiso escrito, vlido por un plazo razonable (la FSF exige 3 aos), de proporcionar las fuentes a quien las pida a un coste no superior al de la distribucin fsica por medio estndar (ftp y CDROM al menos). Una tercera forma de poner a disposicin el cdigo fuente, y que normalmente slo debera aplicarse a usos no comerciales, es la de acompaar el programa con la informacin recibida por el licenciatario sobre la oferta anteriormente citada del cdigo fuente. Esto sirve para disminuir costes y no cargar a ciertos usuarios con elementos posiblemente intiles. [Queda claro que las frmulas segunda y tercera slo tienen sentido cuando la distribucin del programa nicamente es en programa objeto o binario ejecutable]

La LPI no define "cdigo fuente" . La GPL y las OSD dicen que es "la forma preferida del trabajo cuando se hacen modificaciones" . Para un ejecutable, fuente es el cdigo completo de todos sus mdulos, ficheros asociados de definicin de interfaces y guiones utilizados para controlar la compilacin e instalacin del ejecutable. No comprende necesariamente el cdigo que suele acompaar a los componentes principales del sistema (el compilador y el ncleo sobre el que funciona el ejecutable), salvo que el propio componente principal acompae al ejecutable.

Libertad de distribucin
Pgina 128 de 212 Introduccin a Linux

Introduccin a Linux

Todas las formas anteriores de explotacin pueden ser realizadas individualmente y sin conocimiento por nadie. Pero la distribucin es inherentemente relacional, ya que hay intercambio, y es en este punto en el que reside una de las ms importantes polmicas dentro del sl. En su seno, la libertad de distribucin no se pone en duda, libertad sin restricciones aparentes, salvo por cuestiones formales, algunas limitaciones geogrficas lgicas, asuntos de poca monta comparados con la general libertad de distribuir y redistribuir programas originales o transformados. Tambin est claro para todos que la distribucin slo es libre si puede tener por causa cualquiera que sea lcita: nimo de lucro, altruismo, proselitismo... Asmismo no admite dudas que el sl slo es libre si la licencia del programa libre original persiste durante toda la vida til del software y de sus derivados, que por lo tanto tambin han de ser libres. La cuestin es la de la transmisin de efectos de las licencias, que ya avanzamos en el apartado anterior. Se transmite el carcter libre de un programa a sus programas derivados siempre, o slo para determinadas modificaciones (derivaciones, agregaciones, paquetes, bibliotecas, distribuciones), tal vez slo para la redistribucin? O se reconstituye plenamente el copyright? Esto depende de la licencia misma, y por eso el movimiento del software libre se articula no mediante una forma especial de escribir cdigo, ni por una nueva mercadotecnia, ni por el apoyo del sector empresarial, todo eso son consecuencias de mover la palanca sobre cierto punto de apoyo: esos extraos e indigeribles documentos llamados licencias de software. El criterio para resolver el dilema reside, obviamente y una vez ms, en las libertades ciudadanas, incluidas las exigencias de la libre competencia, entre las que no est -ms bien al contrario- la limitacin de entrada en el mercado por apropiacin de resultados obtenidos en el desarrollo de software, mucho menos de software libre. As, el copyleft es una exigencia de la autntica libre competencia. No se conoce ninguna norma jurdica que prohba la apropiacin del software, ah est la LPI para garantizar que los programas pertenecen a sus autores. Pero el art. 81 del Tratado de la Comunidad Europea (ojo: en la nueva numeracin de Amsterdam) califica de incompatibles con el mercado comn, y quedan prohibidas, las prcticas tendentes a impedir, restringir o falsear la competencia; y en particular el limitar o controlar la produccin y el desarrollo tcnico, subordinar la celebracin de contratos a la aceptacin por la contraparte de prestaciones suplementarias sin relacin con su objeto. Tambin prohbe el art. 82 abusar de la posicin dominante, p. ej. limitando la produccin o el desarrollo tcnico en perjuicio de los consumidores. No es el sl el que usa estas prcticas, de hecho las dificulta. Por contra, hay paladines del software cerrado y (tericamente) de la libre competencia que se encuentran expedientados en Bruselas por presuntas prcticas ilcitas. Este apartado 4 trata de las libertades del usuario de software, no de los derechos de autor. Muchos entienden que la libertad del usuario no puede restringirse mediante el uso de la misma libertad. Si quien modifica un programa libre hace uso de sus

Plataforma de Teleformacin de IFES

Pgina 129 de 212

Introduccin a Linux

derechos de autor (de su libertad, dir l tal vez) aadiendo en la licencia del programa derivado (y en perjuicio de sus usuarios) restricciones que no figuraban en la licencia del programa libre original, lo que est haciendo no es ejercitar sus derechos de autor -que estn indeleblemente unidos a la licencia libre original- sino apropiarse ilegtimamente de algo que no le corresponde a l en exclusiva, la libertad de los dems a usar y explotar libremente el nuevo programa, libertad garantizada por las constituciones, sin duda por la Constitucin espaola cuando reconoce el derecho fundamental a la produccin cientfica y tcnica (art. 20.1.b CE). Las licencias libres tipo BSD-original no pudieron tener en cuenta que el software estaba empezando a ser usado masivamente y a gran escala, los fabricantes intentaban patentar los productos y prescindir de una vez por todas de los desarrollos abiertos. Habiendo encontrado mejor cobijo en la ley de derechos de autor que en la de patentes, actualmente han debido frenar su expansin tras la recuperacin del modelo de software libre. Este modelo se ha repuesto del declive de los aos 80 aadiendo a su definicin la nica prohibicin importante que contiene la licencia deseable: Est prohibido al destinatario de un programa libre restringir la libertad de explotacin de los programas derivados creados por l. Esta prohibicin es tan importante que se dedica el apartado siguiente slo a ella. Tiene incluso nombre propio.

Copyleft o prohibicin de aadir restricciones sobre los programas derivados de un programa libre
La esencia jurdica del software libre se encuentra en la libre explotacin de los programas por los usuarios, sin discriminacin. A su vez, el autor de un programa derivado tiene el derecho exclusivo de autorizar o prohibir la explotacin de su obra. Pero el programa derivado existe y es legtimo porque la licencia del programa original facilita su creacin, porque es libre. Y como es libre, exige la persistencia de la libertad de uso y explotacin sobre los programas derivados. De haber resistido las universidades en las ltimas dcadas sus carencias financieras de otra guisa, y no aprovechando a toda costa el modelo de patentes, tal vez no hubiera sido necesario tener que recordar semejantes afirmaciones. Pero ha sido necesario. El recordatorio de la existencia de libertades fundamentales, constitucionalmente garantizadas, ha tomado la forma de una clusula prohibitiva, la clusula copyleft. El mejor ejemplo de clusula copyleft es, de nuevo, la GNU-General Public License, o simplemente GPL, publicada por la Free Software Foundation. En realidad la clusula se halla dividida en tres apartados, nmeros 4, 6 y 10 de la versin 2 de 1991. Las modificaciones sobre la licencia original pueden ser irrelevantes (correcciones gramaticales, de ordenacin, inclusin de asuntos ajenos al derecho de autor). El

Pgina 130 de 212

Introduccin a Linux

Introduccin a Linux

copyleft se ocupa slo de las modificaciones relevantes, que afectan a los trminos de la explotacin del programa. Pueden a su vez ser de dos tipos: las que hacen la explotacin ms libre (difciles de imaginar) y las que la restringen, por ejemplo cerrando el software, licencindolo slo para uso no comercial, impidiendo su modificacin, copia o redistribucin. De stas s hay numerosos ejemplos. Son las del segundo tipo las modificaciones prohibidas por el copyleft. La LesserGPL permite una excepcin "estratgica" , para las bibliotecas y otros elementos, que no podemos tratar aqu, ni es para nuestro estudio demasiado importante. Persistencia de la libertad del software El copyleft pretende justamente la transmisin de los efectos de la licencia del programa originario a las licencias de los programas derivados, como cualquier licencia, aunque no se trata slo de eso: Requiere seriamente la persistencia del carcter libre del software libre modificado y (re)distribuido. El copyleft preserva el carcter de sl prohibiendo que de un programa libre se obtenga otro no libre o que se redistribuya con restricciones adicionales a las libertades de los destinatarios. El copyleft no afecta directamente a los derechos del autor del programa originario, pero s a los del autor del programa derivado en el momento de su redistribucin. Cmo es esto posible? Porque el segundo acept la licencia del primero. Copyleft no es lo contrario de copyright. El copyleft contiene lo que tcnicamente se conoce en Derecho como "condicin resolutoria" [otros preferirn hablar de "modo" , pero esto apenas tiene importancia]. Se trata de un suceso (condicin) que, de darse, produce determinado efecto en los derechos. El suceso en nuestro caso es la infraccin de una licencia, que por tanto queda desactivada (resuelta). La condicin resolutoria implcita en el copyleft se produce al aadirse restricciones a la libre explotacin del programa derivado sobre las que figuraban en la licencia del programa original. La clusula copyleft la impone el autor de la obra original en uso de sus facultades de copyright, no en contra de tales facultades, que ya hemos demostrado no quedan afectadas por ello. Y la aceptacin por el destinatario de la licencia con clusula copyleft supone que si vulnera la clusula, la licencia deja de ampararle a l y al programa derivado que redistribuya, que pasa a ser automticamente ilegtimo. Lo mismo que en cualquier explotacin de otras obras intelectuales distintas del software. Estructura de la clusula copyleft El copyleft es fcil de entender, se condensa en una prohibicin. Pero lo cierto es que se encuentra formada por varios elementos: 1. Una sujecin: No cabe explotacin del programa sino en los mismos trminos copyleft. Cualquier explotacin en trminos diferentes no queda amparada por la licencia. Esto es un requerimiento general en casi cualquier contrato de cesin de derechos. La explotacin indebida por alguien no
Pgina 131 de 212

Plataforma de Teleformacin de IFES

Introduccin a Linux

2.

3.

afecta a todos los dems que s ajusten el uso del programa copyleft a sus trminos. Una obligacin: Quien redistribuya el programa copyleft u otros derivados de l, ha de poner ipso facto a disposicin del receptor una licencia copyleft equivalente, sin restricciones adicionales. Como aclara la GPL (cl. 6), el licenciatario original, ahora licenciante del programa derivado, no es responsable del incumplimiento de la licencia original por terceras personas. Pero s es responsable de ajustar la redistribucin a los trminos copyleft. Una carga: Si se desea incorporar partes del programa copyleft a otros programas libres que tengan condiciones de distribucin distintas, debe obtenerse permiso del autor de aqul. Es decir, la incorporacin es posible pero su legitimidad no es automtica, depende de que en la transmisin de derechos se preserven las condiciones que hacen libre al programa incorporado, y se promueva o fomente el uso compartido y la reutilizacin del software en general.

La clasula copyleft se complementa con una aclaracin y una excepcin, ambas de poca importancia en el fondo: Integridad del copyleft en caso de impedimento forzoso a la libre distribucin (cl. 7 GPL): No puede redistribuirse un programa copyleft si, por impedimento forzoso (decisin judicial, vnculo con patentes, etc), la redistribucin no va a poder ser copyleft. Posibilidad de limitaciones geogrficas a la distribucin libre (cl. 8 GPL): Normalmente por motivos de vinculacin con patentes o interfaces bajo copyright, pero siempre que se incluyan en la licencia indicaciones al respecto, claras y prominentes.

Y esta es la construccin jurdica, tomada de la FSF aunque podra servir cualquier otra. Ha sustentado, desde el Derecho y sin litigios judiciales, la realizacin de sistemas como GNU, del ncleo Linux, de colectivos como Debian y de innumerables foros; ha estimulado la formacin de empresas, proyectos editoriales y docentes; la aparicin de cuerpos orgnicos de software libre en distribuciones multiformes... No son sus nicos frutos, como se ver en el apartado 5. Notas finales, un poco fuera de lugar El copyleft, mediante un dispositivo jurdico impecable, da y asegura la libertad, protege al autor favoreciendo la explotacin de su programa, incluso por s mismo si lo desea, e impide en fin que nadie, salvo eventualmente l mismo y con dificultades, tome demasiado control en el desarrollo. Es un artilugio equivalente, salvando ciertas distancias, a la divisin de poderes del Derecho constitucional (LOCKE, MONTESQUIEU y dems). El control por el explotador del programa nunca podr ser absoluto, pero el de los dems usuarios y desarrolladores tampoco. Y el programa con ms distribucin ser necesariamente el mejor posible, en otro caso ser corregido

Pgina 132 de 212

Introduccin a Linux

Introduccin a Linux

rpidamente. Etc. Esto es tericamente cierto, pero la realidad no se ajusta exactamente a esta descripcin. Por qu? Porque la rentabilidad financiera del copyleft slo se manifiesta si alcanza a cubrir una rama de desarrollo mnima explotable, sea un solo programa o una plataforma completa. Si no es el caso, no deja por ello de ser rentable, pero no necesariamente en trminos financieros, de generacin de ingresos, de inversin y crecimiento. Hay otras rentabilidades buscadas por el copyleft, prioritarias en realidad. Hay economistas que pueden demostrar si es o no cierto lo anterior, al cabo slo una conjetura. Evidentemente no es cierto que el copyleft haga a un programa menos libre porque "limita la libertad del autor del software derivado" . Esta es una apreciacin incorrecta. Por una parte, el copyleft preserva el carcter libre del software sin afectar en nada a la esencia del copyright (s por supuesto al ejercicio de determinadas facultades del copyright, como cualquier contrato de cesin de derechos de autor). Segundo, entre la libertad de un nmero determinado de usuarios que desean apropiarse del software derivado y la del nmero indeterminado de usuarios que no tienen tal intencin, el copyleft opta por stos, pero no exactamente quitando libertad a aqullos, no restringindoles su libertad de eleccin (lo que s se produce mediante determinadas prcticas comerciales en perjuicio de los usuarios) sino hasta despus de aceptar la licencia, que por tanto han de respetar. Para todos los dems usuarios, los que no desean vulnerar la libertad de distribucin, el copyleft simplemente no les supone ni siquiera una prohibicin, porque la mayora nunca agotamos toda la libertad que se nos ofrece. Si el copyleft es una camisa de fuerza, al menos se la pone uno mismo. Pero ms bien el copyleft es un pacto de no agresin, y esto es saludable, no vrico. Al contrario, hay pautas comerciales que s pueden resultar vricas, lo son de hecho. Pero es tan fcil hablar en trminos tales (contagio general-monopolio, etc) como poco seguro. El copyleft, o ms bien las manifestaciones de su potencia, son una materia enorme, que excede lo jurdico con creces. Se ha pretendido con lo anterior dar breve cuenta de ello. Quedan muchas cuestiones por tratar y explicar, como las dobles licencias, la remota posibilidad de un programa copyleft que entra efectivamente en dominio pblico, los problemas especficos de los paquetes, distribuciones, medios de almacenamiento y canales de distribucin. Confiamos en una versin ulterior de este artculo para tratarlos apropiadamente. No obstante la claridad de su construccin jurdica, y por razones que en este artculo no podemos tratar sino muy por encima, a los hombres de negocios el sistema copyleft no les gustaba. Teman su aspecto comunista, anarquista o libertario. En esencia, no les gustaba la clusula que impeda apropiarse, al no restringir la libertad de los dems, del trabajo realizado a costa de su dinero. Tambin se encontraban los programadores que sufran un temor anlogo respecto del futuro fruto de su esfuerzo. Este temor

Plataforma de Teleformacin de IFES

Pgina 133 de 212

Introduccin a Linux

provena de un malentendido, inexcusable pero persistente, acerca de cmo rentabilizar los proyectos copyleft, normalmente origen de riqueza (fondo) si son buenos claro est; pero no necesariamente generadores de dinero (flujo) si la explotacin es defectuosa. En el software no copyleft no pasa exactamente lo mismo, porque los costes de desarrollo y mantenimiento no garantizan siquiera lo primero. Por supuesto, tambin el software no libre puede ser objeto de explotacin defectuosa. El caso es que en el movimiento del software libre se produce una bifurcacin en 1997-1998. Para nosotros es "la" bifurcacin, porque afect a las definiciones y a las licencias y su clasificacin.

Autorizacin de restricciones adicionales: Open Source


La distribucin de software, y en particular la re-distribucin de software modificado, es el punto crtico del sl. La Iniciativa Open Source (OSI) surge de las Directrices Debian de Software Libre (DFSG), adaptadas en 1997 sin cambios sustanciales a unos trminos ms generales bajo el rtulo que se usa actualmente: Definicin de Fuente Abierta (Open Source Definition - OSD). No se trata de una licencia, ni siquiera de un modelo de licencia, sino de directrices para la clasificacin y adopcin de licencias en productos de software (programas, paquetes y distribuciones). La definicin de fuente abierta no es del todo equivalente a la de software libre. Las diferencias esenciales son dos: Una fundamental, pues la OSD entiende por libertad del usuario una situacin jurdica menos amplia que el sl, segn la definicin de ste hecha por la FSF, que es la que estamos utilizando en este artculo por su notable rigor y ajuste a las exigencias constitucionales y legales espaolas. La otra diferencia es instrumental, est ubicada en la clusula de persistencia del sl, que en la OSD no es ya necesariamente software libre tras la distribucin, con o sin modificaciones del software originario. Se permite aadir determinadas restricciones a los trminos de distribucin de originales y redistribucin de derivados. Esto es una simplificacin compacta que debe explicarse y matizarse. El punto de vista de la FSF no es slo econmico, que no se excluye de todos modos, sino ultrajurdico pues comprende tambin postulados ticos y por lo tanto filosficos. El punto de vista de la OSI, que reconoce inspirado por la FSF, es sin embargo slo econmico (disminucin de precios, apertura de nuevos mercados). Se trataba de atraer a los hombres de negocios y a importantes sectores de desarrolladores al movimiento del sl, lo que se consigui en parte. Pero no se logr mediante la atraccin de aqullos al mbito del sl, sino eliminando la necesidad de persistencia del sl, vale decir llevando a los usuarios al coto de los temerosos. El copyleft qued eliminado de la definicin deseable de sl, se volvi a las definiciones ms antiguas, perfeccionadas es cierto, de lo que poda entenderse por software libre, expresin que adems se cambi por "fuente abierta" , menos expresiva en ingls y todava menos en castellano. Para el Derecho, la OSD no impide restringir la libertad del usuario, facilita la apropiacin del

Pgina 134 de 212

Introduccin a Linux

Introduccin a Linux

software derivado, aunque su intencin primordial sea asegurar al autor la posibilidad de apropiacin exclusiva del fruto principal del esfuerzo invertido, sobre todo en los desarrollos ms originales, con marca, etc. Estructura de la OSD Para examinar detalladamente la OSD bastara con tratar cuatro de los diez apartados que tiene la versin 1.0, ya que el ltimo es tan slo es un ejemplo, sin valor normativo, y los cinco restantes tratan cuestiones que han quedado ya examinadas en apartados anteriores. Pero slo daremos unas breves notas. Interesan los apartados que eliminan la necesidad del copyleft y, en general, la persistencia de la libre explotacin, que son los nmeros 3, 4, 8 y 9. El nmero 3 permite cambiar los trminos de sl del programa originario a trminos no libres en el programa derivado (tipo BSD), y se justifica -errneamente- en la necesidad de evitar al autor del programa originario el riesgo que supone a su reputacin la derivacin de un programa con cdigo muy defectuoso que se pudiera atribuir no al autor derivado, sino a l, al autor del programa original. Lo mismo para evitar caballos de troya, prohibiciones locales sobre transferencia tecnolgica, como en criptografa, etc. El apartado 4 exige la integridad del cdigo original (algo legtimo) con medidas innecesariamente restrictivas. El punto 8 sirve para separar claramente un programa libre de una coleccin no libre de software. El programa libre lo seguir siendo en cuaquier caso, incluso si despus se desagrega de la coleccin. Y el 9 seala que la parte no transmite su carcter al todo. Esto supone la estanqueidad de las licencias. La eficacia de la licencia de un programa no depender de las de los otros que se encuentren en el mismo medio o soporte. El argumento de la posible mayor vulnerabilidad del sl frente al software no libre, por ejemplo ante caballos de troya, simplemente no tiene que ver con las condiciones jurdicas de modificacin y distribucin del software, y naturalmente no es tratado aqu. El software no es vulnerable en ese sentido por motivo del tipo de licencia que lleva aparejada. S es necesario, en ciertos mbitos de distribucin y ante cierto tipo de modificaciones (es decir, no siempre) un seguimiento adecuado de las versiones y de su autora. Pero estas exigencias no se atienden alterando el sistema copyleft, basta el sistema de marcas, que nada tiene que ver con los derechos de autor; y un buen sistema de control de versiones, se supone. No podemos tratar estos asuntos ahora, y tal vez estemos en un error. Pero hay indicios de que estos argumentos contra el sl y el copyleft son invlidos. Para disipar los temores de los hombres de negocios, o quienquiera que vea tras el copyleft al gran satn, es aconsejable muchas veces el uso adecuado de la Ley de Marcas. Quien desee apropiarse de sl para mantener la autora sin riesgos de confusin har mejor en registrar una marca, crendose as versiones oficiales de fcil control y gestin. Esto es lo que se ha hecho con Linux -que es GPL- y tantos otros

Plataforma de Teleformacin de IFES

Pgina 135 de 212

Introduccin a Linux

casos. Todo ello sin tocar la licencia libre, incluso manteniendo la clusula copyleft.

Clasificaciones de las licencias


No vamos a reproducir las clasificaciones ms importantes, que puede encontrar el lector en www.gnu.org/philosophy/categories.html y en el artculo de B. Perens en "Open Sources..." citado al final, Apndice C. Aqu nos basta retener tres clasificaciones muy generales pero importantes: 1. 2. 3. La divisin bsica con la que se est de acuerdo, aunque no completamente, entre software libre-software no libre. Esperamos haber convencido al lector de que el trmino open source-fuente abierta es menos riguroso. La divisin GNU aade dos criterios ms a su clasificacin de licencias: "grado" de copyleft y compatibilidad con el sistema GNU, que aunque son de inters no podemos tratar ahora. La compatibilidad Open Source se basa en criterios ms simples que los anteriores de GNU, stos ms rigurosos en todos los sentidos.

Confiamos en versiones ulteriores de estas notas para desarrollar todo esto como merece.

Infraccin de una licencia de software libre


Para este asunto se recomienda consultar www.gnu.org/licenses/gpl-violation.html. All se ofrece sintticamente el camino para reaccionar ante lo que uno cree que es una infraccin de las condiciones de explotacin y uso del software libre. En resumen, se trata de comprobar la infraccin, documentarla, e informar al titular del copyright, nico legitimado en apariencia para actuar contra el infractor. La FSF presta asistencia para reaccionar contra las infracciones de la GPL.

Reaccin por quien no es titular del copyright


En este subapartado presentamos una conjetura, probablemente vlida, pero de la que desconocemos aplicaciones prcticas: Es muy probable que en Espaa dispongamos actualmente de una o dos frmulas de reaccin adicionales frente a un atentado contra una licencia de sl, vas que GNU-Espaa extraamente no menciona, y que trataremos de demostrar sumariamente. Es cierto que, bajo una licencia de software libre con copyleft, estrictamente hablando slo el titular del copyright (que no es necesariamente el autor!) tiene accin jurdica contra la infraccin de su derecho, manifestado en la licencia violada. Pero tambin lo es que los usuarios del programa copyleft cuya licencia alguien ha infringido tienen

Pgina 136 de 212

Introduccin a Linux

Introduccin a Linux

inters legtimo en que la infraccin se rectifique. Los usuarios pueden incluso haberse organizado, por ejemplo en un colectivo de desarrolladores o simplemente en una asociacin de consumidores. Pues bien, la suma [inters legtimo + organizacin de un grupo de consumidores] abre claramente la va judicial tambin para quienes no son autores, va no basada en el copyright directamente sino indirectamente, a travs de la licencia. De hecho, debera bastar el inters legtimo esgrimido por un solo usuario, pero esto puede resultar a menudo impracticable y es de ms difcil digestin por los jueces. Esta va est fundamentada muy sencillamente en el ensamblaje de varios preceptos de la Constitucin espaola y algunos ms de otras leyes ordinarias. En sntesis, se trata de la proteccin judicial de un genuino inters legitimo, para el que los grupos, y singularmente las Asociaciones de Consumidores, se dice que tienen "legitimacin activa" . Puede llegar a obtenerse incluso proteccin administrativa (oficinas municipales de consumo, p. ej.). No nos extenderemos aqu, slo citaremos los artculos, que el lector puede consultar por su cuenta: arts. 9.2 y 24.1 CE, 2.1.e y .f LCU y 6.7 LEC. Con esto ha debido de quedar tratado lo ms importante. Para completar el cuadro slo resta tratar brevemente dos asuntos complementarios y de distinto inters.

Expansin del modelo de las licencias de software libre


Este apartado se incluye como ilustracin del potencial de la construccin jurdica contenida en las licencias de software libre, y no pretende ni de lejos dar cuenta al mismo nivel que en los apartados anteriores de los modelos que se citan. La Licencia de Documentacin Libre. Otras licencias similares No vamos a tratar de la licencia de documentacin libre, GNU-FDL (GFDL o simplemente para nosotros FDL), propuesta por la FSF para los manuales de uso, documentacin tcnica y otros textos. El lector sabr ahora leerla y comprender su significado por s solo, es similar a la GPL. Estrictamente hablando, en Derecho espaol no es necesaria, pues la documentacin de un programa se protege con el mismo copyright que el del programa mismo. Pero en la prctica es muy til, por dos razones: En primer lugar permite modular las exigencias de una licencia copyleft, pensada para el software, a las de los textos escritos, por ejemplo preservando algunos fragmentos, normalmente todo el contenido no tcnico, clusulas externas, etc, de la caracterstica autorizacin de libre explotacin. Es la licencia apropiada para la documentacin del software, pero no slo. Efectivamente, y en segundo lugar, una licencia como la FDL permite, sin merma de los derechos de autor, la formacin de proyectos colectivos de documentacin libre, normalmente tcnicos y cientficos. No es apropiada para libros de poemas y memorias, al menos no se pens con esa finalidad. En general, la documentacin FDL debe permitir la libre modificacin del contenido
Plataforma de Teleformacin de IFES Pgina 137 de 212

Introduccin a Linux

tcnico, no del valorativo-personal. Para la FDL, en la documentacin libre debe distinguirse claramente los siguientes textos de un manual o trabajo tcnico cualquiera: Textos de Cubierta, que son los de Portada y Contraportada. Pgina de Ttulo, que incluye la pgina de ttulo misma y adems las necesarias para contener legiblemente cuanto la FDL requiere. En los libros con formatos carentes de esta pgina, se llama Pgina de Ttulo al texto inmediato a la aparicin ms prominente del ttulo de la obra, que precede al comienzo del Cuerpo del Texto. Cuerpo del Texto. Secciones Secundarias, para materias como notas editoriales, advertencias legales, valorativas, etc, sin conexin directa con el Cuerpo del Texto. Dentro de ellas se encuentran las Secciones Invariantes, inalterables en las modificaciones. Puede, incluso a veces debe, incluirse secciones como Historia, Reconocimientos y Dedicatorias. Obligatoriamente han de quitarse en las modificaciones las aprobaciones (endorsements), homologaciones o similares que recaigan sobre el texto original, pues son exclusivos de ste.

La advertencia de copyright y el aviso de licencia FDL deben contener las siguientes indicaciones: a) cules son los Textos de Cubierta, si los hay, ya sean de portada o contraportada; y b) cules son las Secciones Invariantes. No puede exponerse ahora ni siquiera los aspectos ms relevantes de este singular sistema de liberacin de facultades de propiedad intelectual. Tal vez a los tericos del sl les sorprenda que el ejercicio del Derecho sea una profesin abierta, en el sentido de que los profesionales intercambiamos libremente nuestros conocimientos y argumentaciones jurdicas (no los derechos sobre nuestros libros!). Es un hecho normal, indiscutido, el que unos a otros nos fusilemos nuestros textos, desde siempre jams, con ciertos lmites, claro est. La FDL y otras licencias parecidas tal vez completen el rgimen de libertad intelectual de que disfrutamos los juristas, propiciando p. ej. textos universitarios libres, de los que tan necesitados estn los estudiantes, los profesores y los profesionales. El examen de la documentacin libre requerira un trabajo por s solo, pero en cuanto al contenido jurdico de las licencias lo esencial ya ha quedado expuesto antes. Adems de la FDL se puede encontrar documentacin amparada en licencias libres como la FreeBSD Documentation Lic., la Apple's Common Documentation Lic., la algo menos estricta Open Publication Lic., que puede o no aplicarse "copylefting" , y algunas ms. Tambin se dispone de la Open Science Lic., licencia libre y copyleft, redactada para dar esa cobertura a datos en general, no slo software. Advirtase que otra idea surgida en el seno de Debian, Open Hardware, no tiene

Pgina 138 de 212

Introduccin a Linux

Introduccin a Linux

directamente que ver con las licencias de software. Consiste en un programa de certificacin, exactamente de calificacin de hardware segn ciertas especificaciones, diseado para verificar que una configuracin de mquina es apta para un sistema Linux o FreeBSD. Incluye la promocin de un certificado de la verificacin, llamado "certificado open hardware" para uso por los vendedores y consumidores.

Software no libre
Comprende todo el software que no es libre. Es un gnero, con muchas especies. Primero tenemos el software semilibre, cuya licencia contiene autorizacin para la libre copia, modificacin y distribucin, pero siempre que no tengan carcter comercial. Esta es una restriccin muy importante sobre todo a la distribucin, que desnaturaliza la finalidad del sl, por eso no lo calificamos como libre. Por ejemplo, el software semilibre no permite su incorporacin a paquetes copyleft. La restriccin de la autorizacin a la explotacin no comercial aade muy poco a la libertad de uso, o ms bien restringe la posibilidad de ser utilizado. Parte de una idea errnea o de una valoracin incorrecta del nimo de lucro. La primera versin de la GPL encajaba en esta definicin, pero la versin 2 (1991) retir la restriccin, por innecesaria. El segundo grupo de software no libre es el "propietario" . Esta denominacin es inexacta por ms de un motivo. Con ella quiere denominarse lo que la FSF llama "software no libre que no es semilibre" . Podra decirse entonces que es software aprisionado, enjaulado, inaccesible. Desde luego est lleno de limitaciones al libre uso, es intransferible, incopiable sin convertirse uno en infractor, inmodificable (no mejorable por los usuarios directamente) y de ningn modo redistribuble. En este artculo preferimos denominarlo software "cerrado" . As entendidos, estos programas ni siquiera forman parte de la mquina. No seran ni contendran piezas que uno puede examinar, reparar, o sustituir si son defectuosas. Pero la realidad es que el software s forma parte de la mquina, y no hay razn para que quien puede reparar o repintar o recauchutar un automvil utilitario no pueda hacerlo en un programa utilitario, sobre todo si es un sistema operativo o un compilador. Hay otras subespecies de software no libre, las repasamos en los apartados siguientes, apuntando rpidamente las restricciones que imponen a las libertades bsicas de los usuarios. En este artculo no tratamos el pseudotipo "software comercial" , categora para nosotros intil porque no es puesta en cuestin por el sl; aunque s por el software semilibre, que no admite el uso comercial de los programas licenciados. Tampoco podemos tratar fenmenos tan extraos como MSAgent, una especie de "software libre revocable" que no es en modo alguno software libre.

Plataforma de Teleformacin de IFES

Pgina 139 de 212

Introduccin a Linux

Restricciones de uso
Lo que califica a un programa como semilibre es que su uso y explotacin quedan limitados a un destino no comercial. Esta restriccin no resulta aceptable, ya lo hemos dicho, y no la trataremos ms. Tambin el software cerrado impone graves restricciones de uso del software. Se prefiere en este artculo llamar al software propietario "software cerrado" no por afn de neologismo sino para ilustrar mejor que su uso y explotacin no son libres, adems de por correccin idiomtica y jurdica. Sobre l no es preciso decir mucho ms de cuanto ha quedado expuesto en los apartados anteriores, y quien desee informacin adicional har bien en acudir a un manual de propiedad intelectual sobre programas de ordenador, cosa que este artculo no pretende ni puede ser. No tiene sentido examinar las limitaciones impuestas en las licencias estndar de software cerrado, ya se han citado algunas en apartados anteriores, como la frmula de aceptacin de licencia consistente en romper los precintos del paquete de CDs, es decir, antes de toda posibilidad de uso y comprobacin, contra el art. 10bis LCU. En el software cerrado simplemente la licencia no tiene otra finalidad que la de plegarse de modo obsesivo a las facultades del copyright (de la LPI en Espaa), prescindiendo de cualquier consideracin sobre las libertades constitucionalmente garantizadas de los usuarios de software, sin otra finalidad que la explotacin exclusiva, normalmente no por su autor sino por un titular derivado, y lesionando (sin advertirlo, claro est) sus propios intereses de mercadotecnia y desarrollo. El uso queda prohibido sin licencia aceptada, imposibilitndose la instalacin, restringindola a monopuesto, o necesitndose una reactivacin de la licencia si se supera determinado nmero de componentes del hardware (!). No pueden evitar estas licencias el que se apliquen las normas imperativas que hemos visto en el apartado 2.1.3, pero quedan restringidas al mximo, de hecho se imposibilitan porque las modificaciones necesarias no son factibles sin el cdigo fuente, nunca disponible. Con lo visto hasta ahora, queda claro que la subcategora "shareware" se refiere a programas cerrados que restringen el uso si no se paga una cantidad de dinero adicional pasado un perodo de prueba. Normalmente son programas incompletos, mejor dicho mutilados.

Limitaciones a la libre reproduccin y copia


Estas actividades no son autorizadas en el softawre cerrado, e incluso pueden impedirse automticamente. Las copias de seguridad se restringen en lo posible. La copia privada es calificada incorrectamente de piratera en varias licencias que se ha podido consultar.
Pgina 140 de 212 Introduccin a Linux

Introduccin a Linux

Lmites a libre transformacin y modificacin


En el software cerrado y sus variantes la transformacin est prohibida, y ni siquiera es factible, pues el cdigo fuente nunca se acompaa en la distribucin. Los componentes del software no pueden separarse legtimamente. Caso de hacerse alguna transformacin legtima, si la licencia se revoca los archivos fuentes derivados han de destruirse (!). El shareware tampoco es modificable, pues casi siempre es cerrado y adems no acompaa las fuentes. El denominado "freeware" es normalmente software cerrado que, aunque puede redistribuirse con muchos lmites -no libremente- no puede sin embargo ser modificado, entre otras razones porque el programa fuente no est disponible. No es en modo alguno software libre contra lo que indica su (impropio) nombre.

Lmites a la libre distribucin


En el software cerrado la distribucin y la redistribucin estn sencilla y rotundamente prohibidas, salvo en los casos del llamado freeware. Esto incluye la prohibicin de alquiler y prstamo.

Conclusin
El matemtico David Hilbert, refirindose a la teora de conjuntos creada por Georg Cantor, objeto del desprecio de otros matemticos, deca "nadie podr expulsarnos del paraso que Cantor ha creado para nosotros" . Desde los ingenieros y programadores hasta los usuarios menos avezados, pasando por distribuidores, empresas comerciales y universidades, formamos legin quienes hacemos correr sobre nuestras mquinas programas libres, hackeados y compilados por nosotros mismos conforme a nuestras necesidades y gustos, que nos prestamos y copiamos libremente, con la destreza y seguridad que permiten el mejor banco de pruebas posible, una variedad inagotable de soluciones, siempre en renovacin, y una documentacin de calidad superior a la estndar de los programas no libres. El software libre, sobre todo si es copyleft, mantiene e impulsa el entusiasmo universal en la computacin, especie en peligro en las dos ltimas dcadas, e incluso comienza a servir de referencia para otros mbitos de la libertad intelectual. No es seguro que esta apreciacin de la realidad sea completa, pero es la de mucha gente. Adems, es el objeto de una polmica contempornea trascendental, que no se trata en este artculo sino muy de pasada. Las piezas puestas en juego por el software libre son muchas y poderosas. Es cierto que el software libre trata de la libertad, y que

Plataforma de Teleformacin de IFES

Pgina 141 de 212

Introduccin a Linux

ste no es un asunto slo comercial o industrial. Simplemente, es una asunto muy grande, de enjundia, origen o final de conflictos a veces muy serios. En fin, tal vez la cosa est a estas alturas algo ms clara y podamos parafrasear a Hilbert tranquilamente, pero sin bajar la guardia: Nadie podr expulsarnos del paraso que la GNU-GPL ha creado para nosotros.

Apndices
Apndice A - Abreviaturas utilizadas
CC - Cdigo civil CE - Constitucin espaola CP - Cdigo penal Disp. Ad. - Disposicin adicional Disp. Trans. - Disposicin transitoria FSF - Free Software Foundation GNU-GPL - Licencia Pblica General del proyecto GNU - GNU's Not Unix LCU - Ley de consumidores y usuarios LEC - Ley de enjuiciamiento civil LPI - Ley de propiedad intelectual MEDC - Ministerio de Educacin, Cultura y Deporte OSD - Definicin de Fuente Abierta, de la Open Source Initiative OSI - Open Source Initiative RD - Real Decreto RTV - Radiotelevisin sl - Software libre UE - Unin Europea

Apndice B - Leyes, reglamentos, tratados internacionales


Disposiciones espaolas: La LPI vigente est recogida en el texto refundido de 1996, aprobado por Real Decreto Legislativo 1/1996 de 12 de abril, publicado en el BOE nm. 97 de 22 de abril. Las ltimas reformas se produjeron en marzo de 1998 y enero de 2000. Est en elaboracin una nueva modificacin, por motivo de la Directiva 2001/29/CE del Parlamento y Consejo, 22 de mayo, publicada el 22 de junio 2001, sobre armonizacin de determinados aspectos de los derechos de autor y derechos afines en la sociedad de la informacin. Ley orgnica, de proteccin al honor, a la intimidad personal y familiar y a la

Pgina 142 de 212

Introduccin a Linux

Introduccin a Linux

propia imagen, 1/1982 de 5 de mayo. Ley general para la defensa de los consumidores y usuarios, 26/1984 de 19 de julio. Ley de patentes, 11/1986 de 20 de marzo. Ley de proteccin de las topografas de los semiconductores, 11/1988 de 3 de mayo. Ley de marcas, 17/2001 de 7 de diciembre. El Cdigo penal espaol fue aprobado por la Ley Orgnica 10/1995 de 23 de noviembre, BOE 281 de 24 de noviembre. Ley de enjuiciamiento civil, 1/2000 de 7 de enero. Real Decreto 1584/1991 de 18 de octubre, que aprueba el Reglamento del Registro General de la Propiedad Intelectual. Es el que viene aplicndose hasta que se encuentre totalmente en funcionamiento el sistema de registro diseado por el Real Decreto 733/1993 de 14 de mayo, que aprueba el nuevo Reglamento del Registro General de la Propiedad Intelectual. RD 114/2000 de 28 de enero (BOE 33 de 8 de febrero), de la Comisin Interministerial para actuar contra las actividades vulneradoras de los derechos de propiedad intelectual e industrial (Comisin antipirateo). Reglamento del Consejo de la UE que prohibe la comercializacin de mercancas piratas y la intervencin de las aduanas para impedirla, Rgl.(CE) 241/1999 de 25 de enero, DOCE 2.2.1999 L 27.

Convenios internacionales: Convenio de 14 de julio de 1967 que establece la Organizacin Mundial de la Propiedad Intelectual. Convenio de Berna de 9 de septiembre de 1886 para la proteccin de las obras literarias y artsticas, revisado en Pars el 24 de julio de 1971. Convencin Universal de Ginebra de 6 de septiembre de 1952 sobre Derecho de Autor, revisada en Pars el 24 de julio de 1971.

La Organizacin Mundial de la Propiedad Intelectual (OMPI) con sede en Ginebra, y la Organizacin Mundial del Comercio (OMC) son foros generadores de importantes documentos y acuerdos internacionales en materia de derechos de propiedad intelectual.

Apndice C - Referencias
Se incluye slo una breve nota de los materiales utilizados. Un libro introductorio, que no trata a fondo las cuestiones jurdicas pero s el tema general del software libre, WAYNER, P., "La ofensiva del software libre" , ed. Granica, Barcelona, 2001. Los sitios web en los que puede encontrarse informacin sobre los asuntos tratados en

Plataforma de Teleformacin de IFES

Pgina 143 de 212

Introduccin a Linux

este artculo son naturalmente innumerables. Un buen libro en lnea se encuentra en www.oreilly.com/opensources/ , "Open Sources: Voices from the open source revolution" , con artculos de E. S. Raymond, M. K. McKusick, S. Bradner, R. Stallman, M. Tiemann, P. Vixie, L. Torvalds, R. Young, L. Wall, B. Behlendorf, B. Perens, T. O'Reilly, y J. Hamerly y T. Paquin con S. Walton, ed. O'Reilly Ass., Inc., 2000. Para conocer los fundamentos del software libre, y no slo los jurdicos, es evidente que el directorio recomendado est en www.gnu.org/philosophy/ . La mejor aplicacin prctica de la teora del proyecto GNU est basada en www.debian.org/social_contract. Un buen lugar para empezar a leer sobre programas libres y sus problemas en cuanto a licencias es www.opensource.org En castellano puede consultarse http://gsyc.escet.urjc.es/sobre/, grupo SoBre de software libre. Una lectura nueva y prctica se encuentra en el proyecto (proposicin diramos en Espaa) de ley sobre uso del software libre en la Administracin pblica, remitido al Congreso peruano el 9 de abril de 2002 por los congresistas E.VILLANUEVA NEZ y J.RODRICH ACKERMAN, http://www.gnu.org.pe/rescon.html.

Artculos
Lista por temas Lista por autor Licencia GFDL Licencia GPL

La Espiral
Objectivo/ Noticias Recetas Contribuir Historia Repositorio CVS Contacto

v. 0.92, 16 de abril de 2002 Copyright 2001, 2002, 2003, 2004, La Espiral, debian-laespiral@lists.debian.org Permitida la cpia y distribucin textual, integral, siempre y cuando se mantenga este aviso.

Pgina 144 de 212

Introduccin a Linux

Introduccin a Linux

Internet y herramientas de red

Navegadores de la World Wide Web (WWW)


Adaptado de: , un documento libre del Grupo de usuarios Gulic Durante muchos aos Netscape Communicator 4 fue el nico navegador multiplataforma real, dando cobertura a muchos de los distintos UNIX comerciales existentes. Puesto que Linux no poda ser menos, casi desde que Linux tiene interfaz grfico ha existido una versin del navegador de Netscape para este sistema operativo. Netscape Communicator 4 proporciona soporte para navegacin de pginas web con JavaScript y Flash 5, y permite visualizar documentos PDF dentro del navegador (mediante un plugin para el Adobe Acrobat Reader). Tambin nos permite gestionar el correo electrnico y componer pginas web. Los Linuxeros siempre hemos considerado que el navegador de Netscape consuma demasiados recursos en Linux, adems de tener bastantes problemas de estabilidad. Debido a ste y a otros factores importantes, como fueron la forma de competir con la casa Microsoft Corporation, Netscape Communications Corporation lleg a la sana conclusin de que la mejor manera de mantener su navegador en el mercado era liberando su cdigo fuente. As naci el proyecto Mozilla . Sin embargo, Mozilla sigue siendo un navegador excesivamente pesado para un nmero importante de mquinas. Dentro de la comunidad del Software Libre, se alzaron voces en contra de ese desperdicio de recursos, proponiendo la creacin de navegadores alternativos. Aqu listamos algunas de las alternativas que podemos encontrar en el rea de los navegadores web dentro del Software Libre: Netscape Communicator: Bajo dicho nombre podemos encontrar el navegador original de Netscape. La ltima versin es la 4.77. Epiphany: Es un navegador que utiliza el motor de rendering Genko de Mozilla para mostrar el contenido de la World Wide Web. Sin embargo, puesto que utiliza las bibliotecas de GNOME y GTK es ligeramente ms rpido que Mozilla, y se integra perfectamente con el resto de las aplicaciones GNOME. Konqueror: Gestor de ficheros, navegador web y visor de documentos del KDE. Mozilla: Es un sofisticado navegador grfico de la World Wide Web que soporta un gran nmero de tecnologas, como por ejemplo soporte para

Plataforma de Teleformacin de IFES

Pgina 145 de 212

Introduccin a Linux

HTML 4.0, CSS 2, JavaScript y Java. Adems de poder ser utilizado como un sencillo visor de HTML. Mozilla est basado en parte del cdigo de los navegadores Netscape Communicator y Netscape Navigator. Mozilla Firefox: Navegador que tambin procede de fundacin Mozilla. En los ltimos tiempos se est convirtiendo en un navegador de referencia por su rapidez y sencillez de uso.

Bueno, seguro que en el momento de leer este apartado, habrn surgido nuevos navegadores web dentro del mundillo del Software Libre.

Mozilla
Mozilla es probablemente el ms completo de los navegadores multiplataforma. Esto es debido a que implementa soporte para un gran nmero de tecnologas de la World Wide Web, y se cie rigurosamente a los estndares del W3C (nombre con el que se conoce al World Wide Web Consortium, que es el organismo encargado de la estandarizacin de las diferentes tecnologas presentes en la World Wide Web).

Pgina 146 de 212

Introduccin a Linux

Introduccin a Linux

Ventana del navegador web Mozilla Para centrarnos en el manejo de Mozilla empezaremos mirando la Figura. En ella podemos observar la clsica ventana de navegacin de Mozilla que es semejante a la de otros muchos navegadores. A continuacin enumeramos los elementos de la ventana de arriba a abajo y de izquierda a derecha: 1. 2. 3. 4. 5. 6. Barra de mens Barra de herramientas de navegacin Barra de herramientas personales Panel lateral rea de visualizacin de la navegacin Barra de tareas

La visualizacin de la mayor parte de estos elementos puede activarse o desactivarse desde el men VER -> BARRA DE HERRAMIENTAS de la barra de men del programa. Adicionalmente disponemos de una barra denominada barra de componentes. Dicha barra se muestra como unos pequeos iconos a la izquierda de la barra de tareas (parte inferior de la ventana del programa). Dicha barra nos permite lanzar de forma sencilla y rpida algunas de las otras herramientas de Internet que acompaan al navegador web Mozilla. Entre dichas herramientas disponemos de un editor de HTML y de un lector de noticias y de correo electrnico.

Navegacin bsica
Para navegar por la World Wide Web basta con introducir la direccin de la mquina o recurso al que deseamos acceder en la barra de herramientas de navegacin. La misma barra dispone a la izquierda de botones para avanzar o retroceder a travs de las pginas visitadas, recargar la pgina actual, o detener la descarga. A la derecha de la barra disponemos de un botn de acceso rpido al men de impresin, con el que podemos imprimir la pgina actual. Para simplificar el aprendizaje, si dejamos el puntero del ratn sobre cualquiera de los botones durante unos segundos la aplicacin nos informar de la funcin de cada uno. Adems de las funciones bsicas la barra de herramientas de navegacin nos permite realizar bsquedas de trminos en Internet. Para ello basta con introducir las palabras

Plataforma de Teleformacin de IFES

Pgina 147 de 212

Introduccin a Linux

a buscar en la propia barra y a continuacin pulsar en el botn BUSCAR. El navegador consultar al buscador que tengamos configurado (por defecto se trata del de Netscape Network) y nos mostrar los resultados. El buscador utilizado puede ser configurado en EDITAR -> PREFERENCIAS... -> NAVIGATOR -> BSQUEDA EN INTERNET. Mientras que el contenido de la propia barra de herramientas de navegacin puede ser configurado en EDITAR -> PREFERENCIAS... -> NAVIGATOR. Nos ocuparemos de describir el cuadro de dilogo PREFERENCIAS y las opciones de configuracin de Mozilla ms a delante.

Men del botn de retroceso de la barra de herramientas de navegacin Algunos de los botones de la barra de herramientas de navegacin disponen de un pequeo icono con forma de flecha en la parte inferior-derecha de los mismos. Dicho icono suele desplegar un men con opciones adicionales. En el caso particular de los botones de avance y retroceso dicho men nos permite elegir a que direccin, de entre las ya visitadas, queremos avanzar o retroceder. Hay que tener en cuenta que si no existiera el men tendramos que retroceder o avanzar por las pginas visitadas de una en una. Durante nuestra visita a la World Wide Web la barra de tareas suele mantenernos

Pgina 148 de 212

Introduccin a Linux

Introduccin a Linux

informados de las acciones que realiza el navegador. Por ejemplo, nos informa de si estamos detenidos y de cuanto se tard en descarga la pgina actual, o de si estamos descargando alguna pgina. Adems, la barra de tareas dispone de una serie de iconos en la parte derecha con el objetivo de mantenernos informados del estado de la conexin. Si dejamos unos segundos el puntero del ratn sobre dichos iconos seremos informados de su significado, e incluso podremos realizar alguna accin relacionada con dicha informacin. Trabajar sin conexin: Mientras disponemos de conexin a la red y navegamos, Mozilla descarga las pginas que vamos visitando y las almacena en el disco duro en lo que se denomina una cach. La existencia de est cach es importante puesto que si visitamos varias veces una misma direccin Mozilla no tiene necesidad de volver a repetir la descarga. En su lugar nos proporciona directamente la pgina almacenada en la cach. En ocasiones no disponemos de conexin a red por lo que sera deseable que Mozilla no intentar descargarse la pginas desde la red y nos mostrara directamente la copia en la cach. Tambin es posible que aun habiendo conexin estemos interesados en que Mozilla no haga uso de ella. Ese modo de trabajo que andamos buscando es el denominado trabajo sin conexin. Existe un icono que representa dos enchufes desconectados que nos indica que estamos en dicho modo. Si los enchufes estn conectados significa que estamos haciendo uso de la conexin de red, es decir trabajo con conexin. El paso de un modo de trabajo a otro se puede realizar pulsando con el ratn sobre el icono, o seleccionando el elemento de men ARCHIVO -> TRABAJAR SIN CONEXIN. Cookies: En ocasiones algunos servidores de la World Wide Web requieren que los navegadores que los acceden almacenen cierta informacin. En muchos casos se trata de informacin sobre nuestras preferencias que dichos servidores han recopilado, y que desean que guardemos para volver a reclamarla cuando nos volvamos a conectar a sus pginas. Este tipo de comportamiento puede ser un agujero de seguridad en potencia (o al menos un problema de privacidad) por lo que Mozilla dispone de un filtro de cookies que nos permite decidir en que servidores confiamos y en cuales no. Si nuestro navegador ha aceptado una cookie para ser almacenada podremos observar el icono de una galleta. Pulsando sobre la misma podremos averiguar la informacin que contiene, ascomo configurar el filtro de cookies frente a posibles peticiones futuras. Seguridad: Es importante recordar que todo lo que recibimos o enviamos desde o hacia la World Wide Web es fcilmente interceptarle. Cuando accedemos a pginas donde la seguridad de las comunicaciones es de vital

Plataforma de Teleformacin de IFES

Pgina 149 de 212

Introduccin a Linux

importancia dicha comunicacin se hace cifrando los datos. Si disponemos de un icono con un candado abierto en nuestro navegador significa que todo lo que hagamos en Internet puede ser observado por otros. Sin embargo, si dicho candado est cerrado es porque las comunicaciones son seguras, por lo que tenemos garantas de que nuestros datos no pueden ser fcilmente interceptados. Al pulsar sobre dicho icono obtendremos la informacin de seguridad para la pagina actual. Al igual que en muchos otros navegadores Mozilla dispone de un men de contexto activable pulsando con el botn derecho del ratn sobre alguno los elementos del rea de visualizacin. Dicho men nos permite, por ejemplo, recargar la pgina actual, descargar un enlace, o abrir un enlace en una ventana diferente, entre otras muchas posibles acciones. Durante la navegacin por la World Wide Web resulta habitual disponer de varias ventanas de Mozilla abiertas en pginas diferentes. Sin embargo, todas esas ventanas estn ligadas a un mismo proceso en ejecucin del navegador Mozilla. Es importante conocer esto puesto que si seleccionamos el elemento de men ARCHIVO -> SALIR TODAS las ventanas de Mozilla se cerraran, al terminar el proceso que las gestionaba. Si por el contrario deseamos cerrar nicamente una de las ventanas en particular, debemos seleccionar ARCHIVO -> CERRAR o utilizar el botn correspondiente de la barra de ttulo del marco de la ventana.

Pestaas
Una de las innovaciones tomada de otros navegadores e introducida en Mozilla es el uso de las pestaas durante la navegacin. Tanto si seleccionamos la opcin ARCHIVO -> NUEVO -> PESTAA DE NAVIGATOR, como si seleccionamos en ABRIR EN UNA PESTAA NUEVA cuando pulsamos con el botn derecho en un enlace, se nos abre una nueva rea de visualizacin dentro de la misma ventana de Mozilla. Podemos disponer de tantas reas como deseemos y en cada una visualizar una pgina diferente.

Pgina 150 de 212

Introduccin a Linux

Introduccin a Linux

Navegacin con pestaas en Mozilla En la figura anterior podemos observar cmo cada rea est representada por una pestaa en la parte superior del rea de visualizacin. Seleccionando un pestaa u otra podremos navegar por una pgina u otra. Cuando deseemos cerrar la pestaa seleccionada bastar con que pulsemos en botn a la derecha de todas las pestaas. Tambin podemos arrastrar un enlace en la pagina web del rea de visualizacin sobre una de las pestaas. Con ello conseguimos que en dicha pestaa se cargue el recurso del la World Wide Web al que apunta dicho enlace (por ejemplo, una pgina web, una imagen, etc). Algunos aspectos del comportamiento de las pestaas pueden ser configurados en EDITAR -> PREFERENCIAS... -> NAVIGATOR -> PESTAAS.

Marcadores
Mozilla nos permite almacenar de forma ordenada y clasificada las direcciones de los recursos de la World Wide Web que ms nos interesan. Dicho almacenamiento se hace en forma de lo que se denominan marcadores.

Plataforma de Teleformacin de IFES

Pgina 151 de 212

Introduccin a Linux

Aadir la direccin de la pgina actual como marcador es tan sencillo como seleccionar MARCADORES -> AADIR A MARCADORES. Tambin podemos pulsar con el botn derecho del ratn sobre un enlace y seleccionar la opcin correspondiente para aadirlo a los marcadores. En todo caso el marcador se crea siempre al final de la lista. Si deseamos tener un control ms fino para, por ejemplo, aadir el marcador a una carpeta determinada, podemos utilizar el men MARCADORES -> ARCHIVAR MARCADOR...Dicha opcin del men muestra un cuadro de dilogo que nos permite seleccionar el nombre del nuevo marcador, crear carpetas de marcadores, y elegir en que carpeta deseamos guardarlo. Los marcadores as creados son accesibles en forma de mens en el men MARCADORES de la barra de mens. En ocasiones es necesario realizar sobre los marcadores tareas de administracin mucho ms avanzadas. La opcin MARCADORES -> ADMINISTRAR MARCADORES despliega un cuadro de dilogo (figura siguiente) que nos permite manipular los marcadores a nuestro antojo. Podemos movernos por el rbol de marcadores y copiarlos o pegarlos con ayuda de ratn. Tambin podemos alterar sus propiedades utilizando el men de contexto que se despliega con el uso del botn derecho de nuestro ratn.

Pgina 152 de 212

Introduccin a Linux

Introduccin a Linux

Cuadro de dilogo ADMINISTRAR MARCADORES El administrador de marcadores dispone de opciones para ordenar los marcadores segn diversos criterios, para realizar bsquedas, y para exportar o importar hacia o desde los marcadores de otros navegadores. Adems de carpetas, el administrador de marcadores nos permite crear separadores que se utilizan para separar elementos dentro de los mens. Al igual que con el resto de las ventanas de Mozilla debemos evitar utilizar la opcin ARCHIVO -> SALIR puesto que sta cierra todas la ventanas del programa. Entre las carpetas de marcadores existe una con un significado especial. La carpeta PERSONAL TOOLBAR FOLDER representa la barra de herramientas personales, que est situada debajo de la barra de herramientas de navegacin. Todos los marcadores insertados en dicha carpeta aparecern automticamente como botones en la citada barra de herramientas.

Panel lateral
A la izquierda del rea de visualizacin est el panel lateral o sidebar de Mozilla. Dicho panel dispone de una serie de pestaas con funciones que ayudan a la navegacin. Utilizando el men PESTAAS del panel lateral podemos decidir que pestaas vemos de entra la disponibles. Tambin podemos personalizar nuestro panel aadiendo nuevas pestaas con nuevas funciones descargadas desde Internet. Para que no interfiera con la navegacin podemos modificar el ancho del panel pulsando con el ratn en la barra que lo separa del rea de visualizacin. Si hacemos una pulsacin sencilla sobre la pequea marca del centro podremos plegar y desplegar el panel de forma rpida. Tambin podemos ocultarlo de forma permanente pulsando en la equis de la parte superior-derecha del panel. Por defecto, en el reducido espacio del panel lateral podemos consultar el historial y los marcadores, y realizar bsquedas por palabras o por temas relacionados en Internet. Sin embargo, como ya hemos comentado, dichas funcionalidades son completamente ampliables.

Preferencias
Muchas de las caractersticas de Mozilla son personalizables. En la figura siguiente podemos observar el cuadro de dilogo de preferencias de Mozilla. A dicho cuadro podemos acceder desde la opcin EDITAR -> PREFERENCIAS... Las preferencias de Mozilla estn clasificadas en categoras. Al seleccionar una

Plataforma de Teleformacin de IFES

Pgina 153 de 212

Introduccin a Linux

categora podemos observar en el lado derecho de la ventana las opciones de configuracin relacionadas. Adems, cada categora puede contener subcategoras cuya lista se despliega o se pliega con una pulsacin simple del ratn sobre dicha categora.

Cuadro de dilogo de preferencias de Mozilla APARIENCIA: Preferencias tales como los colores, o los tipos de letras utilizados por el navegador en la visualizacin de las pginas web son establecidas en esta categora. Tambin podemos seleccionar el idioma y el tema de la aplicacin. Seleccionar un nuevo tema cambia el aspecto visual de los botones, cuadros de dilogo, men, barras de herramientas y otros objetos. En Internet resulta sencillo encontrar todo tipo de temas para personalizar nuestro navegador. NAVIGATOR: Las preferencias especficas del navegador son establecidas en esta categora. Entre ellas contamos con la direccin de la pgina de inicio, el buscador por defecto, o la administracin del historial de direcciones. En ocasiones el contenido de las pginas web est disponible en varios idiomas. En esta categora podemos establecer los idiomas en los

Pgina 154 de 212

Introduccin a Linux

Introduccin a Linux

que preferimos ver dichas pginas web. COMPOSER: En esta categora podemos encontrar toda una serie de opciones relacionadas con el editor de pginas web que viene con Mozilla. MAIL & NEWS: En caso de haber instalado el lector de noticias y de correo electrnico de Mozilla, podemos acceder a esta categora para configurarlo. PRIVACIDAD Y SEGURIDAD: Las preferencias de privacidad y seguridad determinan las caractersticas del filtrado de cookies e imgenes. Adems, nos permite configurar el navegador para que guarde contraseas o datos de formularios que utilizamos habitualmente. Tambin nos permite gestionar los protocolos y certificados utilizados durante las conexiones encriptadas. Debido a que la mayor parte de esta informacin confidencial es almacenada en el disco duro, Mozilla permite la encriptacin de dichos datos bajo una contrasea maestra. Con ello se consigue que esa informacin no pueda ser accesible a terceros. AVANZADAS: En esta categora se configuran aspectos avanzados como el soporte de Java y JavaScript, la configuracin del cach, o el acceso a la red a travs de proxies. La opciones de esta categora nos permiten, por ejemplo, establecer qu permitimos y qu no permitimos hacer a las pginas web a las que accedemos. SIN CONEXIN Y ESPACIO EN DISCO DURO: Configuracin sobre el comportamiento del navegador en los modos de trabajo con conexin y sin conexin. Podemos utilizar la ayuda para obtener informacin ms detallada de cada una de las opciones.

Programas FTP (gFTP)


Existen multitud de programas clientes de FTP tanto para la consola como para el entorno grfico. gFTP es el cliente FTP del entorno de escritorio GNOME. Se trata, por tanto, de un cliente en modo grfico diseado para facilitar el acceso a los recursos FTP. El uso de un cliente en modo grfico nos permite olvidarnos de los comandos del protocolo FTP. En su lugar todas las operaciones se reducen a sencillas acciones sobre la interfaz grfica.

Plataforma de Teleformacin de IFES

Pgina 155 de 212

Introduccin a Linux

Ventana de gFTP en una conexin a ftp.es.debian.org En la figura anterior podemos observar la ventana de un gFTP con una conexin a ftp.es.debian.org. Para iniciar una sesin de FTP con gFTP debemos recurrir a la barra situada justo debajo de la barra de mens. En ella debemos especificar los datos requeridos para realizar la conexin. SERVIDOR: En este campo debemos escribir el nombre de la mquina remota a la que nos vamos a conectar. En el de la figura anterior fue ftp.es.debian.org. PUERTO: Cada servicio que se ofrece en Internet tiene un puerto asociado. El puerto por defecto para el servicio de FTP es el 21, aunque algunas mquinas dan dicho servicio en otro puerto cualquiera. En este campo se debe especificar el puerto en el que la mquina remota est esperando las peticiones de FTP. Si no se indica nada, como es nuestro caso, gFTP asumir que queremos utilizar el puerto por defecto, es decir, el 21. USUARIO: En este campo debemos indicar el nombre de usuario con el que queremos acceder a la mquina remota. Si el servidor es pblico, lo ms

Pgina 156 de 212

Introduccin a Linux

Introduccin a Linux

probable que utilizando el nombre anonymous podamos acceder a travs de la cuenta de usuario annima. CONTRASEA: La contrasea asociada al usuario con el que queremos acceder. En caso de acceder a travs de la cuenta de usuario annima debemos indicar nuestra direccin de correo electrnico. PROTOCOLO: El ltimo campo nos permite indicar el protocolo que vamos a utilizar para nuestra conexin. gFTP no slo puede utilizar el protocolo FTP para realizar transferencias de archivos. Por ejemplo, podemos utilizar SSH2 para realizar transferencias de archivos encriptadas. Esto garantiza que tanto nuestro datos (nombre de usuario, contrasea, etc) como los de los archivos estn seguros frente a intentos de interceptacin de las comunicaciones. Es importante destacar que el protocolo FTP no es un protocolo seguro, en el sentido de que nuestra contrasea y todos los dems datos que viajen por la conexin son fcilmente interceptables.

Tras completar los datos podemos pulsar en el botn de la izquierda para iniciar la sesin. gFTP se encarga de enviar los comandos necesarios para iniciar la conexin, evitndonos el engorroso problema de tener que conocerlos. El botn de la izquierda nos permite iniciar una conexin si sta no ha sido iniciada, o terminarla si ya ha sido iniciada correctamente. Sin embargo, si queremos detener el intento de conexin en curso debemos recurrir al botn de la derecha. Dicho botn se utiliza para abortar cualquier tarea que gFTP est realizando en el momento actual. En la parte inferior de la ventana de gFTP podremos observar un registro de la conexin. En rojo veremos informacin propia de gFTP, en verde observaremos los comandos que gFTP enva a la mquina remota, y en azul podremos ver la respuestas de la mquina remota a dichos comandos. Sea cual sea la tarea que estemos realizando siempre quedar registrada en esa zona de la ventana. Por eso suele ser importante estar atento a ella para saber en todo momento lo que est sucediendo. Utilizando la barra de desplazamiento de la derecha podremos ver los mensajes antiguos, o que hayan pasado demasiado rpido. El centro de la ventana de gFTP est dividido en dos reas que podemos utilizar para navegar por el rbol de directorios. El rea de la izquierda podemos utilizarla para movernos por el rbol de directorios de la mquina local. Mientras que el rea de la derecha, siempre y cuando gFTP est conectado, podemos utilizarla para movernos por el rbol de directorios de la mquina remota. En ambos lados podemos utilizar el botn derecho del ratn para desplegar un men de contexto con un amplio conjunto de opciones. Con ellas podemos crear directorios, renombrar archivos, ver y editar archivos, modificar sus atributos, borrar, etc.

Plataforma de Teleformacin de IFES

Pgina 157 de 212

Introduccin a Linux

Mientras que la doble pulsacin sobre una directorio nos permite ver su contenido, una doble pulsacin sobre un archivo inicia una transferencia para que el archivo sea enviado al otro lado de la conexin. El mismo efecto conseguimos si seleccionamos uno o ms archivos (p. ej. pulsando con el botn izquierdo del ratn sobre el archivo deseado mientras mantenemos pulsada la tecla Ctrl o Shift) y los arrastramos al rea del otro lado. Tambin podemos conseguir el mismo efecto si pulsamos sobre los botones situados en el centro de las dos reas. Dichos botones nos permiten iniciar la transferencia de archivos en el sentido que ms nos convenga. Justo entre el rea donde se registran las tareas realizadas por gFTP y la que utilizamos para explorar los rboles de directorios, tenemos la cola de transferencias. Todas las transferencias iniciadas o pendientes se muestran en dicha rea, as como informacin relacionada con ellas. Utilizando el men de contexto que se despliega con el botn derecho de nuestro ratn podemos detener o iniciar una transferencia, o alterar el orden de la cola para decidir qu transferencia se iniciar despus de que se complete la actual. Por defecto, las transferencias desde mquinas remotas diferentes se realizan en paralelo, mientras que las transferencias desde una misma mquina remota que se van realizando secuencialmente.

Mensajera instantnea y IRC

Gaim
Entre la surtida gama de clientes de Mensajera Instntanea, destacaremos el programa Gaim. La caracterstica que nos mueve a destacar este programa en particular es la gran cantidad de protocolos soportados en un nico cliente. Con este cliente de Mensajera Instntanea podremos conectarnos con los servicios de MSN, Yahoo, AOL, ICQ, Jabber, Napster o el propio IRC, por citar algunos de los protocolos soportados.

Pgina 158 de 212

Introduccin a Linux

Introduccin a Linux

Ventana de Gaim en una charla con otro usuario a travs de Jabber

XChat/KVirc
Otro de los servicios que se suelen utilizar con bastante frecuencia, se encuentran las consultas al IRC. Este protocolo nos permite estar interconectados con otros grupos de usuarios, de una manera muy dinmica. En Linux, en el apartado de clientes de IRC grficos, destacan especialmente dos clientes: XChat y KVirc XChat es un cliente de IRC muy flexible, que nos permite mantener sesiones no slo en varios canales al mismo tiempo, sino que incluso nos permite conectar con varios servidores de IRC al mismo tiempo, todo ello de una manera muy intuitiva.

Plataforma de Teleformacin de IFES

Pgina 159 de 212

Introduccin a Linux

Ventana de Xchat en un canal de IRC De la misma manera, el KVirc es otro cliente grfico capaz de satisfacer al ms exigente de los usuarios. Entre otras cosas destaca por las ayudas que presta a aquellos que les gusta disfrutar haciendo scripts para los clientes de IRC.

Aplicaciones de correo electrnico


Adaptado de: , un documento libre del Manual oficial de referencia de Red Hat Linux El correo electrnico es un modo muy popular de comunicarse con otros a travs de Internet. Puede usarlo con un cliente de correo , una aplicacin que entiende las diversas transmisiones de correo electrnico estndar y le permite enviar, recibir y leer el correo electrnico. Cualquier distribucin Linux contiene varias aplicaciones de correo electrnico, incluyendo los clientes de correo electrnico grficos como por ejemplo Evolution Mozilla Mail y clientes en modo texto tal como mutt . Todas las aplicaciones de clientes de correo electrnico estn diseados para satisfacer a ciertos tipos de usuarios; de manera que pueda escoger uno con las caractersticas que mejor satifacen sus necesidades en particular.

Pgina 160 de 212

Introduccin a Linux

Introduccin a Linux

Ya que algunos clientes de correo electrnico ejecutan las mismas tareas bsicas (enviar y recibir correo electrnico), escoja la ms conveniente y fcil de usar. Antes de lanzar el cliente de correo electrnico, debera tener alguna informacin til sobre su Internet Service Provider (ISP) de manera que pueda configurar el cliente adecuadamente. Las siguientes listas muestran algunas cosas que es necesario que conozca: Su direccin de correo electrnico La direccin de correo electrnico que utilizar para enviar y recibir el correo. Normalmente adopta la forma de yourname@yourisp.net . Tipo de servidor para recibir correo (POP o IMAP) Para recibir correo, debe saber el tipo de servidor que utiliza su administrador de la red o proveedor de servicios de Internet. Esta direccin POP o IMAP normalmente adopta la forma de mail.someisp.net . POP , acrnimo de Post Office Protocol , se usa para enviar correo electrnico desde un servidor de correo a su buzn de correo del cliente de correo electrnico, el lugar en el que el correo electrnico de entrada est almacenado. La mayora de los servidores de correo electrnico ISP usan el protocolo POP, aunque puedan utilizar el protocolo ms reciente IMAP (Internet Message Access Protocol). IMAP , acrnimo de Internet Message Access Protocol , es un protocolo para recuperar los mensajes de correo electrnico desde su servidor de correo electrnico ISP. IMAP se diferencia de POP en que los correos electrnicos de los servidores IMAP estn almacenados en el servidor y permanece all incluso si descarga y lee su correo electrnico, mientras que el correo de POP est descargado para su cliente de correo electrnico directamente y no est en el servidor. Tipo de servidor para enviar correo electrnico (SMTP ) El Simple Mail Transfer Protocol (SMTP)(Protocolo de transferencia de correo simple), es un protocolo para enviar mensajes de correo electrnico entre servidores. La mayora de los sistemas de correo electrnico que envan correo a travs de Internet utilizan el protocolo SMTP para enviar mensajes de un servidor a otro; los mensajes se pueden recuperar posteriormente con un cliente de correo electrnico que utilice el protocolo POP o IMAP. SMTP se utiliza normalmente para enviar mensajes de un cliente de correo a un servidor de correo. Por este motivo, deber especificar tanto el servidor POP o IMAP como el servidor SMTP cuando configure la aplicacin de correo electrnico. Si tiene alguna duda o pregunta sobre la informacin necesaria, pngase en contacto con su proveedor de servicios de Internet o administrador de la red. Salvo si ha configurado correctamente esta informacin, no podr hacer un uso completo de los clientes de correo electrnico que se describen en este captulo.
Plataforma de Teleformacin de IFES Pgina 161 de 212

Introduccin a Linux

Evolution
La aplicacin Evolution es ms que un simple cliente de correo electrnico. Proporciona todas las funciones de administracin de correo electrnico estndar, que incluyen una administracin eficaz de buzones, filtros definidos por el usuario y bsquedas rpidas. Admite el uso de un calendario/programa flexible y permite a los usuarios crear y confirmar reuniones de grupo en lnea y eventos especiales. Evolution es la primera herramienta completa de administracin de informacin personal y de trabajo en grupo para Linux y sistemas basados en UNIX. Para lanzar Evolution en el panel del escritorio, seleccione Men principal => Programas =>Internet =>Correo electrnico .

Pantalla de bienvenida de Evolution La primera vez que inicie Evolution aparecer la pantalla de bienvenida, que le permite configurar su conexin de correo electrnico. Siga las instrucciones de la pantalla en la informacin que ha recopilado desde su ISP o administrador en las casillas de texto proporcionadas. Cuando acabe, haga click en Finish y ver la pantalla principal como se muestra en la figura.

Pgina 162 de 212

Introduccin a Linux

Introduccin a Linux

Pantalla principal de Evolution Para ver el contenido de su buzn o enviar un correo, haga clic en el icono Inbox .

Plataforma de Teleformacin de IFES

Pgina 163 de 212

Introduccin a Linux

Pantalla de la bandeja de entrada de Evolution Para componer un correo, seleccione New Message en la barra de herramientas.

Pgina 164 de 212

Introduccin a Linux

Introduccin a Linux

Pantalla de nuevo mensaje de correo electrnico de Evolution Cuando haya compuesto el mensaje y haya introducido la direccin de correo electrnico a la que enviar el correo, haga clic en Send en la barra de herramientas. Mientras que Evolution hace mucho ms que leer y enviar correo electrnico, este captulo se centra exclusivamente en las posibilidades del correo electrnico. Si desea conocer ms sobre el uso de algunas de las caractersticas de Evolution , como calendario/programa y mensajes de grupo, haga click en Help desde la barra de herramientas principal y escoja el componente que del que desea obtener ms informacin.

Mozilla Mail
En esta seccin se ofrece una breve descripcin de los pasos bsicos para enviar y
Plataforma de Teleformacin de IFES Pgina 165 de 212

Introduccin a Linux

recibir correo con Mozilla . Para iniciar Mozilla Mail , seleccione Men principal => Todas las aplicaciones Internet => Mozilla Mail . Para abrir Mozilla Mail mientras est en la aplicacin Mozilla , haga clic en el icono de correo situado en la esquina inferior izquierda de la pantalla de Mozilla .

Correo y noticias en Mozilla

Pgina 166 de 212

Introduccin a Linux

Introduccin a Linux

Pantalla de nuevo mensaje de correo electrnico de la herramienta de correo de Mozilla Para enviar un correo electrnico, haga clic en el botn Send o seleccione File => Send Now o Send Later . Si opta por enviar el correo ms tarde, puede volver a la pantalla de correo principal y seleccionar File => Send unsent messages . Para leer el correo electrnico, haga clic en la carpeta de correo que ha creado para ver una lista de los mensajes que ha recibido y todava no ha ledo. A continuacin, haga clic en el mensaje que desee leer. Cuando haya ledo un mensaje, puede eliminarlo o guardarlo en otra carpeta, entre otras muchas opciones.

Mozilla y los grupos de noticias


Los grupos de noticias son grupos de debate en Internet que tratan temas especficos.

Plataforma de Teleformacin de IFES

Pgina 167 de 212

Introduccin a Linux

Los debates se realizan en formato threaded (lo que significa que todos los temas y respuestas al tema estn organizados de manera que la lectura y suscriptcin a un grupo sea sencilla. No debe enviar mensajes si no lo desea, puede llevar a cabo lurk , que es un trmino de los grupos de noticias para la lectura sin enviar mensajes. Hay muchos grupos de noticias realmente excelentes en la Web con temas que abarcan desde la poltica hasta juegos de ordenador y extraas filosofas. Puede enviar y descargar fotografas y archivos a los grupos de noticias (aunque su ISP restrinja los grupos de noticias a envios de slo texto). Para participar en un grupo de noticias, primero deber configurar una cuenta de grupo de noticias. Haga clic en el nombre de la cuenta de correo en la barra lateral y seleccione Create a new account en las opciones que aparecen en el lado derecho de la pantalla. Aparecer la pantalla New Account Setup . Seleccione Newsgroup account y haga click en Next .

Configuracin de una cuenta para el grupo de noticias

Pgina 168 de 212

Introduccin a Linux

Introduccin a Linux

Introduzca su nombre y la direccin de correo electrnico en la siguiente pantalla y haga clic en Next . En la siguiente pantalla, escriba el nombre del servidor de noticias (si no conoce el nombre del servidor de noticias, pngase en contacto con el proveedor de servicios de Internet para que le proporcione esta informacin). En las ltimas pantallas, puede determinar o su administrador de redes para esta informacin). En las otras pantallas, puede determinar el nombre al que esta cuenta se referir y revisar la configuracin. Ahora, aparecer la cuenta de grupo de noticias que acaba de crear en la barra lateral de la pantalla de correo de Mozilla . Haga clic con el botn derecho del ratn en este nombre de cuenta y seleccione Subscribe . Aparecer un cuadro de dilogo con una lista de todos los grupos de noticias disponibles. Seleccione los grupos que desee leer y haga clic en Subscribe . Cuando haya acabado, haga clic en OK . Ahora, haga clic en la flecha situada junto al nombre de cuenta del grupo de noticias y la lista de grupos a la que est suscrito aparecer al lado. Seleccione el grupo de noticias al que desea acceder y aparecer un cuadro de dilogo con informacin sobre cmo descargar y leer los mensajes existentes. La accin de publicar un mensaje en un grupo de noticias es similar a escribir un correo electrnico, con la diferencia de que el nombre del grupo de noticias aparece en el campo To en lugar de la direccin de correo electrnico. Para anular la suscripcin de un grupo de noticias, haga clic con el botn derecho en el nombre del grupo y seleccione Unsubscribe .

Introduccin a MySQL

Trabajar con MySQL


En este captulo vamos a ver cmo: Qu es MySQL y usar el cliente mysql. Crear y usar una base de datos. Crear una tabla y aadir datos a la tabla. Seleccionar, modificar, ordenar y borrar registros de una tabla. Utilizar patrones de comparacin en las consultas. Contar registros de una tablas. Usar ms de una tabla en una base de datos. Usar mysql en modo batch.

Qu es MySQL?
MySQL es el servidor de bases de datos relacionales de cdigo abierto ms popular y

Plataforma de Teleformacin de IFES

Pgina 169 de 212

Introduccin a Linux

desarrollado. Una de las razones para el rpido crecimiento de popularidad de MySQL, es que se trata de un producto de cdigo abierto, y por lo tanto, va de la mano con este movimiento. Consta de las siguientes caractersticas. MySQL es un sistema de administracin de bases de datos. Una base de datos es una coleccin estructurada de datos. Los informacin que puede almacenar una base de datos puede ser tan simple como la de una agenda, un contador, o un libro de visitas, tan vasta como la de una tienda en lnea, un sistema de noticias, un portal, o la informacin generada en una red corporativa. Para agregar, acceder, y procesar los datos almacenados en una base de datos, se necesita un sistema de administracin de bases de datos, tal como MySQL. MySQL es un sistema de administracin de bases de datos relacionales. Una base de datos relacional almacena los datos en tablas separadas en lugar de poner todos los datos en un solo lugar. Esto agrega velocidad y flexibilidad. Las tablas son enlazadas al definir relaciones que hacen posible combinar datos de varias tablas cuando se necesitan consultar datos. La parte SQL de "MySQL" significa "Lenguaje Estructurado de Consulta", y es el lenguaje ms usado y estandardizado para acceder a bases de datos relacionales. MySQL es cdigo abierto. Cdigo abierto significa que la persona que quiera puede usar y modificar MySQL. Cualquiera puede descargar el software de MySQL de Internet y usarlo sin pagar por ello. Inclusive, cualquiera que lo necesite puede estudiar el cdigo fuente y cambiarlo de acuerdo a sus necesidades. MySQL usa la licencia GPL (Licencia Pblica General GNU), para definir qu es lo que se puede y no se puede hacer con el software para diferentes situaciones. Sin embargo, si uno est incmodo con la licencia GPL o tiene la necesidad de incorporar cdigo de MySQL en una aplicacin comercial es posible comprar una versin de MySQL con una licencia comercial.

Usar el cliente mysql


El objetivo de este captulo es mostrar el uso del programa cliente mysql para crear y usar una sencilla base de datos. mysql (algunas veces referido como "monitor mysql") es un programa interactivo que permite conectarnos a un servidor MySQL, ejecutar algunas consultas, y ver los resultados. mysql puede ser usado tambin en modo batch: es decir, se pueden colocar toda una serie de consultas en un archivo, y posteriormente decirle a mysql que ejecute dichas consultas. Lo primero es instalar mysql en alguna mquina y disponer de un servidor MySQL al cul podemos conectarnos. En nuestro caso, para instalarlo bajo Guadalinex, podemos abrir un terminal de Root ejecutando el men Herramientas del sistema>Terminal de Root. Tecleamos la contrasea del root y, dentro del terminal, nos aparece el shell

Pgina 170 de 212

Introduccin a Linux

Introduccin a Linux

(programa que interpreta y ejecuta los comandos que el usuario escribe en un indicador de lnea de comandos. Cuando iniciamos un Terminal, se activa el shell predeterminado especificado en la cuenta del sistema donde tecleamos las siguientes rdenes: shell>apt-get update shell>apt-get install mysql-server mysql-client Con apt-get install incluso nos configura el arranque, los derechos de ejecucin y las bases de datos propias de mysql y nos ahorramos tener que redefinir el PATH. Para probar que todo ha ido bien ejecutamos la consola mysql : shell>mysql y nos debera de aparecer el mensaje de bienvenida siguiente y el promt de mysql: Welcome to the MySQL monitor. Commands end with ; org.Your MySQL connection id is 3 to server version: 4.0.16-logType 'help;' or 'h' for help. Type 'c' to clear the buffer. mysql>

Conectarse y desconectarse al servidor MySQL


Para conectarse al servidor, usualmente necesitamos de un nombre de usuario (login) y de una contrasea (password), y si el servidor al que nos deseamos conectar est en una mquina diferente de la nuestra, tambin necesitamos indicar el nombre o la direccin IP de dicho servidor. Una vez que conocemos estos tres valores, podemos conectarnos de la siguiente manera en un terminal: shell> mysql -h NombreDelServidor -u NombreDeUsuario -p Cuando ejecutamos este comando, se nos pedir que proporcionemos tambin la contrasea para el nombre de usuario que estamos usando. Algunas instalaciones, como la comentada anteriormente, permiten que los usuarios se conecten de manera annima al servidor corriendo en la mquina local. Si es el caso de nuestra mquina, como ya hemos visto, debemos de ser capaces de conectarnos al servidor invocando a mysql sin ninguna opcin en un terminal: shell> mysql Este prompt nos indica que mysql est listo para recibir comandos. Para ver la lista de opciones proporcionadas por mysql , lo invocamos con la opcin 'h': mysql>h Despus de que nos hemos conectado de manera satisfactoria, podemos desconectarnos en cualquier momento al escribir "quit", "exit", o presionar

Plataforma de Teleformacin de IFES

Pgina 171 de 212

Introduccin a Linux

CONTROL+D. La mayora de los ejemplos siguientes asume que estamos conectados al servidor, lo cual se indica con el prompt de mysql.

Ejecutar algunas consultas


En este momento debimos de haber podido conectarnos ya al servidor MySQL, an cuando no hemos seleccionado alguna base de datos para trabajar. Lo que haremos a continuacin es escribir algunos comandos para irnos familiarizando con el funcionamiento de mysql mysql> SELECT VERSION(), CURRENT_DATE; +------------+--------------+ | VERSION() | CURRENT_DATE | +------------+--------------+ | 4.0.16-log | 2004-11-03 | +------------+--------------+ 1 row in set (0.16 sec) mysql> Este comando ilustra distintas cosas acerca de mysql: Un comando normalmente consiste de un sentencia SQL seguida por un punto y coma. Cuando emitimos un comando, mysql lo manda al servidor para que lo ejecute, nos muestra los resultados y regresa el prompt indicando que est listo para recibir ms consultas. mysql muestra los resultados de la consulta como una tabla (filas y columnas). La primera fila contiene etiquetas para las columnas. Las filas siguientes muestran los resultados de la consulta. Normalmente las etiquetas de las columnas son los nombres de los campos de las tablas que estamos usando en alguna consulta. Si lo que estamos recuperando es el valor de una expresin (como en el ejemplo anterior) las etiquetas en las columnas son la expresin en s. mysql muestra cuntas filas fueron regresadas y cuanto tiempo tard en ejecutarse la consulta, lo cual puede darnos una idea de la eficiencia del servidor, aunque estos valores pueden ser un tanto imprecisos ya que no se muestra la hora del CPU, y porque pueden verse afectados por otros factores, tales como la carga del servidor y la velocidad de comunicacin en una red. Las palabras clave pueden ser escritas usando maysculas y minsculas.

Pgina 172 de 212

Introduccin a Linux

Introduccin a Linux

Aqu est otra consulta que demuestra cmo se pueden escribir algunas expresiones matemticas y trigonomtricas: mysql> SELECT VERSION(), CURRENT_DATE; +------------+--------------+ | VERSION() | CURRENT_DATE | +------------+--------------+ | 4.0.16-log | 2004-11-03 | +------------+--------------+ 1 row in set (0.16 sec) mysql> Aunque hasta este momento se han escrito sentencias sencillas de una sola lnea, es posible escribir ms de una sentencia por lnea, siempre y cuando estn separadas por punto y coma: mysql> select now();select version(); +---------------------+ | now() | +---------------------+ | 2004-11-04 15:49:25 | +---------------------+ 1 row in set (0.00 sec) +------------+ | version() | +------------+ | 4.0.16-log | +------------+ 1 row in set (0.02 sec) Un comando no necesita ser escrito en una sola lnea, as que los comandos que requieran de varias lneas no son un problema. mysql determinar en dnde finaliza la sentencia cuando encuentre el punto y coma, no cuando encuentre el fin de lnea. Aqu est un ejemplo que muestra un consulta simple escrita en varias lneas: mysql> select -> user(), -> current_date; +-----------------+--------------+ | user() | current_date | +-----------------+--------------+ | chema@localhost | 2004-11-04 | +-----------------+--------------+

Plataforma de Teleformacin de IFES

Pgina 173 de 212

Introduccin a Linux

1 row in set (0.00 sec) En este ejemplo notamos como cambia el prompt (de mysql> a ->) cuando se escribe una consulta en varias lneas. Esta es la manera en cmo mysql indica que est esperando a que finalice la consulta. Sin embargo si deseamos no terminar de escribir la consulta, podemos hacerlo al escribir c como se muestra en el siguiente ejemplo: mysql> select -> user(), -> c mysql>

De nuevo, se nos regresa el comando el prompt mysql> que nos indica que mysql est listo para una nueva consulta. En la siguiente tabla se muestran cada uno de los prompts que podemos obtener y una breve descripcin de su significado para mysql: Prompt mysql> -> Significado Listo para una nueva consulta. Esperando la lnea siguiente de una consulta multi-lnea. Esperando la siguiente lnea para completar una cadena que comienza con una comilla sencilla ( ' ). Esperando la siguiente lnea para completar una cadena que comienza con una comilla doble ( " ).

'>

">

Tabla 20.1 Promts de mysql. Los comandos multi-lnea comnmente ocurren por accidente cuando tecleamos ENTER, pero olvidamos escribir el punto y coma. En este caso mysql se queda esperando para que finalicemos la consulta: mysql> SELECT USER() ->

Si esto llega a suceder, muy probablemente mysql estar esperando por un punto y coma, de manera que si escribimos el punto y coma podremos completar la consulta y

Pgina 174 de 212

Introduccin a Linux

Introduccin a Linux

mysql podr ejecutarla: mysql> SELECT USER() -> ; +-----------------+ | USER() | +-----------------+ |chema@localhost| +-----------------+ 1 row in set (0.00 sec) Los prompts '> y "> ocurren durante la escritura de cadenas. En mysql podemos escribir cadenas utilizando comillas sencillas o comillas dobles (por ejemplo, 'hola' y "hola"), y mysql nos permite escribir cadenas que ocupen mltiples lneas. De manera que cuando veamos el prompt '> o "> , mysql nos indica que hemos empezado a escribir una cadena, pero no la hemos finalizado con la comilla correspondiente. Aunque esto puede suceder si estamos escribiendo una cadena muy grande, es ms frecuente que obtengamos alguno de estos prompts si inadvertidamente escribimos alguna de estas comillas. Por ejemplo: mysql> SELECT * FROM mi_tabla WHERE nombre = "Lopez AND antiguedad < 10; "> Si escribimos esta consulta SELECT y entonces presionamos ENTER para ver el resultado, no suceder nada. En lugar de preocuparnos porque la consulta ha tomado mucho tiempo, debemos notar la pista que nos da mysql cambiando el prompt. Esto nos indica que mysql est esperando que finalicemos la cadena iniciada ("Lopez). En este caso, qu es lo que debemos hacer? . La cosa ms simple es cancelar la consulta. Sin embargo, no basta con escribir c, ya que mysql interpreta esto como parte de la cadena que estamos escribiendo. En lugar de esto, debemos escribir antes la comilla correspondiente y despus c : mysql> SELECT * FROM mi_tabla WHERE apellido = "Lopez AND antiguedad < 10; "> " c mysql> El prompt cambiar de nuevo al ya conocido mysql>, indicndonos que mysql est listo para una nueva consulta. Es sumamente importante conocer lo que significan los prompts '> y ">, ya que si en algn momento nos aparece alguno de ellos, todas la lneas que escribamos a continuacin sern consideradas como parte de la cadena, inclusive cuando escribimos QUIT. Esto puede ser confuso, especialmente si no sabemos que es necesario escribir

Plataforma de Teleformacin de IFES

Pgina 175 de 212

Introduccin a Linux

la comilla correspondiente para finalizar la cadena, para que podamos escribir despus algn otro comando, o terminar la consulta que deseamos ejecutar.

Crear y usar una base de datos


Ahora que conocemos como escribir y ejecutar sentencias, podemos ya acceder a una base de datos. Para ello, supongamos que tenemos mucha informacin musical en nuestra casa en forma de compactos, discos de vinilo y cintas de casete y deseamos tener registros de los datos acerca de ellas. Podemos hacer esto al crear tablas que guarden esta informacin, para que posteriormente la consulta de estos datos sea bastante fcil y de manera muy prctica. En esta seccin vamos a ver como crear una base de datos, crear una tabla, incorporar datos en una tabla, y recuperar datos de las tablas de diversas maneras. La base de datos "msica" ser deliberadamente muy sencilla, pero no es difcil pensar de situaciones del mundo real en la cual una base de datos similar puede ser usada. Primeramente usaremos la sentencia SHOW para ver cules son las bases de datos existentes en el servidor al que estamos conectados: mysql> SHOW DATABASES; +----------+ | Database | +----------+ | mysql | | test | +----------+ 2 rows in set (0.00 sec) Es probable que la lista de bases de datos que veamos sea diferente en nuestro caso, pero seguramente las bases de datos "mysql" y "test" estarn entre ellas (si hemos accedido como 'root'). En particular, la base de datos "mysql" es requerida, ya que sta tiene la informacin de los privilegios de los usuarios de MySQL. La base de datos "test" es creada durante la instalacin de MySQL con el propsito de servir como rea de trabajo para los usuarios que inician en el aprendizaje de MySQL. Tenemos que tener en cuenta tambin que es posible que no veamos todas las bases de datos si no tenemos el privilegio SHOW DATABASES. Si la base de datos "test" existe, se puede acceder a ella:

Pgina 176 de 212

Introduccin a Linux

Introduccin a Linux

mysql> USE test Database changed Observamos que USE , al igual que QUIT , no requieren el uso del punto y coma, aunque si se usa ste, no hay ningn problema. El comando USE es especial tambin de otra manera: ste debe ser usado en una sola lnea. Podramos usar la base de datos "test" (si tenemos acceso a ella) para los ejemplos que vienen a continuacin, pero cualquier cosa que hagamos puede ser eliminada por cualquier otro usuario que tenga acceso a esta base de datos. Por esta razn, es recomendable que preguntemos al administrador MySQL acerca de la base de datos que podemos usar. Supongamos que deseamos tener una base de datos llamada "musica" (ntese que no se est acentuando la palabra) a la cual slo nosotros tengamos acceso, para ello el administrador necesita ejecutar un comando como el siguiente: mysql> GRANT ALL on musica.* TO MiNombreUsuario@MiComputadora -> IDENTIFIED BY 'MiContrasea'; en donde MiNombreUsuario es el nombre de usuario asignado dentro del contexto de MySQL, MiComputadora es el nombre o la direccin IP de la computadora desde la que nos conectamos al servidor MySQL, y MiContrasea es la contrasea que se nos ha asignado, igualmente, dentro del ambiente de MySQL exclusivamente. Ambos, nombre de usuario y contrasea no tienen nada que ver con el nombre de usuario y contrasea manejados por el sistema operativo. Si el administrador cre la base de datos al momento de asignar los permisos, podemos hacer uso de ella. De otro modo, nosotros debemos crearla: mysql> USE musica ERROR 1049: Unknown database 'musica' El mensaje anterior indica que la base de datos no ha sido creada, por lo tanto necesitamos crearla. mysql> CREATE DATABASE musica; Query OK, 1 row affected (0.00 sec) mysql> USE musica; Database changed mysql> Bajo el sistema operativo Guadalinex, los nombres de las bases de datos son sensibles al uso de maysculas y minsculas (no como las palabras clave de SQL), por lo tanto debemos de tener cuidado de escribir correctamente el nombre de la base de datos. Esto es cierto tambin para los nombres de las tablas.

Plataforma de Teleformacin de IFES

Pgina 177 de 212

Introduccin a Linux

Al crear una base de datos no se selecciona sta de manera automtica; debemos hacerlo de manera explcita, por ello usamos el comando USE en el ejemplo anterior. La base de datos se crea slo una vez, pero nosotros debemos seleccionarla cada vez que iniciamos una sesin con mysql . Por ello es recomendable que se indique la base de datos sobre la que vamos a trabajar al momento de invocar al monitor de MySQL. Por ejemplo: shell>mysql -h localhost -u chema -p musica Enter password: ****** Welcome to the MySQL monitor. Commands end with ; or g. Your MySQL connection id is 9 to server version: 4.0.16-log Type 'help;' or 'h' for help. Type 'c' to clear the buffer Observamos que "musica" no es la contrasea que se est proporcionando desde la lnea de comandos, sino el nombre de la base de datos a la que deseamos acceder. Si deseamos proporcionar la contrasea en la lnea de comandos despus de la opcin "-p", debemos de hacerlo sin dejar espacios (por ejemplo, -pholamundo, no como -p holamundo). Sin embargo, escribir nuestra contrasea desde la lnea de comandos no es recomendado, ya que es bastante inseguro.

Crear una tabla


SHOW TABLES:Crear la base de datos es la parte ms fcil, pero en este momento la base de datos est vaca, como lo indica el comando SHOW TABLES mysql> SHOW TABLES; Empty set (0.00 sec) La parte un tanto complicada es decidir la estructura que debe tener nuestra base de datos: qu tablas se necesitan y qu columnas estarn en cada tabla. En principio, necesitamos una tabla que contenga un registro para cada una de nuestros ttulos de msica. sta puede ser una tabla llamada discos, y debe contener por lo menos el ttulo de cada uno de nuestros discos. Ya que el nombre en s no es muy interesante, la tabla debe contener alguna otra informacin. Por ejemplo, es probable que queramos guardar la informacin acerca de quien es el interprete de cada disco. As mismo, tambin sera interesante contar con alguna informacin ms descriptiva tal como el gnero musical de cada disco. Y que sucede con la antigedad del disco? Esto puede ser tambin de inters, pero no es una buena idea almacenar este dato en la base de datos. La antigedad cambia conforme pasa el tiempo, lo cual significa que debemos de actualizar los registros frecuentemente. En vez de esto, es una mejor idea guardar un valor fijo, tal como la fecha de adquisicin. Entonces, cuando necesitemos la antigedad, la podemos

Pgina 178 de 212

Introduccin a Linux

Introduccin a Linux

calcular como la diferencia entre la fecha actual y la fecha de adquisicin. MySQL proporciona funciones para hacer operaciones entre fechas, as que no hay ningn problema. Es probable que estemos pensando en otro tipo de informacin que sera igualmente til en la tabla 'discos', pero para nosotros ser suficiente por ahora contar con informacin de ttulo, autor, gnero y fecha de adquisicin. Usaremos la sentencia CREATE TABLE para indicar como estarn conformados los registros de nuestras discos. mysql> CREATE TABLE discos( -> titulo VARCHAR(40), autor VARCHAR(20), -> genero VARCHAR(20), adquisicion DATE); Query OK, 0 rows affected (0.03 sec) VARCHAR es una buena eleccin para los campos ttulo, autor, y gnero, ya que los valores que almacenarn son de longitud variable. Se puede especificar cualquier longitud entre 1 y 255, lo que se considere ms adecuado. Si resulta que la eleccin de la longitud de los campos que hemos hecho no result adecuada, MySQL proporciona una sentencia ALTER TABLE que nos puede ayudar a solventar este problema. El uso del tipo de dato DATE para el campo adquisicin debe de resultar obvio. Ahora que hemos creado la tabla, la sentencia SHOW TABLES debe producir algo como: mysql> SHOW TABLES; +------------------+ | Tables_in_musica | +------------------+ | discos | +------------------+ 1 row in set (0.00 sec) Para verificar que la tabla fue creada como nosotros esperbamos, usaremos la sentencia DESCRIBE : mysql> DESCRIBE discos; +-------------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------------+-------------+------+-----+---------+-------+ | titulo | varchar(40) | YES | | NULL | | | autor | varchar(20) | YES | | NULL | | | genero | varchar(20) | YES | | NULL | | | adquisicion | date | YES | | NULL | |

Plataforma de Teleformacin de IFES

Pgina 179 de 212

Introduccin a Linux

+-------------+-------------+------+-----+---------+-------+ 4 rows in set (0.00 sec) Podemos hacer uso de la sentencia DESCRIBE en cualquier momento, por ejemplo, si olvidamos los nombres el tipo de las columnas en la tabla.

Aadir datos en una tabla


Despus de haber creado la tabla, ahora podemos incorporar algunos datos en ella, para lo cual haremos uso de las sentencias INSERT y LOAD DATA . Supongamos que los registros de nuestros discos pueden ser descritos por los datos mostrados en la siguiente tabla.

Ttulo MADE IN JAPAN CLUES CABO DO MUNDO EN LA FUSA

Autor DEEP PURPLE ROBERT PALMER LUAR NA LUBRE VINICIUS DE MORAES RADIO TARIFA SANTANA HILARIO CAMACHO ARETHA FRANKLIN BOB DYLAN

Gnero POP-ROCK POP-ROCK FOLK BRASILEO

Adquisicin 1991-02-04 1998-03-17 1999-05-13 2000-08-27

RUMBA ARGELINA SUPERNATURAL A PESAR DE TODO LADY SOUL GRATEST HITS

ETNICO POP-ROCK FOLK SOUL FOLK

1998-08-31 2001-09-11 1991-02-09 1994-04-29 1997-01-22

Tabla 20.2 Datos de la tabla 'discos'

Pgina 180 de 212

Introduccin a Linux

Introduccin a Linux

Debemos observar que MySQL espera recibir fechas en el formato YYYY-MM-DD, que puede ser diferente a lo que nosotros estamos acostumbrados. Ya que estamos iniciando con una tabla vaca, la manera ms fcil de poblarla es crear un archivo de texto que contenga un registro por lnea para cada uno de nuestros discos para que posteriormente carguemos el contenido del archivo en la tabla nicamente con una sentencia. Por tanto, debemos de crear un archivo de texto "discos.txt" que contenga un registro por lnea con valores separados por tabuladores, teniendo en cuenta que el orden de las columnas sea el mismo que utilizamos en la sentencia CREATE TABLE. Para valores que no conozcamos podemos usar valores nulos (NULL). Para representar estos valores en nuestro archivo debemos usar N. Para cargar el contenido del archivo en la tabla mascotas, usaremos el siguiente comando: mysql> LOAD DATA LOCAL INFILE "discos.txt" INTO TABLE discos; La sentencia LOAD DATA nos permite especificar cul es el separador de columnas y el separador de registros. Por defecto, el tabulador es el separador de columnas (campos), y el salto de lnea es el separador de registros, que en este caso son suficientes para que la sentencia LOAD DATA lea correctamente el archivo "discos.txt". Si lo que deseamos es aadir un registro a la vez, entonces debemos hacer uso de la sentencia INSERT . En la manera ms simple, debemos proporcionar un valor para cada columna en el orden en el cual fueron listados en la sentencia CREATE TABLE . Podemos usar la sentencia INSERT para agregar un registro en nuestra base de datos. mysql> INSERT INTO discos -> VALUES('MOONDANCE','VAN MORRISON','POP-ROCK','2004-06-03'); Notar que los valores de cadenas y fechas deben estar encerrados entre comillas. Tambin, con la sentencia INSERT podemos insertar el valor NULL directamente para representar un valor nulo, un valor que no conocemos. En este caso no se usa N como en el caso de la sentencia LOAD DATA. De este ejemplo, debemos ser capaces de ver que es un poco ms la tarea que se tiene que realizar si inicialmente cargamos los registros con varias sentencias INSERT en lugar de una nica sentencia LOAD DATA.

Recuperar informacin de una tabla


Plataforma de Teleformacin de IFES Pgina 181 de 212

Introduccin a Linux

La sentencia SELECT es usada para obtener la informacin guardada en una tabla. La forma general de esta sentencia es: SELECT LaInformacinQueDeseamos FROM DeQueTabla WHERE CondicinASatisfacer Aqu, LaInformacinQueDeseamos es la informacin que queremos ver. Esta puede ser una lista de columnas, o un * para indicar "todas las columnas". DeQueTabla indica el nombre de la tabla de la cual vamos a obtener los datos. La clasula WHERE es opcional. Si est presente, la CondicinASatisfacer especifica las condiciones que los registros deben satisfacer para que puedan ser mostrados.

Seleccionar todos los datos


La forma ms simple de la sentencia SELECT es cuando se recuperan todos los datos de una tabla: mysql> SELECT * FROM discos; +-----------------+--------------------+-----------+-------------+ | titulo | autor | genero | adquisicion | +-----------------+--------------------+-----------+-------------+ | MADE IN JAPAN | DEEP PURPLE | POP-ROCK | 1991-02-04 | | CLUES | ROBERT PALMER | POP-ROCK | 1998-03-17 | | CABO DO MUNDO | LUAR NA LUBRE | FOLK | 1999-05-13 | | EN LA FUSA | VINICIUS DE MORAES | BRASILEO | 2000-08-27 | | RUMBA ARGELINA | RADIO TARIFA | ETNICO | 1998-08-31 | | SUPERNATURAL | SANTANA | POP-ROCK | 2001-09-11 | | A PESAR DE TODO | HILARIO CAMACHO | FOLK | 1991-02-09 | | LADY SOUL | ARETHA FRANKLIN | SOUL | 1994-04-29 | | GRATEST HITS | BOB DYLAN | FOLK | 1997-01-22 | | MOONDANCE | VAN MORRISON | POP-ROCK | 2004-06-03 | +-----------------+--------------------+-----------+-------------+ 10 rows in set (0.00 sec) Esta forma del SELECT es til si deseamos ver los datos completos de la tabla, por ejemplo, para asegurarnos de que estn todos los registros despus de la carga de un archivo. Por ejemplo, en este caso que estamos tratando, al consultar los registros de la tabla, nos damos cuenta de que hay un error en el archivo de datos (discos.txt). Al revisar el disco MADE IN JAPAN encontramos que la fecha correcta de adquisicin es el ao

Pgina 182 de 212

Introduccin a Linux

Introduccin a Linux

1999, no 1991. Podemos corregir el registro errneo con una sentencia UPDATE: mysql> UPDATE discos SET adquisicion="1999-02-04" WHERE titulo="MADE IN JAPAN";

Como se mostr anteriormente, es muy fcil recuperar los datos de una tabla completa. Pero tpicamente no deseamos hacer esto, particularmente cuando las tablas son demasiado grandes. En vez de ello, estaremos ms interesados en responder preguntas particulares, en cuyo caso debemos especificar algunas restricciones para la informacin que deseamos ver.

Seleccionar registros particulares


Podemos seleccionar slo registros particulares de una tabla. Por ejemplo, si deseamos verificar el cambio que hicimos a la fecha de adquisicin de MADE IN JAPAN , seleccionamos slo este registro de la siguiente manera: mysql> SELECT * FROM discos WHERE titulo="MADE IN JAPAN"; +---------------+-------------+----------+-------------+ | titulo | autor | genero | adquisicin | +---------------+-------------+----------+-------------+ | MADE IN JAPAN | DEEP PURPLE | POP-ROCK | 1999-02-04 | +---------------+-------------+----------+-------------+ 1 row in set (0.00 sec) La salida mostrada confirma que el ao ha sido corregido de 1991 a 1999. La comparacin de cadenas es normalmente no sensitiva, as que podemos especificar el nombre como "made in japan", "MADE IN JAPAN", etc. El resultado de la consulta ser el mismo. Podemos adems especificar condiciones sobre cualquier columna, no slo el "titulo". Por ejemplo, si deseamos conocer qu discos hemos adquirido despus del 2000, tendramos que usar la columna "adquisicion": mysql> SELECT * FROM discos WHERE adquisicion >= "2000-1-1"; +--------------+--------------------+-----------+-------------+

Plataforma de Teleformacin de IFES

Pgina 183 de 212

Introduccin a Linux

| titulo | autor | genero | adquisicion | +--------------+--------------------+-----------+-------------+ | EN LA FUSA | VINICIUS DE MORAES | BRASILEO | 2000-08-27 | | SUPERNATURAL | SANTANA | POP-ROCK | 2001-09-11 | | MOONDANCE | VAN MORRISON | POP-ROCK | 2004-06-03 | +--------------+--------------------+-----------+-------------+ 3 rows in set (0.00 sec) Podemos tambin combinar condiciones, por ejemplo, para localizar a los discos de pop-rock que hemos adquirido antes del 2000: SELECT * FROM discos WHERE adquisicion <= "2000-1-1"AND genero="POP-ROCK"; +---------------+---------------+----------+-------------+ | titulo | autor | genero | adquisicion | +---------------+---------------+----------+-------------+ | MADE IN JAPAN | DEEP PURPLE | POP-ROCK | 1999-02-04 | | CLUES | ROBERT PALMER | POP-ROCK | 1998-03-17 | +---------------+---------------+----------+-------------+ 2 rows in set (0.00 sec)

La consulta anterior usa el operador lgico AND . Hay tambin un operador lgico OR : mysql> SELECT * FROM discos WHERE genero="SOUL"OR genero="FOLK"; +-----------------+-----------------+--------+-------------+ | titulo | autor | genero | adquisicion | +-----------------+-----------------+--------+-------------+ | CABO DO MUNDO | LUAR NA LUBRE | FOLK | 1999-05-13 | | A PESAR DE TODO | HILARIO CAMACHO | FOLK | 1991-02-09 | | LADY SOUL | ARETHA FRANKLIN | SOUL | 1994-04-29 | | GRATEST HITS | BOB DYLAN | FOLK | 1997-01-22 | +-----------------+-----------------+--------+-------------+ 4 rows in set (0.00 sec) El operador AND y el operador OR pueden ser intercambiados. Si hacemos esto, es buena idea usar parntesis para indicar como deben ser agrupadas las condiciones: mysql>SELECT * FROM discos WHERE(adquisicion >= "2000-1-1"AND genero="POP-ROCK") -> OR genero="SOUL"; +--------------+-----------------+----------+-------------+ | titulo | autor | genero | adquisicion | +--------------+-----------------+----------+-------------+

Pgina 184 de 212

Introduccin a Linux

Introduccin a Linux

| SUPERNATURAL | SANTANA | POP-ROCK | 2001-09-11 | | LADY SOUL | ARETHA FRANKLIN | SOUL | 1994-04-29 | | MOONDANCE | VAN MORRISON | POP-ROCK | 2004-06-03 | +--------------+-----------------+----------+-------------+ 3 rows in set (0.00 sec) Si no deseamos ver los registros completos de una tabla, entonces tenemos que usar los nombres de las columnas en las que estamos interesados separndolas por coma. Por ejemplo, si deseamos conocer la fecha de adquisicin de nuestros discos, debemos seleccionar la columna "ttulo" y "adquisicion": mysql> SELECT titulo, adquisicion FROM discos; +-----------------+-------------+ | titulo | adquisicion | +-----------------+-------------+ | MADE IN JAPAN | 1999-02-04 | | CLUES | 1998-03-17 | | CABO DO MUNDO | 1999-05-13 | | EN LA FUSA | 2000-08-27 | | RUMBA ARGELINA | 1998-08-31 | | SUPERNATURAL | 2001-09-11 | | A PESAR DE TODO | 1991-02-09 | | LADY SOUL | 1994-04-29 | | GRATEST HITS | 1997-01-22 | | MOONDANCE | 2004-06-03 | +-----------------+-------------+ 10 rows in set (0.00 sec) Para conocer de que gneros musicales disponemos, usaremos la siguiente consulta: mysql> SELECT SELECT genero FROM discos; +-----------+ | genero | +-----------+ | POP-ROCK | | POP-ROCK | | FOLK | | BRASILEO | | ETNICO | | POP-ROCK | | FOLK | | SOUL | | FOLK | | POP-ROCK | +-----------+ 10 rows in set (0.00 sec)

Plataforma de Teleformacin de IFES

Pgina 185 de 212

Introduccin a Linux

Sin embargo, debemos notar que la consulta recupera el nombre del gnero de cada disco, y algunos de ellos aparecen ms de una vez. Para minimizar la salida, agregaremos la palabra clave DISTINCT: mysql> SELECT DISTINCT genero FROM discos; +-----------+ | genero | +-----------+ | POP-ROCK | | FOLK | | BRASILEO | | ETNICO | | SOUL | +-----------+ 5 rows in set (0.02 sec) Se puede usar tambin una clausula WHERE para combinar seleccin de filas con seleccin de columnas. Por ejemplo, para obtener el ttulo y interprete de los discos de folk y pop-rock, usaremos la siguiente consulta: mysql> SELECT titulo,autor FROM discos WHERE genero="FOLK" OR genero="POP-ROCK"; +-----------------+-----------------+ | titulo | autor | +-----------------+-----------------+ | MADE IN JAPAN | DEEP PURPLE | | CLUES | ROBERT PALMER | | CABO DO MUNDO | LUAR NA LUBRE | | SUPERNATURAL | SANTANA | | A PESAR DE TODO | HILARIO CAMACHO | | GRATEST HITS | BOB DYLAN | | MOONDANCE | VAN MORRISON | +-----------------+-----------------+ 7 rows in set (0.00 sec)

Ordenar registros
Tenemos que notar en los ejemplos anteriores que las filas regresadas son mostradas sin ningn orden en particular. Sin embargo, frecuentemente es ms fcil examinar la salida de una consulta cuando las filas son ordenadas en alguna forma til. Para ordenar los resultados, tenemos que usar una clausula ORDER BY.

Pgina 186 de 212

Introduccin a Linux

Introduccin a Linux

Aqu aparecen algunos datos ordenados por fecha de adquisicin: mysql> SELECT titulo,autor,adquisicion FROM discos WHERE genero="FOLK" -> ORDER BY adquisicion; +-----------------+-----------------+-------------+ | titulo | autor | adquisicion | +-----------------+-----------------+-------------+ | A PESAR DE TODO | HILARIO CAMACHO | 1991-02-09 | | GRATEST HITS | BOB DYLAN | 1997-01-22 | | CABO DO MUNDO | LUAR NA LUBRE | 1999-05-13 | +-----------------+-----------------+-------------+ 3 rows in set (0.04 sec En las columnas de tipo carcter, el ordenamiento es ejecutado normalmente de forma no sensitiva, es decir, no hay diferencia entre maysculas y minsculas. Sin embargo, se puede forzar un ordenamiento sensitivo al usar el operador BINARY. Para ordenar en orden inverso, debemos agregar la palabra clave DESC al nombre de la columna que estamos usando en el ordenamiento. mysql> SELECT titulo,autor,adquisicin FROM discos -> ORDER BY adquisicion DESC; +-----------------+--------------------+-------------+ | titulo | autor | adquisicion | +-----------------+--------------------+-------------+ | MOONDANCE | VAN MORRISON | 2004-06-03 | | SUPERNATURAL | SANTANA | 2001-09-11 | | EN LA FUSA | VINICIUS DE MORAES | 2000-08-27 | | CABO DO MUNDO | LUAR NA LUBRE | 1999-05-13 | | MADE IN JAPAN | DEEP PURPLE | 1999-02-04 | | RUMBA ARGELINA | RADIO TARIFA | 1998-08-31 | | CLUES | ROBERT PALMER | 1998-03-17 | | GRATEST HITS | BOB DYLAN | 1997-01-22 | | LADY SOUL | ARETHA FRANKLIN | 1994-04-29 | | A PESAR DE TODO | HILARIO CAMACHO | 1991-02-09 | +-----------------+--------------------+-------------+ 10 rows in set (0.00 sec) Podemos ordenar por mltiples columnas. Por ejemplo, para ordenar por gnero musical y fecha de adquisicin, usaremos la siguiente consulta: mysql> SELECT titulo,genero,adquisicin FROM discos -> ORDER BY genero,adquisicin DESC; +-----------------+-----------+-------------+ | titulo | genero | adquisicin |

Plataforma de Teleformacin de IFES

Pgina 187 de 212

Introduccin a Linux

+-----------------+-----------+-------------+ | EN LA FUSA | BRASILEO | 2000-08-27 | | RUMBA ARGELINA | ETNICO | 1998-08-31 | | CABO DO MUNDO | FOLK | 1999-05-13 | | GRATEST HITS | FOLK | 1997-01-22 | | A PESAR DE TODO | FOLK | 1991-02-09 | | MOONDANCE | POP-ROCK | 2004-06-03 | | SUPERNATURAL | POP-ROCK | 2001-09-11 | | MADE IN JAPAN | POP-ROCK | 1999-02-04 | | CLUES | POP-ROCK | 1998-03-17 | | LADY SOUL | SOUL | 1994-04-29 | +-----------------+-----------+-------------+ 10 rows in set (0.00 sec) En este caso se aprecia la palabra clave DESC se aplica slo a la columna nombrada que le predede.

Borrar registros
Si deseamos borrar algn registro de la tabla 'discos' por la razn que sea, podemos ejecutar el comando DELETE . Por ejemplo, si queremos borrar el disco 'RUMBA ARGELINA' de nuestra tabla: mysql> DELETE FROM discos WHERE titulo="RUMBA ARGELINA"; Query OK, 1 row affected (0.00 sec) A continuacin, comprobamos que ya no sta en la tabla 'discos': mysql> SELECT * FROM discos; +-----------------+--------------------+-----------+-------------+ | titulo | autor | genero | adquisicin | +-----------------+--------------------+-----------+-------------+ | MADE IN JAPAN | DEEP PURPLE | POP-ROCK | 1999-02-04 | | CLUES | ROBERT PALMER | POP-ROCK | 1998-03-17 | | CABO DO MUNDO | LUAR NA LUBRE | FOLK | 1999-05-13 | | EN LA FUSA | VINICIUS DE MORAES | BRASILEO | 2000-08-27 | | SUPERNATURAL | SANTANA | POP-ROCK | 2001-09-11 | | A PESAR DE TODO | HILARIO CAMACHO | FOLK | 1991-02-09 | | LADY SOUL | ARETHA FRANKLIN | SOUL | 1994-04-29 | | GRATEST HITS | BOB DYLAN | FOLK | 1997-01-22 | | MOONDANCE | VAN MORRISON | POP-ROCK | 2004-06-03 | +-----------------+--------------------+-----------+-------------+ 9 rows in set (0.00 sec)

Pgina 188 de 212

Introduccin a Linux

Introduccin a Linux

Clculos con fechas


MySQL proporciona diversas funciones que se pueden usar para efectuar clculos sobre fechas, por ejemplo, para calcular antigedades o extraer partes de una fecha (da, mes, ao, etc). Por ejemplo, para determinar la antigedad (en aos completos) de cada uno de nuestros discos, tenemos que calcular la diferencia de aos de la fecha actual y la fecha de adquisicin, y entonces retar uno si la fecha actual ocurre antes en el calendario que la fecha de adquisicin. Las siguientes consultas muestran la fecha actual, la fecha de adquisicin y la antigedad para cada disco. mysql> SELECT titulo, adquisicion, CURRENT_DATE, -> (YEAR(CURRENT_DATE) - YEAR(adquisicion)) ->-(RIGHT(CURRENT_DATE,5) < RIGHT(adquisicion,5)) AS antiguedad FROM discos; +-----------------+-------------+--------------+------------+ | titulo | adquisicion | CURRENT_DATE | antiguedad | +-----------------+-------------+--------------+------------+ | MADE IN JAPAN | 1999-02-04 | 2004-11-08 | 5 | | CLUES | 1998-03-17 | 2004-11-08 | 6 | | CABO DO MUNDO | 1999-05-13 | 2004-11-08 | 5 | | EN LA FUSA | 2000-08-27 | 2004-11-08 | 4 | | SUPERNATURAL | 2001-09-11 | 2004-11-08 | 3 | | A PESAR DE TODO | 1991-02-09 | 2004-11-08 | 13 | | LADY SOUL | 1994-04-29 | 2004-11-08 | 10 | | GRATEST HITS | 1997-01-22 | 2004-11-08 | 7 | | MOONDANCE | 2004-06-03 | 2004-11-08 | 0 | +-----------------+-------------+--------------+------------+ 9 rows in set (0.04 sec) Aqu, YEAR( ) obtiene nicamente el ao y RIGHT( ) obtiene los cinco caracteres ms a la derecha de cada una de las fechas, que representan el mes y el da (MM-DD). La parte de la expresin que compara los valores MM-DD se evala a 1 o 0, y permite ajustar el valor de la antigedad en el caso de que el valor MM-DD de la fecha actual ocurra antes del valor MM-DD de la fecha de adquisicin. Dado que la expresin en s es bastante fea, se ha usado un alias (antiguedad) que es el que aparece como etiqueta en la columna que muestra el resultado de la consulta. Esta consulta debe trabajar bien, pero el resultado puede ser de alguna manera ms til si las filas son presentadas en algn orden. Para ello haremos uso de la clusula

Plataforma de Teleformacin de IFES

Pgina 189 de 212

Introduccin a Linux

ORDER BY. Por ejemplo, para ordenar por ttulo, usaremos la siguiente consulta: mysql> SELECT titulo, adquisicin, CURRENT_DATE, -> (YEAR(CURRENT_DATE) - YEAR(adquisicin)) -> - (RIGHT(CURRENT_DATE,5) < RIGHT(adquisicin,5)) -> AS antiguedad FROM discos ORDER BY titulo; +-----------------+-------------+--------------+------------+ | titulo | adquisicin | CURRENT_DATE | antiguedad | +-----------------+-------------+--------------+------------+ | A PESAR DE TODO | 1991-02-09 | 2004-11-08 | 13 | | CABO DO MUNDO | 1999-05-13 | 2004-11-08 | 5 | | CLUES | 1998-03-17 | 2004-11-08 | 6 | | EN LA FUSA | 2000-08-27 | 2004-11-08 | 4 | | GRATEST HITS | 1997-01-22 | 2004-11-08 | 7 | | LADY SOUL | 1994-04-29 | 2004-11-08 | 10 | | MADE IN JAPAN | 1999-02-04 | 2004-11-08 | 5 | | MOONDANCE | 2004-06-03 | 2004-11-08 | 0 | | SUPERNATURAL | 2001-09-11 | 2004-11-08 | 3 | +-----------------+-------------+--------------+------------+ 9 rows in set (0.00 sec) Para ordenar por antigedad en lugar de por ttulo, n icamente tenemos que usar una clusula ORDER BY diferente: mysql> SELECT titulo, adquisicin, CURRENT_DATE, -> (YEAR(CURRENT_DATE) - YEAR(adquisicin)) -> - (RIGHT(CURRENT_DATE,5) < RIGHT(adquisicin,5)) -> AS antiguedad FROM discos ORDER BY antiguedad; +-----------------+-------------+--------------+------------+ | titulo | adquisicin | CURRENT_DATE | antiguedad | +-----------------+-------------+--------------+------------+ | MOONDANCE | 2004-06-03 | 2004-11-08 | 0 | | SUPERNATURAL | 2001-09-11 | 2004-11-08 | 3 | | EN LA FUSA | 2000-08-27 | 2004-11-08 | 4 | | MADE IN JAPAN | 1999-02-04 | 2004-11-08 | 5 | | CABO DO MUNDO | 1999-05-13 | 2004-11-08 | 5 | | CLUES | 1998-03-17 | 2004-11-08 | 6 | | GRATEST HITS | 1997-01-22 | 2004-11-08 | 7 | | LADY SOUL | 1994-04-29 | 2004-11-08 | 10 | | A PESAR DE TODO | 1991-02-09 | 2004-11-08 | 13 | +-----------------+-------------+--------------+------------+

Pgina 190 de 212

Introduccin a Linux

Introduccin a Linux

9 rows in set (0.00 sec) Qu sucede si deseamos conocer cules de nuestros discos hemos comprado en un mes concreto? Para este tipo de clculos, el ao y el da son irrelevantes; simplemente tenemos que extraer el valor del mes en la columna nacimiento. Como se mencion anteriormente, MySQL proporciona diversas funciones para trabajar y manipular fechas, en este caso haremos uso de la funcin MONTH( ). Para ver como trabaja, vamos a ejecutar una consulta muy simple que muestra tanto el valor de una fecha como el valor que regresa la funcin MONTH( ). mysql> SELECT titulo, adquisicin, MONTH(adquisicin) FROM discos; +-----------------+-------------+--------------------+ | titulo | adquisicin | MONTH(adquisicin) | +-----------------+-------------+--------------------+ | MADE IN JAPAN | 1999-02-04 | 2 | | CLUES | 1998-03-17 | 3 | | CABO DO MUNDO | 1999-05-13 | 5 | | EN LA FUSA | 2000-08-27 | 8 | | SUPERNATURAL | 2001-09-11 | 9 | | A PESAR DE TODO | 1991-02-09 | 2 | | LADY SOUL | 1994-04-29 | 4 | | GRATEST HITS | 1997-01-22 | 1 | | MOONDANCE | 2004-06-03 | 6 | +-----------------+-------------+--------------------+ 9 rows in set (0.00 sec) Encontrar ahora, por ejemplo, los discos que hemos comprado en el mes de febrero es muy sencillo. mysql> SELECT titulo, adquisicin, MONTH(adquisicin) FROM discos WHERE MONTH(adquisicin)=2; +-----------------+-------------+--------------------+ | titulo | adquisicin | MONTH(adquisicin) | +-----------------+-------------+--------------------+ | MADE IN JAPAN | 1999-02-04 | 2 | | A PESAR DE TODO | 1991-02-09 | 2 | +-----------------+-------------+--------------------+ 2 rows in set (0.00 sec)

Trabajar con valores nulos


El valor NULL puede sorprendernos mientras no hayamos trabajado con l. Conceptualmente, NULL significa un valor que hace falta, o un valor desconocido, y es

Plataforma de Teleformacin de IFES

Pgina 191 de 212

Introduccin a Linux

tratado de una manera diferente a otros valores. Para verificar si un valor es NULL no podemos usar los operadores de comparacin tales como =, > , o < . Para probar esto ejecutemos la siguiente consulta: mysql> SELECT 1 = NULL, 1 <> NULL, 1 < NULL, 1 > NULL; +----------+-----------+----------+----------+ | 1 = NULL | 1 <> NULL | 1 < NULL | 1 > NULL | +----------+-----------+----------+----------+ | NULL | NULL | NULL | NULL | +----------+-----------+----------+----------+ 1 row in set (0.00 sec) Claramente observamos que no obtenemos resultados con algn significado con estos operadores. Es por ello que tenemos que usar los operadores IS NULL e IS NOT NULL: mysql> SELECT 1 IS NULL, 1 IS NOT NULL; +-----------+---------------+ | 1 IS NULL | 1 IS NOT NULL | +-----------+---------------+ |0|1| +-----------+---------------+ 1 row in set (0.00 sec) En MySQL, 0 o NULL significan falso y cualquier otro valor significa verdadero. El valor que se considera verdadero por defecto es 1. Cuando se usa un ORDER BY , los valores NULL son siempre ordenados primero, an cuando se use la clusula DESC .

Coincidencia de patrones
MySQL proporciona mtodos de coincidencia de patrones basados en SQL estndar, as como tambin basados en expresiones regulares, de manera similar a las utilidades de Unix tales como vi, grep y sed. La coincidencia de patrones basada en SQL nos permite usar _ (guin bajo) para un solo carcter y % para un arbitrario nmero de caracteres. En MySQL, los patrones SQL no son sensibles al uso de maysculas y minsculas. Es importante notar que no se usan los operadores = o < > cuando se usan los patrones SQL; en su lugar se usan los operadores LIKE y NOT LIKE . A continuacin,

Pgina 192 de 212

Introduccin a Linux

Introduccin a Linux

presentamos algunos ejemplos. Para encontrar los ttulos de discos que comienzan con 'c' : mysql> SELECT * FROM discos WHERE titulo LIKE "c%"; +---------------+---------------+----------+-------------+ | titulo | autor | genero | adquisicion | +---------------+---------------+----------+-------------+ | CLUES | ROBERT PALMER | POP-ROCK | 1998-03-17 | | CABO DO MUNDO | LUAR NA LUBRE | FOLK | 1999-05-13 | +---------------+---------------+----------+-------------+ 2 rows in set (0.00 sec) Para encontrar los ttulos de discos que finalizan con 'do' : mysql> SELECT * FROM discos WHERE titulo LIKE "%do"; +-----------------+-----------------+--------+-------------+ | titulo | autor | genero | adquisicion | +-----------------+-----------------+--------+-------------+ | CABO DO MUNDO | LUAR NA LUBRE | FOLK | 1999-05-13 | | A PESAR DE TODO | HILARIO CAMACHO | FOLK | 1991-02-09 | +-----------------+-----------------+--------+-------------+ 2 rows in set (0.00 sec) Para encontrar los ttulos de discos que contienen una s : mysql> SELECT * FROM discos WHERE titulo LIKE "%s%"; +-----------------+--------------------+-----------+-------------+ | titulo | autor | genero | adquisicin | +-----------------+--------------------+-----------+-------------+ | CLUES | ROBERT PALMER | POP-ROCK | 1998-03-17 | | EN LA FUSA | VINICIUS DE MORAES | BRASILEO | 2000-08-27 | | SUPERNATURAL | SANTANA | POP-ROCK | 2001-09-11 | | A PESAR DE TODO | HILARIO CAMACHO | FOLK | 1991-02-09 | | LADY SOUL | ARETHA FRANKLIN | SOUL | 1994-04-29 | | GRATEST HITS | BOB DYLAN | FOLK | 1997-01-22 | +-----------------+--------------------+-----------+-------------+ 6 rows in set (0.00 sec) El otro tipo de coincidencia de patrones proporcionado por MySQL hace uso de expresiones regulares. Para hacer uso de estos tipos de patrones se tienen que usar los operadores REGEX P y NOT REGEXP ( o RLIKE y NOT RLIKE , los cules son sinnimos). Algunas caractersticas de las expresiones regulares son:
Plataforma de Teleformacin de IFES Pgina 193 de 212

Introduccin a Linux

El carcter punto ( . ) coincide con cualquier carcter. Una clase de caracteres [...] coincide con cualquier carcter dentro de los parntesis cuadrados. Por ejemplo, [abc] coincide con a, b o c. Para nombrar un rango de caracteres, se usa el guin. [a-z] coincide con cualquier letra minscula, mientras que [0-9] coincide con cualquier dgito. El carcter asterisco ( * ) coincide con cero o ms instancias de lo que le preceda. Por ejemplo, x* coincide con cualquier nmero de caracteres x, [0-9]* coincide con cualquier nmero de dgitos, y .* (punto asterisco) coincide con cualquier cosa. El patrn coincide si ste ocurre en cualquier parte del valor que est siendo evaluado. (Los patrones SQL coinciden nicamente en los valores completos.) Para indicar el inicio o el final de un valor que est siendo evaluado se usan los caracteres ^ y $ respectivamente.

Para demostrar como se usan las expresiones regulares, se van a mostrar los ejemplos presentados anteriormente con el operador LIKE , ahora con el operador REGEXP . Para encontrar los ttulos de discos que comienzan con 'c' : mysql> SELECT * FROM discos WHERE titulo REGEXP "^c"; +---------------+---------------+----------+-------------+ | titulo | autor | genero | adquisicin | +---------------+---------------+----------+-------------+ | CLUES | ROBERT PALMER | POP-ROCK | 1998-03-17 | | CABO DO MUNDO | LUAR NA LUBRE | FOLK | 1999-05-13 | +---------------+---------------+----------+-------------+ 2 rows in set (0.00 sec) Antes de la versin 3.23.4 de MySQL, el operador REGEXP era sensible al uso de maysculas y minsculas, as que dependiendo de la versin de MySQL con la que se est trabajando podemos ver que obtenemos o no algn resultado en la consulta anterior. Se puede usar tambin la siguiente consulta para buscar los ttulos de los discos que inician con la letra 'c', no importando si es mayscula o minscula. mysql> SELECT * FROM discos WHERE titulo REGEXP "^[cC]"; +---------------+---------------+----------+-------------+ | titulo | autor | genero | adquisicin | +---------------+---------------+----------+-------------+ | CLUES | ROBERT PALMER | POP-ROCK | 1998-03-17 | | CABO DO MUNDO | LUAR NA LUBRE | FOLK | 1999-05-13 | +---------------+---------------+----------+-------------+ 2 rows in set (0.00 sec) Desde la versin 3.23.4, para forzar que el operador REGEXP sea sensible al uso de

Pgina 194 de 212

Introduccin a Linux

Introduccin a Linux

maysculas y minsculas, se tiene que usar la palabra clave BINARY para hacer de una de las cadenas, una cadena binaria. Observamos los resultados de la siguientes consultas. mysql> SELECT * FROM discos WHERE titulo REGEXP BINARY "^c"; Empty set (0.00 sec) mysql> SELECT * FROM discos WHERE titulo REGEXP BINARY "^C"; +---------------+---------------+----------+-------------+ | titulo | autor | genero | adquisicin | +---------------+---------------+----------+-------------+ | CLUES | ROBERT PALMER | POP-ROCK | 1998-03-17 | | CABO DO MUNDO | LUAR NA LUBRE | FOLK | 1999-05-13 | +---------------+---------------+----------+-------------+ 2 rows in set (0.00 sec) Para encontrar los ttulos de los discos que finalizan con la palabra 'do' , haremos uso del carcter $. mysql> SELECT * FROM discos WHERE titulo REGEXP "do$"; +-----------------+-----------------+--------+-------------+ | titulo | autor | genero | adquisicin | +-----------------+-----------------+--------+-------------+ | CABO DO MUNDO | LUAR NA LUBRE | FOLK | 1999-05-13 | | A PESAR DE TODO | HILARIO CAMACHO | FOLK | 1991-02-09 | +-----------------+-----------------+--------+-------------+ 2 rows in set (0.00 sec) Para encontrar los ttulos de los discos que contienen una letra s, la consulta sera: mysql> SELECT * FROM discos WHERE titulo REGEXP "s"; +-----------------+--------------------+-----------+-------------+ | titulo | autor | genero | adquisicin | +-----------------+--------------------+-----------+-------------+ | CLUES | ROBERT PALMER | POP-ROCK | 1998-03-17 | | EN LA FUSA | VINICIUS DE MORAES | BRASILEO | 2000-08-27 | | SUPERNATURAL | SANTANA | POP-ROCK | 2001-09-11 | | A PESAR DE TODO | HILARIO CAMACHO | FOLK | 1991-02-09 | | LADY SOUL | ARETHA FRANKLIN | SOUL | 1994-04-29 | | GRATEST HITS | BOB DYLAN | FOLK | 1997-01-22 | +-----------------+--------------------+-----------+-------------+ 6 rows in set (0.00 sec)

Plataforma de Teleformacin de IFES

Pgina 195 de 212

Introduccin a Linux

Contar filas
Las bases de datos son usadas frecuentemente para responder una pregunta, "Con qu frecuencia ocurre un cierto tipo de dato en una tabla?". Por ejemplo, tal vez queremos conocer cuntos discos tenemos, o cuntos discos hay de cada gnero. La funcin COUNT( ) es la utilizamos en esta situacin. Si deseamos conocer cuntas discos hay por gnero musical, la consulta es la siguiente: mysql> SELECT COUNT(*) FROM discos; +----------+ | COUNT(*) | +----------+ |9| +----------+ 1 row in set (0.00 sec) Si deseamos conocer cuntas discos hay por gnero musical, la consulta es la siguiente: mysql> SELECT genero,COUNT(*) FROM discos GROUP BY GENERO; +-----------+----------+ | genero | COUNT(*) | +-----------+----------+ | BRASILEO | 1 | | FOLK | 3 | | POP-ROCK | 4 | | SOUL | 1 | +-----------+----------+ 4 rows in set (0.00 sec) Se debe notar que hemos usado una clusula GROUP BY para agrupar todos los registros de cada gnero musical. Si no hacemos esto, obtendremos un mensaje de error: mysql> SELECT genero,COUNT(*) FROM discos; ERROR 1140: Mixing of GROUP columns (MIN(),MAX(),COUNT()...) with no GROUP columns is illegal if there is no GROUP BY clauseclause El uso de la funcin COUNT( ) en conjunto con la clusula GROUP BY es muy til en diversas situaciones como, por ejemplo, si queremos saber el nmero de discos por gnero e intrprete:

Pgina 196 de 212

Introduccin a Linux

Introduccin a Linux

mysql> SELECT genero, autor, COUNT(*) FROM discos GROUP BY genero, autor; +-----------+--------------------+----------+ | genero | autor | COUNT(*) | +-----------+--------------------+----------+ | BRASILEO | VINICIUS DE MORAES | 1 | | FOLK | BOB DYLAN | 1 | | FOLK | HILARIO CAMACHO | 1 | | FOLK | LUAR NA LUBRE | 1 | | POP-ROCK | DEEP PURPLE | 1 | | POP-ROCK | ROBERT PALMER | 1 | | POP-ROCK | SANTANA | 1 | | POP-ROCK | VAN MORRISON | 1 | | SOUL | ARETHA FRANKLIN | 1 | +-----------+--------------------+----------+ 9 rows in set (0.01 sec) No es necesario que se obtengan todos los datos de una tabla cuando se usa la funcin COUNT( ). Por ejemplo, en la consulta anterior, para ver nicamente los datos de folk y soul, la consulta queda de la siguiente manera: mysql> SELECT genero, autor, COUNT(*) FROM discos -> WHERE genero="FOLK" OR genero="SOUL" -> GROUP BY genero,autor; +--------+-----------------+----------+ | genero | autor | COUNT(*) | +--------+-----------------+----------+ | FOLK | BOB DYLAN | 1 | | FOLK | HILARIO CAMACHO | 1 | | FOLK | LUAR NA LUBRE | 1 | | SOUL | ARETHA FRANKLIN | 1 | +--------+-----------------+----------+ 4 rows in set (0.00 sec)

Usar ms de una tabla


La tabla 'discos' nos ha servido hasta este momento para tener guardados los datos acerca de los discos que tenemos. Si deseamos guardar algn otro tipo de informacin acerca de ellos, tal como los eventos que se producen con los discos -prestamos a amigos o compaeros, perdidas o deterioro, etc.- necesitaremos de otra tabla. Para ello, necesitamos: El ttulo del disco para saber a cul de ellos se refiere el evento. Una fecha para saber cuando ocurri el evento.

Plataforma de Teleformacin de IFES

Pgina 197 de 212

Introduccin a Linux

Una descripcin del evento. Un campo que indique el tipo de evento, si deseamos clasificarlos.

Dadas estas condiciones, la sentencia para crear la tabla eventos queda de la siguiente manera: mysql> CREATE TABLE eventos(titulo varchar(40),fecha date, -> tipo varchar(15),descripcion varchar(255)); Query OK, 0 rows affected (0.00 sec) De manera similar a la tabla 'discos', es ms fcil cargar los datos de los registros iniciales al crear un archivo de texto delimitado por tabuladores 'eventos.txt' en el que se tenga la siguiente informacin: ttulo MADE IN JAPAN CLUES CABO DO MUNDO EN LA FUSA fecha 2003-02-15 2004-03-23 2004-11-19 2003-04-21 tipo deterioro perdida copia prestamo descripcin Rayada el tema dos. Falta portada trasera Dos copias realizadas Prestamo a Ana Lopez Devuelto por Jaime Meilan del prestamo Prestamo a Claudia Romero

A PESAR DE TODO

2004-04-27

devolucion

LADY SOUL

2003-10-03

prestamo

Cargamos los datos desde este archivo con la siguiente sentencia: mysql> LOAD DATA LOCAL INFILE "eventos.txt" INTO TABLE eventos; Query OK, 6 rows affected (0.00 sec) Records: 6 Deleted: 0 Skipped: 0 Warnings: 0 Tomando en cuenta lo que hemos aprendido en la ejecucin de consultas sobre la tabla 'discos', debemos de ser capaces de recuperar algunos datos de la tabla eventos; los principios son los mismos. Sin embargo puede suceder que la tabla eventos por s misma sea insuficiente para darnos las respuestas que necesitamos. Supongamos que deseamos conocer el interprete de cada disco que hemos prestado.

Pgina 198 de 212

Introduccin a Linux

Introduccin a Linux

La tabla 'eventos' indica cuando ocurri dicho evento, pero el dato interprete est almacenado en la tabla 'discos', por lo tanto, necesitamos ambas tablas para realizar esta consulta. mysql> SELECT discos.titulo, discos.autor, -> descripcion FROM discos, eventos -> WHERE discos.titulo=eventos.titulo -> AND tipo="prestamo"; +------------+--------------------+---------------------------+ | titulo | autor | descripcion | +------------+--------------------+---------------------------+ | EN LA FUSA | VINICIUS DE MORAES | Prestamo a Ana Lopez | | LADY SOUL | ARETHA FRANKLIN | Prestamo a Claudia Romero | +------------+--------------------+---------------------------+ 2 rows in set (0.00 sec) Hay diversas cosas que notar acerca de esta consulta: La clusula FROM lista dos tablas dado que la consulta necesita informacin que se encuentra en ambas tablas. Cuando se combina (junta) informacin de mltiples tablas, es necesario especificar los registros de una tabla que pueden coincidir con los registros en la otra tabla. En nuestro caso, ambas columnas tienen una columna "titulo". La consulta usa la clusula WHERE para obtener los registros cuyo valor en dicha columna es el mismo en ambas tablas. Dado que la columna "titulo" ocurre en ambas tablas, debemos de especificar a cul de las columnas nos referimos. Esto se hace al anteponer el nombre de la tabla al nombre de la columna.

Utilizar mysql en modo batch


En todos los ejemplos mostrados anteriormente, hemos usado mysq l de manera interactiva para ejecutar algunas consultas y ver los resultados. Sin embargo, es posible usar mysql en modo batch. Para hacer esto tenemos que poner los comandos que deseamos ejecutar dentro de un archivo, y entonces decirle a mysql que lea los comandos de dicho archivo: shell> mysql < archivo-batch Si se usa mysql de esta manera, se est creando un pequeo script, y posteriormente se est ejecutando dicho script. Al ejecutar las sentencias y comandos que se encuentran en el script, es posible que

Plataforma de Teleformacin de IFES

Pgina 199 de 212

Introduccin a Linux

suceda algn error. Si se desea que se continuen ejecutando las dems sentencias, a pesar de que haya ocurrido un error, se tiene que usar la opcin force shell> mysql --force < archivo-batch As mismo, es posible especificar los parmetros de conexin desde la lnea de comandos. Por ejemplo: s hell> mysql -h localhost -u chema -p < archivo-batch Algunas de las ventajas de usar un script son las siguientes: Si se ejecutan un cierto nmero de consultas de modo frecuente, al hacer un script nos evitamos tener que volver a teclear cada una de las consultas. Podemos generar nuevas consultas similares a las existentes copiando y editando estos scripts. Al escribir consultas de varias lneas, los scripts ayudan bastante para que no se tengan que escribir todas las lneas nuevamente si se comete algn error. Si ejecutamos consultas que producen una gran cantidad de datos, es posible usar un paginador para examinar los resultados de una mejor manera.

shell> mysql < archivo-batch | less Se puede guardar la salida en un archivo para revisarla posteriormente. shell> mysql < archivo-batch > salida-del-script.txt Hay que mencionar que el formato de la salida es ms simple cuando se ejecuta mysql en modo batch, que cuando se usa de manera interactiva, como se puede ver en el siguiente ejemplo: Queremos obtener un listado de los gneros musicales de la tabla 'discos'.Si se ejecuta en modo interactivo: mysql> SELECT DISTINCT genero FROM discos; +-----------+ | genero | +-----------+ | POP-ROCK | | FOLK | | BRASILEO | | SOUL |

Pgina 200 de 212

Introduccin a Linux

Introduccin a Linux

+-----------+ 4 rows in set (0.00 sec) Si se ejecuta en modo batch: shell> mysql -h localhost -u root < generos.sql genero POP-ROCK FOLK BRASILEO SOUL Si se desea obtener la salida que proporciona el modo interactivo, se tiene que usar la opcin -t . shell> mysql -t -h localhost -u root < generos.sql +-----------+ | genero | +-----------+ | POP-ROCK | | FOLK | | BRASILEO | | SOUL | +-----------+ Hemos utilizado el archivo generos.sql, un fichero de texto que contiene dos instrucciones mysql: USE musica; SELECT DISTINCT genero FROM discos;

Grabacin de cds

Grabar CD-ROM en consola


Existen multitud de programas grficos para la grabacin de CD?s, (k3b, nerolinux...) pero en este manual, comenzaremos por la base, aprenderemos hacerlo desde consola. Que necesitamos, y que podemos hacer para diferentes casos. Hay que instalar y recompilar el kernel para grabadoras IDE, En la seccin: ATA/IDE/MFM/RLL -> IDE, ATA, ATAPI Desactivar IDE/ATAPI CDROM Activar SCSI emulation support En la seccin: SCSI support

Plataforma de Teleformacin de IFES

Pgina 201 de 212

Introduccin a Linux

Activar SCSI disk support Activar SCSI CD-ROM support Activar SCSI generic support Instalamos los paquetes cdrecord, mkisofs y cdparanoia, desde una distribucin Debian, usaremos la siguiente lnea. apt-get install cdrecord mkisofs cdparanoia Para conseguir informacin sobre si la instalacin ha sido correcta y dnde se encuentran los dispositivos cdrecord -scanbus Para Copiar CD de DATOS Montamos CD mount -t iso9660 -ro unhide /dev/sr1 /cdrom /dev/sr1 es el dispositivo donde este nuestro cdrom -ro l o montamos en slo lectura unhide Para que lea tambin los ficheros ocultos Creamos la Imagen del CDROM mkisofs -R -J -T -o /tmp/imagen.iso /cdrom -R = Genera registros SUSP y RR usando Rock Ridge -T = Genera un archivo TRANS.TBL en cada directorio del CD-Rom, que puede ser usado en sistemas incapaces de usar Rock Ridge para ayudar a establecer los nombres de archivo correctos. Hay tambin informacin presente en el archivo que indica el mayor y menor nmero para unidades de bloque y carcter y cada symlink tiene el nombre del archivo enlace dado. -J = Genera nombres de directorio Joliet junto con los iso9660. sto es principalmente til cuando los discos van a ser usados en mquinas bajo WindowsNT y Windows95. -o = es el nombre del archivo el cual el sistema de archivo iso9660 deberia escribir. Esto puede ser un archivo de disco, una unidad de cinta, o puede corresponder directamente a la unidad de la grabadora. Si no se especifica se usa stdout. Perctese de que la salida puede ser una unidad de bloque especial para una unidad de disco normal, en cuyo caso la particion del disco puede ser montada y examinada para asegurar que la preparacin se efectua correctamente. Otras opciones: cat /dev/cdrom > imageCD.iso dd if=/dev/cdrom/ of=imageCD.iso G rabamos el cd cdrecord -v dev=0,0,0 fs=10M speed=4 /tmp/imagen.iso speed=X Donde "x" es la velocidad de grabacin. Ejemplo: una regrabadora 24x de lectura 2x de regrabacin y 4x de grabacin, speed=4 Luego si no queremos conservar la imagen porque no vamos hacer ms

Pgina 202 de 212

Introduccin a Linux

Introduccin a Linux

copias, haremos lo siguiente. rm /tmp/imagen.iso Un Script que hace todo completo #!/bin/bash /bin/mount -t iso9660 -ro unhide /dev/sr1 /cdrom /usr/bin/mkisofs -R -J -T -o /tmp/imagen.iso /cdrom /usr/bin/cdrecord -v dev=0,0,0 fs=10M speed=4 /tmp/imagen.iso /bin/rm /tmp/imagen.iso /bin/umount /cdrom Para Copiar Msica Mostrar las canciones que tiene el cd cdparanoia -Q -d /dev/sr1 Extraer el audio n: numero de canciones cdparanoia -W -Z -X -B -d /dev/sr1 -v 1-n -W desactivar correccin de rayado. Detecta y lleva a cabo la sincronizacin entre rayaduras, pero no intenta reparar los datos daados. Si algn archivo de informacin esta en uso (-i) guarda la posicin de las rayaduras. -Z desactivar paranoia. Desactiva la verificacin de datos y las caractersticas de correccin. Con esta opcin, cdparanoia lee los datos exactamente como cdda2wav. Esta opcin implica que -Y esta activado, pero no es equivalente a -Z -W -X -Y como el -W a travs de las opciones -Z especifica niveles estratificados de verificacin. La ltima opcin especificada sienta precedente. -X desactivar deteccin de rayado. Ni busca rayaduras ni hace una sincronizacin de tolerancia a rayaduras durante la verificacin. Con -X activado, un disco rayado provocar que cdparanoia cancele la lectura. -d forzar unidad de cdrom. Fuerza el interfaz a leer del dispositivo algo ms de lo que primeramente encontr legible en el CDROM. Puede ser usado para especificar unidades de cualquier tipo de interfaz vlido (ATAPI, SCSI o propietaria). -B - batch. Al estilo del procesamiento de salida etiquetado de cdda2wav, cdparanoia dividir la salida en multiples archivos, por pistas. Los nombres de los archivos resultantes estan nombrados como "track#.". Grabar cdrecord -v speed=4 -eject fs=20M dev=0,0 -audio -nopreemp track* -defpregap=[tiempo en segundos] Otro script para copiar un cd de msica #!/bin/bash /usr/bin/cdparanoia -Q -d /dev/sr1 cd /tmp/ echo Cuantas canciones hay? read CANCIONES /usr/bin/cdparanoia -W -Z -X -B -d /dev/sr1 -v 1-$CANCIONES /usr/bin/cdrecord -v speed=4 -eject fs=20M dev=0,0 -audio -nopreemp track* -defpregap=0

Plataforma de Teleformacin de IFES

Pgina 203 de 212

Introduccin a Linux

rm /tmp/track* Para Copiar CD de msica en directo (sin espacio y cortes entre canciones) Instalamos cdda2wav apt-get install cdda2wav Mostrar las canciones que tiene el cd cdparanoia -Q -d /dev/sr1 Extraer el audio en un slo fichero. n: numero de canciones cdda2wav -D /dev/sr1 -s -x -t 1+n Grabamos los ficheros *.wav a un cd cdrecord -v speed=X -eject fs=20M dev=0,0 -audio archivo.wav speed=X Donde "x" es la velocidad de grabacin. Ejemplo: una regrabadora 24x de lectura 2x de regrabacin y 4x de grabacin, speed=4 -audio parmetro que especifica el formato de salida del archivo, con lo cual para cada pista crea un archivo .wav diferente archivo.wav corresponde al archivo o seleccion de archivos que acaben en .wav, por lo general el cdda2wav los extrae como audio_NN.wav donde NN es el numero de pista.. Grabar / Clonar VCD Hacer una imagen VCD (Mi CDROM est en el 0,1,0) cdrdao read-cd -v 2 --device 0,1,0 --read-raw --driver generic-mmc --datafile imagen.bin imagen.toc Copiar la imagen en el CD cdrdao write -v 2 --device 0,1,0 --speed 16 --driver generic-mmc --buffers 64 imagen.toc Borrado del .toc cdrecord -v blank=fast cdrecord.conf

Pgina 204 de 212

Introduccin a Linux

Introduccin a Linux

#CDR_FIFOSIZE=16m # # The following definitions allow abstract device names. # They are used if the device name does not contain the # the characters ',', ':', '/' and '@' # # drive name device speed fifosize # #teac= 1,3,0 -1 -1 #panasonic= 1,4,0 -1 -1 #yamaha= 1,5,0 -1 -1 #cdrom= 0,6,0 2 1m hp8100= 0,0,0 2 16m

Programacin en Bash
Adaptado de: , un documento libre de Mike G (mikkey)

Scripts muy sencillos


Este COMO tratar de darle algunos consejos sobre la programacin de shell scripts, basndose profundamente en ejemplos. En esta seccin encontrar varios scripts pequeos que esperanzadamente le ayudarn a entender algunas tcnicas.

Tpico script hola mundo


#!/bin/bash echo Hola Mundo Este script tiene slo dos lneas. La primera le indica al sistema qu programa usar para ejecutar el fichero. La segunda lnea es la nica accin realizada por este script, que imprime 'Hola Mundo'en la terminal. Si le sale algo como ./hello.sh: Comando desconocido. , probablemente la primera lnea, '#!/bin/bash', est mal. Ejecute whereis bash, o vea 'encontrando el bash'para saber cmo debe escribir esta lnea.

Un script de copia de seguridad muy simple


#!/bin/bash tar -cZf /var/my-backup.tgz /home/yo/

Plataforma de Teleformacin de IFES

Pgina 205 de 212

Introduccin a Linux

En este script, en vez de imprimir un mensaje en la terminal, creamos un tar-ball del directorio home de un usuario. Esto NO pretende ser un script til; ms tarde se ofrece un script de copia de seguridad ms til.

Todo sobre redireccin


Teora y referencia rpida
Existen 3 descriptores de ficheros: stdin, stdout y stderr (std=estndar). Bsicamente, usted puede: 1. 2. 3. 4. 5. 6. 7. redirigir stdout a un fichero redirigir stderr a un fichero redirigir stdout a stderr redirigir stderr a stdout redirigir stderr y stdout a un fichero redirigir stderr y stdout a stdout redirigir stderr y stdout a stderr

El nmero 1 'representa'a stdout, y 2 a stderr. Una pequea nota para ver todo esto: con el comando less puede visualizar stdout (que permanecer en el bfer) y stderr, que se imprimir en la pantalla, pero ser borrado si intenta leer el bfer.

Ejemplo: stdout a un fichero


Esto har que la salida de un programa se escriba en un fichero. ls -l > ls-l.txt En este caso, se crear un fichero llamado 'ls-l.txt'que contendr lo que se vera en la pantalla si escribiese el comando 'ls -l'y lo ejecutase.

Pgina 206 de 212

Introduccin a Linux

Introduccin a Linux

Ejemplo: stderr a un fichero


Esto har que la salida stderr de un programa se escriba en un fichero. grep da * 2> errores-de-grep.txt En este caso, se crear un fichero llamado 'errores-de-grep.txt'que contendr la parte stderr de la salida que dara el comando 'grep da *'.

Ejemplo: stdout a stderr


Esto har que la salida stdout de un programa se escriba en el mismo descriptor de fichero que stderr. grep da * 1>&2 En este caso, la parte stdout del comando se enva a stderr ; puede observar eso de varias maneras.

Ejemplo: stderr a stdout


Esto har que la salida stderr de un programa se escriba en el mismo descriptor de fichero que stdout . grep * 2>&1 En este caso, la parte stderr del comando se enva a stdout . Si hace una tubera con less, ver que las lneas que normalmente 'desaparecen'(al ser escritas en stderr ), ahora permanecen (porque estn en el stdout ).

Ejemplo: stderr y stdout a un fichero


Esto colocar toda la salida de un programa en un fichero. A veces, esto es conveniente en las entradas del cron, si quiere que un comando se ejecute en absoluto silencio. rm -f $(find / -name core) &> /dev/null Esto (pensando en la entrada del cron) eliminar todo archivo llamado `core'en cualquier directorio. Tenga en cuenta que tiene que estar muy seguro de lo que hace

Plataforma de Teleformacin de IFES

Pgina 207 de 212

Introduccin a Linux

un comando si le va a eliminar la salida.

Tuberas
Esta seccin explica de una manera muy sencilla y prctica cmo utilizar tuberas, y por qu querra utilizarlas.

Qu son y por qu hay que utilizarlas


Las tuberas le permiten utilizar (muy sencillo, insisto) la salida de un programa como la entrada de otro.

Ejemplo: una tubera sencilla con sed


sta es una manera muy sencilla de utilizar tuberas. ls -l | sed -e " s/[aeio]/u/g" En este caso, ocurre lo siguiente: primero se ejecuta el comando 'ls -l', y luego su salida, en vez de imprimirse en la pantalla, se enva (entuba) al programa sed, que imprime su salida correspondiente.

Ejemplo: una alternativa a ls -l *.txt


Probablemente sta es una manera ms difcil de hacer un 'ls -l *.txt', pero se muestra para ilustrar el funcionamiento de las tuberas, no para resolver ese dilema. ls -l | grep ".txt$" En este caso, la salida del programa ls -l se enva al programa grep , que imprimir las lneas que concuerden con la regex".txt$" (expresin regular) .

Variables
Puede usar variables como en cualquier otro lenguaje de programacin. No existen tipos de datos. Una variable de bash puede contener un nmero, un caracter o una cadena de caracteres. No necesita declarar una variable. Se crear slo con asignarle un valor a su referencia.

Ejemplo: Hola Mundo! utilizando variables


#!/bin/bash CAD="Hola Mundo!" echo $CAD

Pgina 208 de 212

Introduccin a Linux

Introduccin a Linux

La segunda lnea crea una variable llamada STR y le asigna la cadena "Hola Mundo!". Luego se recupera el VALOR de esta variable ponindole un '$'al principio. Por favor, tenga en cuenta (intntelo!) que si no usa el signo '$', la salida del programa ser diferente, y probablemente no sea lo que usted quera.

Ejemplo: Un script de copia de seguridad muy simple (algo mejor)


#!/bin/bash OF=/var/mi-backup-$(date +%Y%m%d).tgz tar -cZf $OF /home/yo/ Este script introduce algo nuevo. Antes que nada, debera familiarizarse con la creacin y asignacin de variable de la lnea 2. Fjese en la expresin '$(date +%Y%m%d)'. Si ejecuta el script se dar cuenta de que ejecuta el comando que hay dentro de los parntesis, capturando su salida. Tenga en cuenta que en este script, el fichero de salida ser distinto cada da, debido al formato pasado al comando date (+%Y%m%d). Puede cambiar esto especificando un formato diferente. Algunos ejemplos ms: echo ls echo $(ls)

Variables locales
Las variables locales pueden crearse utilizando la palabra clave local . #!/bin/bash HOLA=Hola function hola { local HOLA=Mundo echo $HOLA } echo $HOLA hola echo $HOLA Este ejemplo debera bastar para mostrarle el uso de una variable local.

Estructuras Condicionales
Plataforma de Teleformacin de IFES Pgina 209 de 212

Introduccin a Linux

Las estructuras condicionales le permiten decidir si se realiza una accin o no; esta decisin se toma evaluando una expresin.

Pura teora
Los condicionales tienen muchas formas. La ms bsica es: if expresin then sentencia donde 'sentencia'slo se ejecuta si 'expresin'se evala como verdadera. '2<1'es una expresin que se evala falsa, mientras que '2>1'se evala verdadera. Los condicionales tienen otras formas, como: if expresin then sentencia1 else sentencia2 . Aqu 'sentencia1'se ejecuta si 'expresin'es verdadera. De otra manera se ejecuta 'sentencia2'. Otra forma ms de condicional es: if expresin1 then sentencia1 else if expresin2 then sentencia2 else sentencia3 . En esta forma slo se aade "ELSE IF 'expresin2'THEN 'sentencia2'", que hace que sentencia2 se ejecute si expresin2 se evala verdadera. El resto es como puede imaginarse (vanse las formas anteriores). Unas palabras sobre la sintaxis: La base de las construcciones 'if'es sta: if [expresin]; then # cdigo si 'expresin' es verdadera. fi Ejemplo: Ejemplo bsico de condicional if .. then

#!/bin/bash if [ "petete" = "petete" ]; then echo "expresin evaluada como verdadera" fi El cdigo que se ejecutar si la expresin entre corchetes es verdadera se encuentra entre la palabra 'then'y la palabra 'fi', que indica el final del cdigo ejecutado condicionalmente.

Ejemplo: Ejemplo bsico de condicional if .. then ... else


#!/bin/bash if [ "petete" = "petete" ]; then echo "expresin evaluada como verdadera" else

Pgina 210 de 212

Introduccin a Linux

Introduccin a Linux

echo "expresin evaluada como falsa" fi

Ejemplo: Condicionales con variables


#!/bin/bash T1="petete" T2="peteto" if [ "$T1" = "$T2" ]; then echo "expresin evaluada como verdadera" else echo "expresin evaluada como falsa" fi

Ejemplo: comprobando si existe un fichero


#!/bin/bash FILE=~/.basrc if [ -f $FILE ]; then echo "el fichero $FILE existe" else echo "fichero no encontrado" fi

Los bucles for, while y until


En esta seccin se encontrar con los bucles for, while y until. El bucle for es distinto a los de otros lenguajes de programacin. Bsicamente, le permite iterar sobre una serie de "palabras"contenidas dentro de una cadena. El bucle while ejecuta un trozo de cdigo si la expresin de control es verdadera, y slo se para cuando es falsa (o se encuentra una interrupcin explcita dentro del cdigo en ejecucin). El bucle until es casi idntico al bucle loop, excepto en que el cdigo se ejecuta mientras la expresin de control se evale como falsa. Si sospecha que while y until son demasiado parecidos, est en lo cierto.

Por ejemplo
#!/bin/bash for i in $( ls ); do echo "item: $i" done

Plataforma de Teleformacin de IFES

Pgina 211 de 212

Introduccin a Linux

En la segunda lnea declaramos i como la variable que recibir los diferentes valores contenidos en $( ls ). La tercera lnea podra ser ms larga o podra haber ms lneas antes del done . done indica que el cdigo que ha utilizado el valor de $i ha acabado e $i puede tomar el nuevo valor. Este script no tiene mucho sentido, pero una manera ms til de usar el bucle for sera hacer que concordasen slo ciertos ficheros en el ejemplo anterior.

for tipo-C
Fiesh sugiri aadir esta forma de bucle. Es un bucle for ms parecido al for de C/perl... #!/bin/bash for i in `seq 1 10`; do echo $i done

Ejemplo de while
#!/bin/bash CONTADOR=0 while [ $CONTADOR -lt 10 ]; do echo "El contador es $CONTADOR" CONTADOR=$(($CONTADOR+1)) done Este script 'emula'la conocida (C, Pascal, perl, etc) estructura `for'.

Ejemplo de until
#!/bin/bash CONTADOR=20 until [ $CONTADOR -lt 10 ]; do echo "El contador es $CONTADOR" CONTADOR=$(($CONTADOR-1)) done

Pgina 212 de 212

Introduccin a Linux

Вам также может понравиться