ARQUITECTURA DE COMPUTADORES PRÁCTICA 1 Introducción al Shell del Sistema Operativo UNIX (I) ENTRADA AL SISTEMA. Vamos a trabajar con la distribución RedHat de LNUX en su versión 9.0. Se trata de un entorno gráfico. UNIX es un sistema multiusuario. Cada usuario tiene creada una cuenta propia. Las cuentas de los usuarios son creadas por el superusuario (root), un usuario con privilegios especiales que se encarga de la administración del sistema. En nuestro caso arrancaremos la máquina seleccionando la primera de la opción LINUX. A continuación aparece un menú donde se nos presentan todas las instancias Linux que han sido configuradas en esa máquina. Debemos seleccionar la primera opción (arranque de un Linux genérico en modo usuario). Una vez arrancado el Linux en concreto, todo usuario debe identificarse en el momento de la conexión. Para ello debe introducir, en primer lugar, su identificador de usuario (login) y, a continuación, su contraseña (password). Tanto el identificador de usuario como el password se os indicarán en el momento de realizar la práctica. Hay que introducir el mismo respetando las mayúsculas y minúsculas. Por motivos de seguridad, la contraseña no se visualiza en pantalla al escribirla. Así que hay que poner bastante atención en teclearla correctamente. En nuestro caso y, antes de identificar el usuario, debes seleccionar desde la barra de herramientas (en el inferior de la pantalla) la opción de Sesión para, en el desplegable que aparecerá a continuación, picar en la opción de KDE (tipo de desktop que más nos conviene para nuestras prácticas – por defecto los Linux han sido configurados con GNome). Una vez arrancado el sistema operativo, observa el desktop juega un poco con él (tienes 4 posibles a elegir, puedes cambiar el fondo… un poco como en el S.O. windows pero con más elegancia). Si te fijas, tienes un icono llamado terminal o shell (y si no, lo encontrarás en el grupo de programas denominado Herramientas del Sistema). Se trata del intérprete de comandos que utilizarás para realizar esta práctica y las siguientes. Haz doble click sobre el icono y ejecuta el intérprete. Como ya te has identificado al entrar en el sistema no te va a pedir ni el nombre de usuario ni la contraseña. 1 Una vez ubicado en el shell, podemos cambiar el prompt con el comando: $ export PS1=‘$’ Así el prompt se quedará reducido al símbolo $. Este indicador denota que el intérprete espera una orden del usuario desde el teclado con el fin de que UNIX la ejecute. La orden se ejecuta al pulsar <ENTER>. NOTAS GENERALES • <CTRL> C: Termina o aborta la ejecución de un comando. • <CTRL> S: Detiene la visualización en pantalla. • <CTRL> Q: Reanuda la visualización en pantalla. • En la microweb he dejado un Tutorial UNIX en castellano donde se pueden consultar los comandos más utilizados de UNIX. • Ojo: UNIX distingue entre mayúsculas y minúsculas. • Si se ha tecleado mal, la orden puede corregirse con la tecla de retroceso Å FORMATO DE LAS ÓRDENES Muchas órdenes aceptan argumentos. Para UNIX, el separador de argumentos es el espacio en blanco. Ejemplo: $ echo Hola La mayoría de órdenes asumen como opción un argumento cuyo primer carácter es el signo Ejemplos: $ ls -l $ ls -l /etc/passwd Las opciones pueden expresarse por separado o combinadas: $ ls -l -a $ ls -la El objetivo de la práctica es que empecéis a manejar UNIX a nivel de usuario. Para ello debéis probar todas las órdenes de UNIX que se comentan en este boletín y comprender qué es lo que hacen. ALGUNAS ORDENES BASICAS DE UNIX. Orden Man Permite consultar la sintaxis, la descripción y las opciones de cualquier orden sobre el terminal. Ejemplo: $man date nos dará información sobre el comando date. La información saldrá paginada por pantallas. Podemos ir avanzando pulsando <ENTER> o abandonar la ayuda con q (quit). 2 Ejemplo: dino!/home/arqcomp00 152 $ man date date(1) date(1) NAME date - print and set the date SYNOPSIS date [-u] [+format] date [-u] [[mmdd]HHMM | mmddHHMM[[cc]yy]] date [-a [-]sss.fff] DESCRIPTION If no argument is given, or if the argument begins with +, the current date and time are printed. Otherwise, the current date is set if the user is a privilege user. Supplementary code set characters in + format (see below) are : CONSULTAR QUÉ DICE man DE CADA ORDEN CONFORME VAYAMOS VIÉNDOLAS A LO LARGO DE LA PRÁCTICA. Orden Date Permite consultar la fecha y hora del sistema. Formato por defecto: día de la semana, día del mes, mes, año, hora. Este formato se puede cambiar. ¿Cómo? Probadlo. $ date (no escribáis el $, pues es sólo indicativo del final del prompt) Con esta orden también se puede modificar la fecha y hora del sistema, pero sólo el superusuario puede hacerlo, ya que éstos son valores críticos de los que dependen muchos de los servicios del sistema. Orden Who Permite visualizar los usuarios conectados al sistema. El formato de salida del comando es: - nombre de usuario - terminal de conexión - momento de la conexión 3 También puede utilizarse para conocer la propia identidad: $ who am i Obtención del directorio actual: PWD. Cuando entramos en el sistema a través de nuestro login, éste nos sitúa sobre nuestro directorio de trabajo. A partir de ahí podemos ir cambiando de directorio. Para saber en qué directorio estamos en cada momento utilizaremos la orden: $ pwd nos aparecerá el camino completo de la situación de nuestro directorio dentro del sistema, empezando por el directorio / (raíz) Listado del contenido de un directorio actual: LS. La orden ls nos permite ver el contenido de un directorio. Variantes del comando: ls -a : nos aparecen además los ficheros ocultos ls -l : listado con todos los detalles de los archivos/directorios. ls -F: nos indica además, qué ficheros en un directorio son ordinarios y cuáles son directorios, de la siguiente forma: - los ficheros que acaben en / son directorios - los que acaben en * son ejecutables ls -t : ordena los ficheros por fechas (primero los mas nuevos) ls -r : ordena los ficheros por fechas (primero los más antiguos) Podemos combinar varias opciones. Ejemplo: $ ls -l -a $ ls -ltF Siempre nos aparecerán dos ficheros especiales que son el ‘.’ y ‘..’. El primero hace referencia al directorio actual y el segundo al directorio padre. La distinción entre ficheros ordinarios y directorios también se puede apreciar si observamos el primer caracter de cada fila (fichero). Las entradas cuyo carácter es una ‘d’ son directorios y los que tienen un ‘-’ son ficheros ordinarios. Existe una entrada especial ‘l’ que hace referencia a un enlace ‘link’, y que más adelante veremos lo que es. Significado de los campos en el listado de ficheros: Cuando hacemos un ls -l , nos va a aparecer la siguiente información: - Modos de fichero (bits de protección): El primer elemento especifica el tipo de fichero. El resto de elementos son los llamados bits de protección. Están compuestos por tres secuencias de valores ‘r’, ‘w’, ‘x’, que indican los permisos de lectura, escritura y ejecución. - Número de enlaces. - Nombre del propietario del fichero. - Nombre del grupo al que pertenece el usuario. - Tamaño del fichero en bytes. - Fecha y hora de la última modificación. El comando ls tiene muchas más opciones de las aquí comentadas. Averiguad algunas de ellas con el comando man y probadlas por separado y combinándolas. 4 Cambio de Directorio:CD. Por defecto, al entrar en el equipo Unix nos colocamos en nuestro directorio de trabajo. Pero podemos cambiar de directorio mediante el comando: $ cd directorio El nombre del directorio podremos darlo mediante su forma absoluta (todo el camino desde la raiz) o mediante su forma relativa (indicando la ruta desde el directorio actual). Probad ambas formas. Con el comando cd sin argumentos volveremos siempre al directorio de trabajo propio, y si queremos ir al directorio de nivel superior basta con utilizar cd .. Cambiar al directorio raiz (/) y desde ahí ir visualizando el contenido de los siguientes directorios típicos de UNIX: /bin : directorio de algunas órdenes ejecutables. /usr/bin: resto de órdenes ejecutables. /usr/include: librerías del lenguaje C. /dev: ficheros especiales asociados a los diferentes dispositivos del sistema tales como terminales, impresoras,... /etc : directorio de contenidos variados. Ejemplo: passwd: fichero de contraseñas. /tmp : se utiliza para crear ficheros temporales /users o /home: directorio donde se encuentran los directorios de los usuarios del sistema. Caracteres comodín A veces nos puede interesar referenciar ficheros que tengan en su nombre características comunes (todos los ficheros que empiezan por la letra "c", ... ). Esto se conseguirá utilizando los caracteres comodines o metacaracteres: * : representa a cualquier cadena de caracteres arbitraria incluyendo la cadena vacía. ? : representa a cualquier carácter simple. [ ] : pueden contener un grupo o rango de caracteres y corresponden a un carácter simple. Ejemplos: $ ls a* $ ls fichero? $ ls c[1-3] $ ls c[1,3] Probar distintas combinaciones de estas órdenes. 5 Visualización de ficheros: CAT, FILE, MORE, HEAD, TAIL. La orden cat se utiliza para visualizar sobre la salida estándar el contenido de un fichero (se supone de tipo texto). Para saber de qué tipo es un fichero (texto, ejecutable,...) utilizaremos la orden file seguida del nombre del fichero del cuál queremos averiguar su tipo. Probad: $ cat /home/arq/.profile podemos ver el fichero de configuración del Shell. Si el fichero no cabe en pantalla podemos utilizar las combinaciones de teclas <CTRL> S (para detener la salida) y <CTRL> Q (para reanudarla). Otra opción más elegante es utilizar " | more " a continuación del comando para visualizar pantalla tras pantalla. Consultad las páginas del manual (man more) para ver alguna de las opciones del comando more y practicad algunas de ellas, pues también puede ser utilizado en solitario. La orden cat permite listar varios ficheros secuencialmente. Por ejemplo: $ cat fichero1 fichero2 lista en primer lugar el fichero1 y luego el fichero2. Una aplicación muy útil de cat es concatenar ficheros. Si queremos concatenar los dos ficheros anteriores en un nuevo fichero llamado fichero3: $ cat fichero1 fichero2 > fichero3 En el directorio de trabajo hay dos ficheros llamados marco1.txt y marco2.txt. Visualizad su contenido y concatenadlos en un tercer fichero que llamareis marcoxx.txt, donde xx = nº de usuario de la práctica. La orden tail permite visualizar el final de un fichero. Por defecto visualiza las 10 últimas líneas. Ejemplo: $ tail .profile lista las 10 últimas líneas del fichero .profile. Si queremos listar las últimas 5 líneas: $ tail -5 .profile y si queremos visualizar a partir de la línea 5: $ tail +5 .profile Existen unos parámetros que permiten indicar el número de líneas que queremos visualizar. Al igual que en comando anterior consultad las páginas del manual y probad distintas opciones. La orden head es complementaria de la anterior, pues permite visualizar el comienzo de un fichero. Por defecto visualiza las 10 primeras líneas. Se utilizan argumentos muy parecidos a los de la orden tail. Leed el man y comprobad las distintas opciones. FIN DE LA PRÁCTICA 1 6