UC3M
Universidad Carlos III de Madrid. Dept. de Ingeniería Telemática
Dept. IT
Arquitectura de ordenadores 07/08
RSS Disponible RSS Feed

Práctica 1: El entorno de trabajo en el sistema operativo Linux



Enlace a la sala de chat del curso

1. El entorno de trabajo en el sistema operativo Linux

El sistema operativo Linux, al igual que otros sistemas, pone al alcance de los usuarios los programas y aplicaciones necesarias para utilizar un ordenador de forma eficiente. La primera pantalla que nos ofrece el sistema es la de entrada o login. Antes incluso de introducir nuestro nombre de usuario y palabra clave, el sistema operativo ya está gestionando todos los dispositivos del ordenador.

La razón por la que se debe introducir el usuario y la clave es porque en Linux se asume que dicho equipo va a ser compartido por una comunidad de usuarios distintos. Aunque todos ellos tienen ciertos datos y aplicaciones que comparten, otros ficheros y configuraciones son particulares de cada usuario. Una vez que se termina la sesión de trabajo, es muy importante que se notifique al sistema. A este proceso se le conoce comúnmente con el nombre de logout y hace que la máquina pase a estar disponible para que pueda trabajar otro usuario.

Por motivos de seguridad, es recomendable, cuando se termine una sesión, permanecer ante el ordenador hasta que se vea que ofrece de nuevo la pantalla de login. En este momento sí se puede estar seguro de que la sesión ha terminado normalmente y otro usuario no va a acceder a nuestros ficheros.

Los usuarios que no tienen instalado Linux en sus ordenadores personales pueden utilizar distribuciones Linux que arrancan directamente desde un CD o DVD. Este arranque (denominado “Live”) permite trabajar con Linux y sus aplicaciones sin necesidad de instalar nada en el disco duro del ordenador, aunque su funcionalidad estará también muy limitada.

Las distribuciones “Live” son muy aconsejables para personas que en su ordenador tienen otros sistemas operativos y no están seguros de saber cómo instalar Linux. No obstante, si se desea, siempre se puede realizar una instalación permanente en el ordenador. Esa instalación no es obligatoria, pero permitirá liberar de uso la unidad del CD/DVD y permitirá aprovechar mejor el hardware de la máquina. En el arranque “Live” los ficheros no se encuentran en el disco duro, sino en el CD/DVD (las aplicaciones) o en memoria principal (los ficheros de usuario).

Las distribuciones más recientes de Linux tienen un sistema de detección automática de hardware, lo que permite manejar fácilmente periféricos tales como memorias USB, cámaras digitales, reproductores MP3, webcams, impresoras, escáners, tarjetas WIFI, etc. Y también incorporan gran cantidad de software que permite manipular casi cualquier formato de fichero multimedia (ficheros de vídeo, de audio, de procesadores de texto, de hojas de cálculo, o presentaciones multimedia).

Existen varias distribuciones Linux “Live”. Una de ellas, denominada LUC3M (http://luc3m.uc3m.es) ha sido creada por el Servicio de Informática de la Universidad Carlos III de Madrid. Contiene la gran mayoría de aplicaciones de prácticas que se realizan en casi todas las titulaciones de la Universidad. LUC3M se distribuye libremente y en su Web se incluye documentación de ayuda asequible incluso para personas que parten de cero en conocimientos de Linux. También incluye foros donde se resuelven dudas.

El uso de distribuciones “Live” implica que los ficheros que sean valiosos al finalizar la sesión deben ser guardados adecuadamente (en memoria USB, transferidos a otro ordenador o a una partición formateada con permiso de escritura) con el fin de que no desaparezca nuestro trabajo. Ello es así porque nuestro directorio de trabajo en Linux “Live” está simulado sobre memoria principal (RAM), no sobre disco duro, razón por la cual un apagado de la máquina destruirá cualquier dato que no haya sido convenientemente salvado.

1.1. El escritorio

Tras introducir el código de usuario y la palabra clave se nos ofrece una pantalla en la que únicamente aparece un conjunto de iconos en uno o varios de sus bordes. A esta pantalla se le denomina “escritorio” porque se parece a una mesa de trabajo en la que nos acabamos de sentar. En esa mesa se encuentran los mecanismos para arrancar diferentes programas y se puede configurar de forma que aparezcan los iconos de ficheros y/o programas encima de ella.

Existen diversos escritorios en Linux. Puede considerarse que el escritorio es el interfaz gráfico que permite lanzar aplicaciones o interactuar con las ventanas ya lanzadas. Los escritorios más conocidos son “GNOME” y “KDE”, que a su vez son los más completos y que ofrecen una mayor funcionalidad. Existen otros escritorios más simples como Xfce, Icewm, fvwm que podemos usar si nuestro ordenador tiene limitaciones de memoria o procesador, por ejemplo. Lo habitual es que cada persona se acostumbre a manejar un escritorio según sus gustos personales.

La utilización del escritorio depende de cada usuario. Hay usuarios que prefieren tenerlo lleno de iconos para abrir documentos o recursos y otros que prefieren no tener ningún icono en el escritorio. La estructura del escritorio es algo que, por tanto, depende de cada usuario y que el sistema se encarga de guardar de una sesión de trabajo a la siguiente. La configuración de uno de ellos no suele compartirse con el resto. Existe una configuración independiente para cada escritorio y usuario. Se recomienda escoger un tipo de escritorio y mantenerlo durante todas las sesiones de trabajo. En la figura 1 se muestran varios ejemplos de escritorios.

Figura 1. Diferentes tipos de escritorios

Diferentes tipos de escritorios
Escritorio tipo Gnome
Diferentes tipos de escritorios
Escritorio tipo Xfce4

Aunque no es imprescindible, vamos a trabajar con el escritorio KDE, uno de los más populares de Linux, y que se encuentra disponible en las aulas. Existen otros muchos escritorios, pero, en general, comparten una gran parte de funcionalidad común. Por lo tanto, conociendo uno de ellos los demás son fáciles de manejar. La figura 2 muestra un escritorio típico de KDE.

Figura 2. Escritorio KDE

Escritorio KDE

Sobre el fondo del escritorio se van a situar cada una de las ventanas de las aplicaciones que vayamos lanzando a lo largo de nuestra sesión de trabajo. La gran mayoría de las ventanas tienen unos iconos en forma de cuadrado en su parte superior derecha, uno para ocultar la ventana, otro para maximizarla (que ocupe todo el escritorio) y otro (en forma de aspa) para cerrarla. Podemos lanzar tantas ventanas de aplicaciones como queramos, de forma que podemos tener varias de ellas abiertas a la vez en el mismo escritorio. Conviene, eso sí, evitar que las ventanas se superpongan entre sí para que no se tapen las unas a las otras y para que al trabajar con cada una de ellas, las demás ventanas no queden con partes ocultas. Si esto ocurre, nuestras sesiones de trabajo pueden ser muy ineficientes. Un ejemplo posible de escritorio con tres ventanas abiertas es el que aparece en la figura 3.

Figura 3. Escritorio KDE con tres aplicaciones abiertas

Escritorio KDE con tres aplicaciones abiertas

Es habitual que el texto de cada ventana se pueda seleccionar con el ratón o el teclado. Dado un texto seleccionado de una ventana, suele ser posible (dependiendo de la aplicación):

  • Borrarlo (tecla SUPR ó tecla DEL)

  • Copiarlo (CTRL-C)

  • Cortarlo (copiarlo + borrarlo) CTRL-X

  • Pegarlo (en la misma ventana o en otra) CTRL-V

Copiar y pegar es un ejercicio que hace que nuestras sesiones de trabajo sean mucho más eficientes, pues se ahorra tiempo y se evitan los errores típicos al teclear. Lo probaremos más adelante con el editor de texto. Además de poder realizarlo con las combinaciones de teclas mencionadas (comunes a la mayoría de las aplicaciones), cada aplicación suele tener sus propios botones y menús para realizar estas acciones.

1.1.1. Panel

El panel es una barra de herramientas como la que aparece en la figura 4. Contiene iconos para las aplicaciones más utilizadas, el reloj y los iconos de las ventanas o aplicaciones abiertas en nuestra sesión de trabajo. Por su importancia, vamos a fijarnos especialmente en la zona del panel que se usa para esquematizar los escritorios virtuales y también en el menú.

Con el fin de poder tener muchas ventanas abiertas sin que se superpongan y sin que tengan un tamaño inadecuado (si quisiéramos tenerlas varias sin iconizar y abiertas en el mismo escritorio no nos cabrían), podemos tener varios escritorios virtuales, cada uno de los cuales almacena sus propias ventanas. Por ejemplo, es muy útil tener al menos un escritorio virtual dedicado exclusivamente a un navegador a pantalla completa. En general, conviene poner cada aplicación que necesita pantalla completa en un escritorio virtual distinto, evitando así que se superpongan. Para saltar de un escritorio virtual a otro, además de usar el ratón directamente sobre el panel, podemos usar las teclas CTRL-TAB. De todos los escritorios virtuales que tengamos, sólo uno estará activo en cada momento (en el panel se verá reflejado cuál). Para saltar entre las ventanas que están dentro del escritorio virtual activo, podemos usar ALT-TAB.

Figura 4. Panel KDE con 4 escritorios virtuales, siendo el número 2 el que está activo

Panel KDE con 4 escritorios virtuales, siendo el número 2 el que está activo

1.1.2. Menú

En la parte izquierda del panel suele aparecer el icono del menú. En KDE suele tener el aspecto de una K dentro de un engranaje . Otros escritorios usan otros símbolos (un pingüino, una huella de pie, unas banderitas tipo Windows, un sol, etc). Pulsando en ellos aparece un menú desplegable como el de la figura 5. Con el menú podemos acceder a la mayoría de las aplicaciones instaladas en el sistema, agrupadas por categorías. Es posible que la ubicación concreta de las distintas aplicaciones dentro del menú pueda variar de unos escritorios a otros, pero suele ser fácil encontrarlas pese a que estén en un sitio distinto al indicado en la figura 5.

Figura 5. Menú desplegable de KDE

Menú desplegable de KDE

1.1.3. Ejercicio

Dedicar 10 minutos a recorrer el menú intentando reconocer qué aplicaciones hay y para qué puede servir cada una, sin entrar en demasiados detalles sobre cada una (habrá muchas que nos sean desconocidas). Elaborar un listado con aquellas cuya función sea conocida (quizá porque existe un equivalente en Windows, en cuyo caso, especificarlo) y poner ese listado en común en la pizarra con la colaboración del profesor de prácticas. Probarlas un poco (abrirlas, cerrarlas, repartirlas entre los distintos escritorios virtuales, ver más o menos qué hacen). Probar a saltar entre escritorios virtuales y a saltar entre ventanas dentro del mismo escritorio. La idea es reconocer qué aplicaciones están instaladas en el sistema. Ojo, no abrir demasiadas a la vez si no se quiere sobrecargar la máquina. En general, conviene cerrar toda aplicación que no esté siendo utilizada.

1.2. Aplicaciones básicas

1.2.1. Navegadores

Existen varios navegadores Web utilizables desde Linux. Los más conocidos son Mozilla, Firefox, Netscape, Opera y Konqueror y suelen poder arrancarse con iconos como los que aparecen en la figura 6. La mayoría de ellos también se pueden lanzar desde el menú. Conviene saber ajustar el tamaño de fuente para no forzar la vista con una letra demasiado pequeña (verlo en las preferencias del navegador). Otra posibilidad consiste en usar los comandos propios de cada aplicación que permiten agrandar (o empequeñecer) el tamaño de la letra. También es muy útil usar las pestañas de navegación, para que al navegar no se nos abran demasiadas ventanas que se superpongan entre sí. Los navegadores mencionados en este párrafo permiten el uso de este tipo de pestañas (al pinchar en un enlace con el botón de la derecha del ratón, indicar que se quiere abrir el enlace en una nueva pestaña de la misma ventana, en lugar de en una ventana nueva).

Figura 6. Iconos para arrancar el navegador

Iconos para arrancar el navegador

1.2.2. Editores de texto

Existen muchos editores de texto en Linux. Uno de los más sencillos es kwrite (ver figura 7), muy parecido al block de notas de Windows, esto es, sencillo de manejar, pero con una funcionalidad bastante limitada. Un buen editor de textos debe permitir, además de crear, abrir y guardar un fichero otras acciones básicas de edición, como al menos, localizar fácilmente una línea por su número de línea (si se nos dice que tenemos un error en la línea 999 debemos poder llegar allí con presteza) y debe tener comandos de búsqueda de textos, sustitución de textos y permitir deshacer cambios. No es necesario conocer todos los editores, pero sí conviene conocer alguno en profundidad para poder usarlo siempre que necesitemos editar algún texto. Editores potentes son emacs y vim, por ejemplo. kwrite es menos potente, pero más sencillo de manejar. Existen muchos otros.

Figura 7. Editor de textos kwrite

Editor de textos kwrite

El editor emacs es un editor de texto muy completo. Permite facilitar mucho el trabajo del programador. Para editar un fichero simplemente se necesita abrir su contenido. Si el fichero no existe, el editor lo creará. Si ya existe, el editor lo abre y muestra su contenido. Emacs es un editor que, aparte de permitir comandos bastante complejos y potentes (el uso de expresiones regulares puede ser muy útil en determinados ficheros) permite cambiar un número enorme de sus características al gusto del usuario. En el menú Options, en el apartado Customize Emacs se encuentra la aplicación para navegar entre todas las opciones posibles y poder cambiar sus valores. De entre ellas cabe destacar Syntax Highlighting y Paren Match Highlighting. La primera, cuando se activa, hace que editor muestre las distintas zonas del programas con colores. Mediante la combinación de color y negrita, el código es mucho más fácil de leer e identificar sus diferentes partes (comentarios, palabras clave, constantes, variables, etc.) La segunda opción, Paren Match Highlighting hace que cada vez que se cierre un paréntesis o una llave, el editor resalta en un color diferente su correspondiente apertura y permite detectar fácilmente si se cierran adecuadamente todos los paréntesis y llaves, evitando así errores sintácticos en nuestros programas.

Otra de las características que distingue a Emacs de otros editores es que la mayoría de sus comandos tiene su correspondiente “atajos de teclado” para su ejecución. Conviene, conforme se utiliza este editor, intentar usar estas combinaciones de teclas, pues tienen un efecto enorme en la velocidad de trabajo ya que el uso del teclado es mucho más rápido que el del ratón.

1.2.2.1. Ejercicio

Usar el editor de texto para crear un fichero llamado texto.txt dentro del directorio raíz de la cuenta personal. Deberá copiarse el siguiente texto (directamente desde el navegador), pegarlo dentro del editor, corregir las faltas de ortografía y guardar el fichero con el nombre indicado en el directorio indicado.

          Esto es un teksto que tengo que copiar y pegar en mi editor. No bale
          si lo tekleo desde zero. La línea 4 tiene un azento en la i.
        

1.2.3. Administradores de archivos

En Unix (Linux es un sistema Unix), las carpetas o directorios se separan entre sí; con el carácter “/” (barra hacia adelante). En Windows la barra que separa los directorios es hacia atrás, es decir “\” (barra inversa). Para poder navegar por los distintos directorios, inspeccionar ficheros, renombrarlos, copiarlos, borrarlos o cambiarlos de sitio, podemos usar un administrador de archivos como el que aparece en la figura 8. La aplicación konqueror, además de ser un navegador Web, es también un administrador de archivos. Podemos invocarlo pulsando en el icono que tiene el símbolo de casa dentro del panel. Con ello se abrirá partiendo de nuestro directorio principal de usuario.

Figura 8. Administrador de archivos konqueror

Administrador de archivos konqueror

1.2.3.1. Ejercicio

Usar el administrador de archivos para hacer una copia de texto.txt de forma que se llame texto2.txt. Borrar el fichero texto.txt. Se trata de hacer una copia y borrar el antiguo, no de directamente renombrarlo (algo que también se puede hacer, pero que no es lo que se pide).

Aproveche la ocasión para reorganizar su cuenta. No es conveniente tener todos los ficheros en un mismo directorio. Al contrario, crearemos un directorio para cada asignatura y moveremos nuestros ficheros a la carpeta adecuada. Conviene borrar todos los ficheros que no nos sirvan, para hacer espacio y agilizar las búsquedas en nuestras carpetas. Cree una carpeta llamada ttao para la asignatura de Arquitectura de Ordenadores. Dentro de esa carpeta deberá ir creando un directorio distinto en cada una de las siguientes prácticas de la asignatura. Por ejemplo, puede llamarlas prac1, prac2, y así; sucesivamente.

1.2.4. Localizadores de archivos

Cuando se desea localizar algún archivo de entre muchos otros basándose en criterios como nombre, tamaño, fechas de actualización, o incluso por contenido, un localizador de archivos como kfind, que aparece en la figura 9, puede ser útil. Kfind recibe su nombre porque es una aplicación gráfica basada en un comando muy potente y versátil de Unix: el comando find.

Figura 9. Localizador de archivos kfind

Localizador de archivos kfind

1.2.4.1. Ejercicio

Utilizar la aplicación kfind para buscar uno de los ficheros que han sido creados en esta sesión.

1.2.5. Consola de texto

La consola de texto es el terminal en el que podemos introducir comandos de línea para que sean ejecutados uno a uno. Usaremos el terminal de texto para muchas tareas, como compilar, lanzar programas, conectarnos a otras máquinas o lanzar comandos avanzados en general que, normalmente debido al hecho de que necesitan ciertos parámetros, no siempre pueden lanzarse desde el menú (más orientado para las invocaciones simples y frecuentes). En general, prácticamente cualquier aplicación del menú puede lanzarse desde la consola de texto, pero al revés no siempre es posible. El menú sólo asocia los comandos más habituales al interfaz gráfico desplegable, mientras que con la consola de texto tenemos mucha más capacidad de especificar opciones, a costa, eso sí, de usar un interfaz en modo texto. La figura 10 muestra varios iconos usualmente encontrables para lanzar la consola de texto desde el menú.

Figura 10. Iconos para arrancar la consola de texto

Iconos para arrancar la consola de texto

Al igual que muchos navegadores Web, la consola de texto konsole puede presentar pestañas de forma que en una misma ventana podemos tener distintas sesiones. Ello es útil si no se quiere tener demasiadas ventanas de consola de texto de tamaño pequeño o repartidas por los distintos escritorios virtuales. Si se desea tener más de una consola de texto en un mismo escritorio virtual, puede ser conveniente tener una única ventana con dos pestañas o bien dos ventanas cada una de ellas con una única pestaña pero que no se superpongan (para ver ambas ventanas a la vez). La idea es que el tamaño de cada ventana y el tamaño de fuente o de letra del texto de cada ventana sean adecuados siempre para nuestra vista. La figura 11 muestra una ventana de consola de texto que tiene tres pestañas utilizables, siendo la tercera de ellas la que está activa. El color del texto y del fondo, así como los tamaños de fuente, suelen ser personalizables.

Figura 11. Consola de texto con tres pestañas utilizables

Consola de texto con tres pestañas utilizables

La consola de texto es sin duda, un elemento básico para nuestras prácticas y merece una atención especial. Dentro de cada pestaña ejecuta un programa llamado intérprete de comandos. El intérprete de comandos (también llamado “shell”) simplemente lee línea a línea los comandos que le mandemos ejecutar, y los va ejecutando según los va leyendo. Con él, y con comandos como los que aparecen en la Tabla 5, podemos ordenar copiar ficheros, borrarlos, renombrarlos o lanzar cualquier programa en general (la Tabla 5 sólo contiene unos pocos comandos muy básicos). Hay gran variedad de estos intérpretes de comandos, siendo bash y tcsh los más conocidos. Nosotros trabajaremos con bash. Normalmente, un intérprete de comandos no procesará un comando hasta no haber terminado de ejecutar el comando anterior.

En todo momento el intérprete de comandos trabaja sobre una carpeta concreta del sistema de ficheros que se denominará el directorio actual. Cada intérprete de comandos en ejecución, o mejor dicho, cada proceso en ejecución, tiene su propio directorio actual, esto es, su propio directorio de trabajo concreto del sistema. Por mucho que cambiemos de directorio de trabajo en uno de ellos, los demás no se verán afectados en absoluto. No hay problema en que varios programas se sitúen en un mismo directorio de trabajo. Cuando se necesita acceder a un fichero y sólo se proporciona el nombre (como en los siguientes ejemplos), se asume que los ficheros mencionados están en ese directorio actual. El comando para saber cuál es el directorio actual es pwd.

Por lo tanto, el siguiente texto contiene las líneas que suponen una solución (basada sólo en comandos, sin usar konqueror) al ejercicio de la sección 1.2.3.1.

cp texto.txt texto2.txt
rm texto.txt

Para cambiar el directorio actual en el que se encuentra el intérprete se utiliza el comando cd seguido del nombre de la nueva carpeta que queremos que sea el nuevo directorio actual. Toda carpeta tiene a su vez dos subcarpetas con nombres “.” y “..”. La primera de ellas no es más que una referencia a sí misma. Por tanto el comando cd . hace que el intérprete cambie su directorio actual al que ya tiene (no cambia). La segunda carpeta con nombre “..” se refiere a la carpeta de nivel superior, y por tanto se puede utilizar para subir al nivel superior (directorio padre). Como consecuencia, el comando cd .. cambia al directorio padre.

A continuación se muestra el resultado de utilizar unos comandos en una sesión con el intérprete. Nótese que el comando ls no muestra nada por pantalla cuando el directorio está vacío. Igualmente, nótese que el último comando exit termina la sesión con el intérprete. Este comando, además, cierra la ventana (o pestaña) que contiene al intérprete.

shell$ pwd
/home/10001234
shell$ ls
shell$ mkdir nombre
shell$ ls
nombre
shell$ cd nombre
shell$ pwd
/home/10001234/nombre
shell$ ls
shell$ cd ..
shell$ ls
nombre
shell$ rmdir nombre
shell$ ls
shell$ pwd
/home/10001234
shell$ exit
      

En la secuencia anterior se puede comprobar como el intérprete tiene por directorio actual al arrancar la carpeta /home/10001234. A continuación se crea una subcarpeta nombre, se cambia el directorio actual a ella, se muestra su contenido con el comando ls (obviamente está vacía pues se acaba de crear), se vuelve a la carpeta inicial con el comando cd .., se utiliza el comando rmdir para borrar la carpeta (para borrar una carpeta ésta debe estar vacía) y finalmente muestra de nuevo el directorio actual que no ha cambiado.

Podemos usar los cursores verticales del teclado (arriba y abajo) para inspeccionar el histórico de comandos ya escritos en la sesión. Esto es muy útil si se tiene que ejecutar otra vez un comando ya escrito previamente, de forma que no hace falta reescribirlo, sino localizarlo en el histórico.

Con los cursores horizontales (izquierda y derecha) podemos recorrer los caracteres de un comando para modificarlo cómodamente, por si requiere alguna modificación o variación, sin necesidad de borrar según se retrocede (como si estuviéramos en un editor). Los cursores proporcionan una manera muy cómoda de evitar reescribir una y otra vez los mismos comandos dentro de una misma sesión. También podemos usar atajos de teclado. Con CTRL-A posicionaremos el cursor al principio de la línea (sin borrar nada). Con CTRL-E lo posicionaremos al final.

Un posible escritorio virtual de trabajo, para el desarrollo de programas puede ser el siguiente: una ventana con un editor de texto en el que editamos nuestra práctica y otra ventana ejecutando un intérprete de comandos, dedicado a compilar/ejecutar el programa que tenemos editándose en la ventana del editor. De esta forma podemos corregir nuestro programa desde el editor con la información visible en la ventana de compilación/ejecución, y a su vez, podemos analizar los resultados de ejecución o los errores de compilación conforme al programa que estamos editando en el editor, todo ello en un mismo escritorio virtual de trabajo. Podemos dedicar cada escritorio virtual a tareas distintas evitando así que unas tareas nos distraigan de las otras (navegador Web, correo electrónico, redacción de documentos, etc.)

1.2.5.1. Ejercicio

Partiendo de la situación dejada tras la ejecución del ejercicio de la sección 1.2.3.1, ejecutar en una consola de texto los siguientes comandos. Analizar el resultado tras la ejecución de cada comando. ¿Aparece algún mensaje de error? ¿Por qué? ¿Se aprecia para qué sirve el comando cat? ¿Y para qué puede servir la opción -f en el comando rm? Usar el comando man para consultar el manual.

cp texto2.txt texto.txt
cat texto.txt
cat texto2.txt
rm -f texto2.txt
cat texto.txt
cat texto2.txt
        
1.2.5.2. Ejercicio

Partiendo de la situación dejada tras la ejecución del ejercicio de la sección 1.2.5.1, crear, con comandos en la consola de texto (sin usar el administrador de archivos) y tecleando lo mínimo posible, copias de texto.txt que se llamen texto2.txt, texto3.txt y texto4.txt. Usar los cursores para recorrer y modificar los históricos de los comandos introducidos en el ejercicio de la sección 1.2.5.1.

1.2.5.3. Ejercicio

Lanzar konqueror, pero no desde el panel, sino desde la consola con el siguiente comando:

konqueror

Aprecie como konqueror muestra ahora las copias creadas por el ejercicio de la sección 1.2.5.2. ¿Cómo queda el intérprete de comandos de la pestaña desde la que se lanza konqueror mientras el konqueror lanzado sigue abierto? Aprecie cómo se recupera la usabilidad de ese intérprete de comandos cuando se cierra ese konqueror. Para evitar que un intérprete de comandos quede así de bloqueado e inservible a la espera que la aplicación lanzada termine o muera, podemos lanzar las aplicaciones en segundo plano, de forma que el intérprete de comandos siga leyendo y ejecutando comandos sin esperar que terminen los comandos lanzados en segundo plano. Para lanzar una aplicación en segundo plano, basta con añadirle un símbolo & al final del comando. Comprobarlo.

konqueror &

1.2.6. Otros programas

Existen muchos otros programas disponibles en Linux. El administrador puede instalarlos o desinstalarlos fácilmente, teniendo en cuenta que la capacidad del disco duro es limitada. Existe un listado de aplicaciones Linux por categorías contrastadas con sus equivalentes Windows. En general, puede apreciarse que en Linux la variedad es mucho mayor.

  • ksnaphot: capturador de pantallas (con él se han capturado las imágenes que aparecen en esta documentación)

  • korganizer: agenda personal (muy útil para planificarse el tiempo)

  • kcalc: calculadora científica

  • kalarm: alertas

  • kppp: conexión a Internet por módem

  • xine: reproductor multimedia de vídeos y ficheros de sonido

  • gimp: editor de gráficos

  • OpenOffice: aplicaciones de oficina: procesador de texto, hoja de cálculo, presentaciones, etc.

  • Y muchas otras aplicaciones: (ver manual de cada una de ellas)

    • Que usan un interfaz gráfico: amsn, gaim, kfloppy, kuickshow, etc.

    • Que no necesariamente usan el interfaz gráfico: latex, ispell, gcc, javac, etc.

En general, existe en Internet mucho software disponible. Mucho más del que puede caber en un DVD o en un ordenador personal. Las distribuciones Linux traen muchos software básico, pero es posible que en algún momento deseemos usar una aplicación y nos demos cuenta de que no está instalada en nuestra máquina.

Una de las grandes ventajas de Linux como sistema operativo es la facilidad para instalar nuevo software de forma segura en el ordenador, evitando peligros como virus, troyanos o software malicioso en general. Un ordenador Linux conectado a Internet puede ser fácilmente actualizado con nuevo software de una forma segura, pues existen mecanismos que aseguran que un software instalado no ha sido manipulado indebidamente por personas con fines indeseables y garantiza que se instalará todo lo necesario para el correcto funcionamiento de lo que se va a instalar, así como que ninguna aplicación previa dejará de funcionar por incompatibilidad con un nuevo software. La mantenibilidad de una máquina Linux es mucho más sencilla y eficaz que la de una máquina que use sistema operativo Windows.

1.2.7. Ejercicio (sólo si eres administrador de la máquina)

Vamos a instalar una aplicación que no viene en el CD/DVD. Para ello hace falta ser administrador y que nuestra versión de LUC3M sea igual o posterior a la 3.0 (las anteriores versiones no permiten la instalación en modo “Live”). Los pasos a seguir son:

  1. Abrir un terminal como administrador

  2. Añadir (si no la tiene ya) la siguiente línea al fichero de texto /etc/apt/sources.list (con ello le diremos al instalador una nueva fuente de la que traerse paquetes software para ser instalados):

    deb http://deb.opera.com/opera/ stable non-free deb
    http://deb.opera.com/opera/ testing non-free deb
    http://deb.opera.com/opera/ unstable non-free
              
  3. Ejecutar el comando: apt-get install opera. Linux buscará entre todas sus fuentes de dónde conseguir tal paquete, averiguará todo lo necesario que debe instalar, actualizar, desinstalar o cambiar para instalar este programa, revisará las posibles inconsistencias entre esas versiones de software y en general tomará todas sus decisiones y no preguntará al usuario salvo en el caso de cuestiones en las que haya decisiones importantes que tomar.

  4. Opcionalmente se puede añadir un icono de acceso directo desde el escritorio a la nueva aplicación instalada.

1.3. Permisos

El administrador de archivos konqueror tiene en su parte superior derecha una opción de visualización en forma de árbol desplegable en lugar de la visualización por iconos por defecto. La figura 12 muestra ese resultado. De esta forma, quedan a la vista numerosas propiedades de cada fichero o directorio. Por ejemplo, además del nombre, ahora se puede ver el tamaño, la fecha de última modificación, el propietario del fichero y los permisos. Los permisos son un mecanismo de seguridad que cada fichero o directorio tiene asociado para indicar si las posibles acciones que pueden intentar los distintos usuarios (crear, abrir, leer, escribir, listar, renombrar, borrar ...) pueden llevarse a cabo o no según los perfiles de usuarios.

Figura 12. Konqueror mostrando su salida en forma detallada

Konqueror mostrando su salida en forma detallada

Todo fichero o directorio tiene tres tripletas de permisos rwx. El comando ls, con la opción adecuada para mostrar el detalle (la opción es -l), muestra a su salida un formato similar al de la figura 13.

Figura 13. Salida detallada del comando ls

Salida detallada del comando ls

La Tabla 1 y la Tabla 2 muestran el significado de los permisos rwx.

Tabla 1. Permisos rwx y su significado para ficheros o directorios

Permiso Significado para fichero Significado para directorio
r Permiso de lectura Permiso de listado
w Permiso de escritura Permiso de creación, borrado y renombrado
x Permiso de ejecución Permiso de cambio de directorio actual

Tabla 2. Ejemplos de combinaciones de permisos y su significado para fichero

Permiso Valor numérico (en octal) Significado para ficheros
--- 0 Ningún permiso
r-- 4 Permiso de sólo lectura
r-x 5 Permisos de lectura y ejecución
rw- 6 Permisos de lectura y escritura
rwx 7 Todos los permisos

Cada fichero o directorio define tres tripletas rwx: Una para el usuario propietario el fichero (user), otra para los usuarios de su mismo grupo (group) y otra para el resto de los usuarios (other) (por ese orden). En la Tabla 3 se muestran algunos ejemplos de permisos habituales:

Tabla 3. Ejemplos de combinaciones de tripletas y su significado para ficheros

Permiso Valor numérico (en octal) Significado para el propietario
rw------- 600

Permisos de lectura y escritura para mí, ningún permiso para los demás

rw-r----- 640

Permisos de lectura y escritura para mí, permiso de lectura para los de mi grupo

rw-rw---- 660

Permisos de lectura y escritura para mí y los de mi grupo (peligroso)

rwxr-x--- 750

Todos los permisos para mí y los de mi grupo (salvo escritura)

rwxr-xr-x 755

Todos los permisos para todo el mundo, salvo los de escritura para los demás


1.3.1. Ejercicio

Ejecutar los siguientes comandos y comparar sus salidas. Analizar los permisos que tienen los ficheros creados en los ejercicios anteriores y también el que tiene el directorio actual (el directorio “.”).

ls -l
ls -la
ls -l texto*.txt
      

1.4. Compactadores y compresores

Los ficheros zip, tgz, tar.gz, tar.bz2 ó rar que pueden llegar a nuestra cuenta son ficheros de los que a su vez podemos extraer otros ficheros y directorios situándolos en el lugar que deseemos. Estos formatos son útiles porque ocupan menos espacio que los ficheros originales y porque van comprimidos y aglutinados los unos con los otros dentro del mismo archivo. La aplicación ark (similar al Winzip de Windows) que aparece en la figura 14 nos puede servir para examinar su contenido y extraerlo al directorio que le indiquemos, o también para generar nuestros propios archivos comprimidos.

Figura 14. Aplicación ark (archivador)

Aplicación ark (archivador)

La Tabla 4 muestra una serie de comandos que realizan tareas equivalentes a las que podemos manejar con ark. En este caso, el comando depende del formato que estemos usando. Los comandos se encuentran detallados en el manual.

Tabla 4. Comandos Unix para manipular archivos

Comando Formato zip Formato tgz

Ver el contenido

unzip -l fichero.zip tar ztvf fichero.tgz

Extraer el contenido en .

unzip fichero.zip tar zxvf fichero.tgz

Generar un archivo

echo ficheros directorios | zip -r -@ tar zxvf fichero.tgz ficheros diretorios

1.5. Cuota de disco

Es habitual que los administradores de máquinas en las que el número de usuarios es elevado decida poner un límite superior al tamaño de la informaciónq que cada usuario almacena en su cuenta (para evitar que se llene el disco). Debemos evitar superar ese límite personal borrando aquellos ficheros que no nos sean necesarios. El comando quota nos indicará cuál es ese límite y cómo de cerca estamos para alcanzarlo. El comando du -sk .??* * | sort -n nos presenta los directorios y ficheros del directorio actual ordenados de menor a mayor tamaño, incluyendo el tamaño (en KBytes) de todo lo que cuelgue de los subdirectorios. Esto puede ser una pista de mucha ayuda para determinar cuáles son los directorios que más están ocupando en una cuenta y poder borrarlos primero.

1.5.1. Ejercicio

Comprobar el estado actual de la cuota y, si es necesario, hacer sitio en la cuenta borrando lo que sobre o salvando la información a otros repositorios (cuentas de correo, otras cuentas Unix, memorias USB, etc.) o comprimiendo los ficheros más grandes que no sean usados con frecuencia.

1.6. Comandos básicos

Los comandos Unix que se muestran en la Tabla 5 permiten el manejo de ficheros, directorios y permisos. Para más información detallada sobre cada uno de ellos, puede usarse el comando de ayuda man.

Tabla 5. Comandos Unix que manipulan el sistema de ficheros

Comando Equivalente en MS/DOS Función Ejemplo Descripción
ls dir listado del contenido de directorios ls -l $HOME

Lista el directorio $HOME en formato largo

cp copy

copia de ficheros

cp forigen fdestino

cp ficheros directorio

Crea en fdestino una copia de forigen.

El destino puede ser un directorio

rm del

borrado de ficheros y directorios

rm ficheros

Borra los ficheros que recibe como argumento

mv

rename

move

renombrado de ficheros y cambio de ubicación de ficheros a otros directorios

mv antiguo nuevo

mv ficheros directorio

Renombra o cambia enlaces de directorio

diff  

comprobación de diferencias entre dos ficheros o directorios

diff fichero1 fichero2

Lista las diferencias entre los dos ficheros especificados. También permite trabajar con directorios

cat type

volcar el contenido de los ficheros

cat ficheros

Muestra el contenido de los ficheros por la pantalla (si la salida estándar no está redireccionada a un pipe, fichero o socket)

mkdir md

creación de directorios

mkdir nuevodir

Crea nuevos directorios

rmdir rd

borrado de directorios

rmdir directorio

Borra directorios. Deben estar vacíos

cd cd

cambio de directorio actual

cd ..

Cambia de directorio actual de trabajo (uno por proceso, es un comando interno no delegable a ningún ejecutable externo)

pwd prompt $P$G Muestra el directorio de trabajo pwd

Muestra el directorio actual (comando interno)

chmod attrib

asigna/deniega permisos

chmod 700 $HOME

Este ejemplo protege nuestro directorio $HOME ante cualquier otro usuario


1.6.1. Ejercicio

Ejecutar el comando chmod para que en un directorio, y en todos los ficheros de su interior, sólo pueda acceder a su conteniodo el propietario de la cuenta.

1.7. Transferencia de ficheros entre ordenadores

A menudo (especialmente si tenemos un Linux arrancado en “Live”) es preciso llevarse los ficheros en los que se está trabajando del ordenador en el que están almacenados a otro ordenador. Hay múltiples formas de realizar esta transferencia, y todas ellas tienen sus ventajas e inconvenientes. A continuación se enumeran las más comunes.

  • Memorias USB: Estos dispositivos se conectan al puerto USB del ordenador y son capaces de almacenar ficheros en su memoria interna. No necesitan ser formateados y tanto Linux como Windows pueden leer y escribir en ellos sin problemas. Dependiendo del escritorio en el que estemos, su utilización en Linux puede ser muy simple o requerir comandos especiales lanzados como administrador, pues antes de ser utilizados necesitan ser montados (incorporados) en el sistema de ficheros. Los sistemas Linux más modernos son capaces de automontar estos dispositivos nada más son insertados en el puerto USB. En cualquier caso, una vez transferidos los ficheros, deben ser correctamente desmontados para que sus datos no queden corruptos al ser extraídos. Consultar con los administradores de sistemas la posibilidad de utilizar estos dispositivos.

  • Correo electrónico: El correo permite el intercambio de ficheros entre dos ordenadores mediante su inclusión como adjuntos en un mensaje. Este sistema tiene el inconveniente de que los ficheros de gran tamaño suelen dar problemas al estar limitada la cantidad de información que se almacena en una cuenta de correo. Para el intercambio de ficheros de texto pequeños es un sistema válido.

  • Programas de transferencias de ficheros: Existen programas específicamente diseñados para depositar ficheros en máquinas remotas (también para descargarlos de ellas). ésta es una de las formas más efectivas de transferir datos entre dos equipos, pero a su vez es la que más requisitos tiene. Los programas requieren que el ordenador remoto esté encendido en el momento de la transmisión y que tenga funcionando un prigrama servidor al que nos podamos conectar para realizar las transferencias, de forma similar a una sesión de trabajo remota. Esto implica que se debe poder acceder a un ordenador desde el exterior con un código de usuario y clave. Debemos tener cuidado de que esa clave no vaya desencriptada por la red para evitar que otros usuarios se conecten en nuestro lugar.

En todos los casos, salvo quizá en el último, conviene compactar y comprimir los ficheros a transferir en un fichero zip o tgz, transferir ese único fichero, y descomprimirlo en la máquina destino. Las máquinas origen y destino pueden funcionar con Windows o Linux indistintamente.

1.7.1. Ejercicio

Crear un fichero zip llamado ttao_prac1.zip que contenga los ficheros del directorio $HOME/ttao/prac1. Copiarlo a memoria USB (o enviarlo adjunto por correo electrónico), dejar vacío el directorio $HOME/ttao/prac1 y volver a descomprimir ttao_prac1.zip comprobando que todo vuelve a quedar como al inicio de este ejercicio.

2. El gestor de versiones Subversion

Subversion es una herramienta que se utiliza para guardar copias de un conjunto de directorios y ficheros en un depósito remoto. Este depósito se utiliza principalmente para dos cosas: compartir estos ficheros con otros usuarios, y guardar las diferentes versiones de estos ficheros a lo largo del tiempo. Este tipo de herramientas se conocen genéricamente como “controladores de versiones” y se utilizan con mucha frecuencia en entornos de trabajo industriales, puesto que se necesita tanto compartir ficheros entre los miembros de un equipo, como llevar un control sobre todos los cambios que se hacen en ellos. Para poder utilizar esta aplicación se necesitan dos programas, pero como usuario normal, sólo tienes que tener instalado uno de ellos.

El primer programa se encarga de gestionar el depósito remoto y se ejecuta en un ordenador con el que hay que conectarse a través de la red. Tú no necesitas instalar ese programa, sino aquella entidad que facilite el depósito remoto o servidor. El segundo programa se conoce normalmente como el cliente y se ejecuta en tu ordenador personal. Su cometido es conectar con el depósito remoto e intercambiar los ficheros necesarios en ambos sentidos, tanto del depósito a tu carpeta local, como al revés, enviar de tu carpeta local los ficheros al depósito.

En el caso de Linux, el nombre del programa cliente es simplemente svn (es parte del paquete subversion) y es preciso tenerlo instalado en tu distribución. Para saber si lo tienes instalado abre una ventana con un intérprete de comandos o terminal y teclea el comando svn help. Si se muestra un mensaje de ayuda en el que se enumeran unos cuantos subcomandos tal y como se muestra en la siguiente figura, el programa está disponible.

En caso de no estar instalado, el sistema mostrará el mensaje de que svn no se ha encontrado y debes, por tanto instalarlo antes de seguir con esta guía. El programa cliente se invoca diciéndole la acción o comando que queremos ejecutar, y el lugar del depósito común sobre el que queremos hacer esa operación.

El lugar en el que está el depósito remoto se especifica a través de una URL similar a la de una página web. En el caso de esta asignatura, el depósito común de ficheros con tu copia personal de trabajo está en:

https://flautin.it.uc3m.es/svn/ttao/Group_??

donde el sufijo Group_?? lo debes reemplazar con el nombre de tu grupo de prácticas una vez que lo hayas inscrito. El depósito tiene un sistema de permisos por el cual los ficheros en ese lugar son sólo accesibles únicamente por los miembros del grupo de prácticas y por los profesores de la asignatura.

2.1. Operaciones más comunes con Subversion

Las operaciones más comunes que vas a realizar son dos: obtener ficheros nuevos del depósito común, y mandar los cambios que has hecho en tus ficheros para que queden almacenados en el depósito común. Pero antes de obtener ficheros del depósito, podemos ver el contenido de este utilizando el programa cliente con la orden list de la siguiente forma:

svn --username 1000?????? list https://flautin.it.uc3m.es/svn/ttao/Group_??

donde, de nuevo, debes reemplazar Group_?? por el nombre de tu grupo de prácticas, y como usuario has de introducir tu NIA de 9 dígitos (no incluyas el sufijo @alumnos.uc3m.es). Si la conexión se realiza con éxito, verás que te pide un código de usuario y clave. Debes utilizar los mismos datos que al entrar en CampusGlobal. Si la autenticación se realiza con éxito, por pantalla aparece el contenido del directorio especificado en el depósito común de ficheros tal y como se muestra en la siguiente pantalla.

En caso de que este comando no se ejecute correctamente, debes revisar tu conectividad de red, tu nombre de usuario/clave (de CampusGlobal) y verificar que son correctas. Este primer comando ha sido para listar el contenido del depósito remoto. Las operaciones para intercambiar ficheros con este depósito remoto se describen a continuación.

  1. Obtener ficheros por primera vez del depósito remoto. Esta suele ser la primera operación que realizas con el programa cliente. Alguien ha creado en este depósito una primera versión de los ficheros con los que debes trabajar y están agrupados en un directorio. La primera operación es obtener una primera copia de estos datos. El comando a escribir tas el nombre svn es nombre checkout y el comando al completo es: svn --username 1000????? checkout https://flautin.it.uc3m.es/svn/ttao/Group_??. Tras ejecutar este comando, debes ver por pantalla como aparecen unas líneas en las que se notifica que se están copiando desde el depósito remoto los ficheros de tu zona de trabajo y al terminar, se ha creado un directorio con nombre Group_??. La siguiente figura muestra este proceso:

    Otra forma de ver este comando es que desde un estado inicial en el que en el depósito hay unos ficheros almacenados y en tu equipo personal no hay nada, pasas a un estado en el que ambos lugares tienen exactamente la misma información. Cuando esto sucede decimos que los contenidos están sincronizados. La siguiente figura ilustra esta transición.

    Este comando se suele ejecutar una sola vez, cuando se quieren obtener una copia inicial de todos los ficheros en el depósito común. Una vez que se tiene esta copia, las siguientes operaciones, en lugar de volver a traerse todo, solo traen los cambios, tal y como se describe a continuación.

  2. Tras descargar la primera versión de los ficheros con el comando checkout, ahora existen dos copias de los mismos ficheros, la que está en el depósito común y la que tienes en tu propio directorio. A partir de ahora estas dos copias pueden cambiar de forma separada. Por ejemplo, ¿qué sucede si alguien pone una nueva versión de un fichero en el depósito común? En ese momento, tu ya no tienes la última versión, sino que es el depósito el que la tiene. El comando que se utiliza para obtener del depósito sólo aquellos ficheros que hayan cambiado respecto a la última vez que se hizo una copia es update y se debe ejecutar desde dentro de tu directorio local en el que quieres que se bajen las últimas versiones. Por tanto, y desde el directorio Group_??, el comando a ejecutar es: svn --username 1000????? update https://flautin.it.uc3m.es/svn/ttao/Group_??. La siguiente figura muestra el efecto de este comando.

    Como ves, el comando ha sido ejecutado desde dentro del directorio que previamente se ha obtenido con el comando checkout. Esta operación de update la debes hacer siempre que empieces una sesión de trabajo, de esta forma garantizas que tienes las versiones más recientes de tus ficheros. La siguiente figura muestra la transición del estado en el que los ficheros están sincronizados, al estado en el que en el depósito hay una versión modificada, y como el comando update los sincroniza de nuevo.

  3. En cuando modificas los ficheros almacenados en tu copia de trabajo, las dos versiones vuelven a tener datos diferentes. En este caso son los cambios en tu copia local los que deben reflejarse en el depósito remoto. Para ello se utiliza el commando commit desde el directorio local. El comando entero es svn --username 1000????? commit -m 'comentario sobre los cambios'. No hace falta especificar qué ficheros hay que enviar, la herramienta se encarga enviar los que hayan cambiado. La siguiente figura ilustra el efecto de este comando.

    Este comando se ha de ejecutar con mucha frecuencia, pues es la forma de tener la copia local y la remota con idénticos datos. La siguiente figura muestra la secuencia en la que modificas tus ficheros en la copia local y luego se envían al depósito mediante el comando commit. Este comando lo debes ejecutar muy a menudo (es una forma de guardar copias de seguridad de tus ficheros) y al menos siempre que terminas una sesión de trabajo.

2.2. Resumen de comandos en Subversion

En la siguiente figura puedes ver un resumen de los comandos principales de subversion así como la transición entre los diferentes estados. Fíjate que si por cualquier motivo coincide que tienes una versión modificada de ficheros locales, y que también están modificados en el depósito remoto, primero has de ejecutar el comando update y a continuación commit para volver a tener el contenido sincronizado.


© Universidad Carlos III de Madrid Creative Commons License
Material bajo licencia Creative Commons

Última modificación: