Linux OBJETIVOS DEL CAPTULO Identificar las caractersticas y comprender el funcionamiento interno de Linux. Utilizar las rdenes bsicas de Linux. Utilizar las rdenes para el manejo de archivos y directorios Comprender el funcionamiento de permisos y derechos. Conocer el sistema de archivos. Utilizar redireccionamientos y filtros. Gestionar usuarios y grupos. Programar el Shell.
SISTEMAS INFORMTICOS
SISTEMAS OPERATIVOS MULTIUSUARIO: LINUX A
ndice
1. INTRODUCCIN ................................................................................................................................................ 1 1.1. Origen del Sistema Operativo Linux ................................................................................................. 1 1.2. Caractersticas ...................................................................................................................................... 1 1.3. Funcionamiento de un Sistema Multiusuario .................................................................................. 1 1.4. Componentes del Sistema ................................................................................................................. 2 1.5. Entrada al Sistema ............................................................................................................................... 3 2. PRIMEROS MANDATOS ..................................................................................................................................... 5 2.1. passwd ................................................................................................................................................... 5 2.2. logname ................................................................................................................................................. 5 2.3. who ......................................................................................................................................................... 5 2.4. tty ............................................................................................................................................................. 6 2.5. date ........................................................................................................................................................ 6 2.6. cal............................................................................................................................................................ 6 2.7. man ......................................................................................................................................................... 6 3. FICHEROS Y DIRECTORIOS ................................................................................................................................ 7 3.1. El rbol de Directorios ......................................................................................................................... 7 3.2. Directorio de Trabajo Actual ............................................................................................................. 8 4. COMANDOS RELACIONADOS CON ARCHIVOS Y DIRECTORIOS ............................................................. 9 4.1. cd [directorio_destino] ........................................................................................................................ 9 4.2. mkdir directorio1 [directorio2 directorioN] ................................................................................. 9 4.3. rmdir directorio1 [directorio2 directorioN] .................................................................................. 9 4.4. ls [-ltaCFR] [ficheros] [directorios] .................................................................................................... 10 4.5. cat fichero1 [fichero2 ficheroN] ................................................................................................. 11 4.6. more fichero1 [fichero2 ficheroN] .............................................................................................. 11 4.7. cp fich_origen1 [fich_origen2 fich_origenN] destino ............................................................. 11 4.8. mv fich_origen1 [fich_origen2 fich_origenN] destino ............................................................. 11 4.9. rm [-ir] fich1 [fich2 fichN] .............................................................................................................. 12 4.10. find [dir1 dirN] expresin_bsqueda ........................................................................................ 12 4.11. grep [-nicv] texto fich1 [fich2 fichN] ........................................................................................ 12 4.12. head [-n] fich1 [fich2 fichN] ..................................................................................................... 13
SISTEMAS INFORMTICOS
SISTEMAS OPERATIVOS MULTIUSUARIO: LINUX B
4.13. tail [[+|-]-n] [-lbc] fich1 [fich2 fichN] ...................................................................................... 13 4.14. wc [-lwc] fich1 [fich2 fichN]....................................................................................................... 13 4.15. sort [-fnrout] [-kn] fich1 [fich2 fichN] ....................................................................................... 14 4.16. Agrupamiento de rdenes............................................................................................................ 15 4.17. Entrada y Salida Estndar .............................................................................................................. 16 4.18. Redireccionamientos de Entrada y Salida ................................................................................. 17 4.19. Uso de Tuberas (pipes) ................................................................................................................... 18 5. ADMINISTRACIN DE USUARIOS ................................................................................................................... 19 5.1. El Superusuario .................................................................................................................................... 19 5.2. Cuentas de Usuario y Contraseas ................................................................................................ 20 5.3. Crear Usuarios: useradd [-u uid] [-g grupo] [-d direc] nom_user .............................................. 20 5.4. Borrar Usuarios: userdel [-r ] nom_usuario ...................................................................................... 21 5.5. Crear Grupos: groupadd [-g gid] nom_grupo ............................................................................. 21 5.6. Borrar Grupos: groupdel nom_grupo ............................................................................................. 21 6. SEGURIDAD ...................................................................................................................................................... 23 6.1. Permisos de los Ficheros .................................................................................................................... 23 6.2. Modificacin de los Permisos: chmod [abs | sim] f1 [f2 fN] ................................................ 23 6.3. Cambio de Propietario: chown nuevo-propietario f1 [f2 fN] ............................................... 24 6.4. Cambio de Grupo: chgrp nuevo-grupo f1 [f2 fN] .................................................................. 24 7. SCRIPTS .............................................................................................................................................................. 25 8. PARMETROS DE UN SCRIPT .......................................................................................................................... 26 9. VARIABLES EN LINUX ........................................................................................................................................ 27 10. SENTENCIAS DE PROGRAMACIN ............................................................................................................... 30 10.1. Mandato exit..................................................................................................................................... 30 10.2. Mandato if ......................................................................................................................................... 30 10.3. Mandato case .................................................................................................................................. 32 10.4. Mandato for ...................................................................................................................................... 33 10.5. Mandato while ................................................................................................................................. 33 10.6. Mandato until ................................................................................................................................... 33 ACTIVIDADES ............................................................................................................................................................ 34 ACTIVIDADES SCRIPTS ............................................................................................................................................. 36
SISTEMAS INFORMTICOS
SISTEMAS OPERATIVOS MULTIUSUARIO: LINUX 1
1. INTRODUCCIN 1.1. ORIGEN DEL SISTEMA OPERATIVO LINUX Busca informacin acerca del origen de este sistema operativo. 1.2. CARACTERSTICAS El sistema operativo Unix es un sistema flexible, fiable y fcil de utilizar. Entre sus caractersticas destacan: Multiusuario. Es un sistema operativo que permite que varios usuarios estn conectados de forma simultnea ejecutando sus trabajos. Multitarea. Varias tareas se ejecutan de forma simultnea, para ello, emplea la tcnica de tiempo compartido. Divide el tiempo de ejecucin en pequeos intervalos y va asignando un intervalo de ejecucin a cada una de las tareas, de esta forma todas se van ejecutando al mismo tiempo. Swapping usando paginacin. Para realizar la gestin de memoria emplea la tcnica de swapping, de esta forma nunca se queda sin espacio para los intercambios de pginas. Sistema de archivos jerrquico. Utiliza un sistema de archivos en forma de rbol. Se parte de una raz y de ella cuelgan ficheros y directorios, que a su vez pueden contener nuevos directorios y as sucesivamente. A diferencia de los sistemas Microsoft, integra los dispositivos conectados al ordenador dentro del sistema de ficheros, tratndolos como archivos normales y corrientes. Sistemas de seguridad. El sistema de seguridad empleado para impedir accesos no deseados es la utilizacin de la palabra clave o password. Cada persona que trabaje con el sistema tendr un nombre de usuario y un password asignados que deber indicar al conectarse. Interfaz de usuario. El interfaz estndar es de modo texto, aunque en la actualidad todas las distribuciones disponen de interfaz grfico. 1.3. FUNCIONAMIENTO DE UN SISTEMA MULTIUSUARIO Un sistema multiusuario debe disponer de ms de un puesto de trabajo para que varias personas puedan trabajar de forma simultnea. Normalmente, los ordenadores en los que se instala un sistema multiusuario suelen estar formados por una unidad central de gran capacidad de proceso y numerosos terminales conectados a l. Estos terminales constan de una pantalla y un teclado, y generalmente no tienen capacidad de proceso, aunque actualmente estn siendo sustituidos por ordenadores personales.
SISTEMAS INFORMTICOS
SISTEMAS OPERATIVOS MULTIUSUARIO: LINUX 2
Para utilizar un ordenador personal como terminal de un sistema central es necesario ejecutar un programa denominado emulador. Estos programas conectan el ordenador personal con la mquina central y emulan el tipo de pantalla que utilizan habitualmente sus terminales. Aunque los ordenadores personales tienen capacidad de proceso, durante la conexin slo se utiliza para ejecutar la emulacin. 1.4. COMPONENTES DEL SISTEMA El sistema Unix consta de tres componentes principales: kernel, Shell y mandatos Unix. Kernel. Es el ncleo del sistema operativo. Se encarga de gestionar los recursos hardware del ordenador. Es la nica parte que acta directamente con los elementos fsicos, proporcionando as una total independencia del resto de las partes del sistema operativo respecto del hardware utilizado. Se carga en memoria cuando se arranca el ordenador y permanece all hasta que se apaga el sistema. Entre sus funciones destacan: Planificacin de la ejecucin de los procesos. Asignacin de recursos a los procesos. Supervisin de la transmisin de datos entre los dispositivos y las aplicaciones. El Shell. Es el intrprete de mandatos del sistema operativo. Un intrprete de mandatos o comandos no es ms que un programa que lee las entradas del usuario (por ejemplo las rdenes que teclea) y las traduce a instrucciones que el sistema es capaz de entender y ejecutar. El shell es slo una de las interfaces de Linux. Cuando el usuario se conecta al sistema se arranca un shell de forma automtica. Cuando se teclea una orden o programa ejecutable, los pasos a seguir por el intrprete de mandatos son: Busca el nombre de la orden y comprueba si es una orden interna, es decir, una orden que el propio shell puede ejecutar por s mismo. Comprueba tambin si la orden es un programa ejecutable que se encuentra en el directorio actual. Si no se cumple ninguno de estos casos, el shell busca el programa en el path y lo ejecuta. path es una variable del sistema en la que se indican las rutas o directorios en los que el shell debe buscar los ejecutables. Si tecleamos una orden y el shell no puede encontrar el programa asociado, se muestra un mensaje de error:
SISTEMAS INFORMTICOS
SISTEMAS OPERATIVOS MULTIUSUARIO: LINUX 3
Mandatos Unix. Los mandatos del sistema operativo Unix son programas que se encuentran almacenados en el sistema de archivos. Su sintaxis general es: $ mandato [- modificadores] [argumentos] Donde mandato es el nombre del mandato a ejecutar; siempre se escribe en minsculas. Los modificadores son opciones que afectan a la ejecucin del mandato, siempre comienzan por guin y su orden no tiene importancia aunque algunos son mutuamente excluyentes. Los argumentos son los elementos sobre los que actuar el mandato. $ ls nl datos facturas $ cp datos facturas $ clear 1.5. ENTRADA AL SISTEMA Los sistemas Linux se caracterizan por tener un usuario con permisos totales sobre el sistema llamado root (aunque tambin se denomina superusuario). 1
Para que los usuarios puedan acceder al sistema deben presentarse introduciendo su nombre de usuario (login) y contrasea (password). Hay que tener cuidado puesto que Unix es un sistema case sensitive, es decir, distingue entre letras maysculas y minsculas. El administrador del sistema (superusuario) asignar el nombre de usuario y una contrasea inicial en el momento de crear la cuenta de usuario. Adems, cada mquina tiene asignado un nombre: hostname. (Incluso aunque la mquina no est en red, tendr su hostname). Despus de acceder al sistema, lo que vemos es el prompt o inductor de rdenes, que se compone de: [nombre_usuario@hostname/dir_actual]$ (smbolo # para el superusuario o root). El prompt indica la disposicin para recibir instrucciones; mientras no est presente, no se pueden introducir rdenes: [User1@Maquina/User1]$ (para el usuario User1) [root@Maquina/dir23]# (para el root) El proceso completo de login ser: Maquina login: (introducir el nombre de usuario) password: (introducir contrasea) login incorrect (caso de que alguno de los datos sea incorrecto) Maquina login: password: Welcome to Maquina! [User1@Maquina/User1]$
1 La cuenta de usuario que creamos al instalar Ubuntu no es la cuenta root, aunque s pertenece al grupo de administradores. Para dotar de privilegios de root al usuario administrador se utiliza el comando sudo.
SISTEMAS INFORMTICOS
SISTEMAS OPERATIVOS MULTIUSUARIO: LINUX 4
Desde la lnea de rdenes usaremos el mandato exit para salir del sistema: [User1@Maquina/User1]$ exit Maquina login: Con exit salimos del sistema o, lo que es lo mismo, cerramos la sesin abierta para esa cuenta. Los comandos ms usuales para apagar el sistema son shutdown y halt. Estos comandos son privilegiados y slo los puede ejecutar el superusuario.
SISTEMAS INFORMTICOS
SISTEMAS OPERATIVOS MULTIUSUARIO: LINUX 5
2. PRIMEROS MANDATOS 2.1. PASSWD La primera operacin a realizar cuando se accede por primera vez a una cuenta de usuario es cambiar la contrasea inicial dada por el superusuario; esto se realiza mediante la orden passwd. La ejecucin de esta orden pedir la contrasea actual, la contrasea nueva y la validacin de sta:
2.2. LOGNAME El mandato logname indica el nombre de la cuenta del usuario conectado, esto es til cuando se ha modificado el prompt:
2.3. WHO Para conocer la identidad de todos los usuarios conectados al sistema en un momento determinado existe la orden who, que muestra una lista de todos los usuarios conectados indicando su nombre de usuario, el terminal en el que estn conectados y la fecha en que se realiz la conexin:
[User1@Maquina/User1]$ who root console May 11 10:45 User1 tty01 May 11 12:10 User22 tty15 May 11 12:15 usu09 tty23 May 11 13:09 [User1@Maquina/User1]$ who am I User1 tty01 May 11 12:10 [User1@Maquina/User1]$
SISTEMAS INFORMTICOS
SISTEMAS OPERATIVOS MULTIUSUARIO: LINUX 6
2.4. TTY El mandato tty indica la ruta de acceso del terminal usado por el usuario:
2.5. DATE El mandato date proporciona informacin acerca de la fecha y hora del sistema:
2.6. CAL El mandato cal visualiza un calendario del mes o ao indicados:
2.7. MAN Linux proporciona una utilidad conocida como pginas de manual. Estas pginas contienen documentacin en lnea para todas las rdenes del sistema, recursos, ficheros de configuracin, etc. La orden usada para acceder a las pginas del manual es man: 2
Se utiliza escribiendo el nombre del mandato a consultar despus de la orden man. Para salir de las pginas del manual hay que pulsar q.
2 Desafortunadamente, la mayora de las pginas del manual han sido escritas por gente que ya conoca lo que la orden o el recurso hace, por lo que las pginas del manual slo contienen detalles tcnicos de la orden sin ningn tipo de tutorial de uso. Pese a esto, este manual son una gran fuente de informacin que permiten refrescar la memoria si olvidamos la sintaxis de algn mandato.
SISTEMAS INFORMTICOS
SISTEMAS OPERATIVOS MULTIUSUARIO: LINUX 7
3. FICHEROS Y DIRECTORIOS Un fichero es un conjunto de informacin al que se le ha asignado un nombre. Ejemplos de ficheros son los mensajes de correo, programas, etc. Los ficheros son identificados por sus nombres (normalmente identifican al fichero y su contenido de alguna forma significativa para el propietario). No hay un formato estndar para los nombres de los ficheros: en general pueden contener cualquier carcter (excepto /) y estn limitados a 256 caracteres de longitud. Un directorio es simplemente una coleccin de ficheros. Puede ser considerado como una carpeta que contiene muchos ficheros diferentes. Los directorios tambin tienen un nombre con el que se identifican (y sigue las mismas pautas que los nombres de los ficheros). Adems, los directorios siguen una estructura de rbol, es decir, los directorios pueden contener otros directorios. Un fichero puede ser referenciado por su nombre y ruta de acceso, siendo sta la ruta a tomar para localizar un fichero dentro del rbol de directorios. El carcter de separacin entre ficheros y directorios (o entre directorios y subdirectorios) es /: dir_abuelo / dir_padre / dir_hijo / fichero 3.1. EL RBOL DE DIRECTORIOS Los sistemas Linux tienen una distribucin de ficheros estndar de forma que recursos y ficheros puedan ser fcilmente localizados. Esta distribucin en forma de rbol de directorios comienza en el directorio / (tambin conocido como directorio raz). Entre los directorios principales del sistema destacan: / Raz del sistema de archivos /dev Contiene ficheros del sistema representando los dispositivos que estn fsicamente instalados en el ordenador. /etc Este directorio est reservado para los ficheros de configuracin del sistema. En este directorio no deben aparecer programas. /lib Contiene las libreras necesarias para que se ejecuten los programas que residen en /bin (no las libreras de los programas de los usuarios). /sbin Contiene programas que slo son accesibles por el superusuario. /usr Es uno de los directorios ms importantes del sistema puesto que contiene los programas de uso comn para todos los usuarios. Su estructura suele ser similar a: /usr/bin Programas de uso general, lo que incluye el compilador de C/C++ /usr/doc Documentacin general de sistema.
SISTEMAS INFORMTICOS
SISTEMAS OPERATIVOS MULTIUSUARIO: LINUX 8
/usr/etc Ficheros de configuracin generales. /usr/include Ficheros de cabecera de C/C++ (.h) /usr/lib Libreras generales de los programas. /usr/man Manuales accesibles con el comando man. /usr/scr Cdigo fuente de los programas. /home Contiene todos los directorios de trabajo de los usuarios. El directorio de trabajo de un usuario es aqul que tiene asignado para guardar sus ficheros. Normalmente, los directorios home de los usuarios son identificados con el nombre del usuario al que pertenecen; por tanto, el directorio de trabajo del usuario User1 ser /home/User1. 3.2. DIRECTORIO DE TRABAJO ACTUAL El directorio de trabajo actual es aqul en el que nos encontramos en cada momento. Todas las rdenes tecleadas en el Shell sern dadas en trminos del directorio actual mediante las rutas de acceso. La ruta de acceso absoluta de un fichero o directorio est constituida por su ruta de acceso completa, esto es, desde el directorio raz. La ruta de acceso absoluta es nica e independiente del punto de partida: [User1@Maquina/User1]$ more /home/User1/para_imprimir/historia_final [User1@Maquina/otro]$ more /home/User1/para_imprimir/historia_final La ruta de acceso relativa se escribe en relacin al directorio activo: [User1@Maquina/User1]$ more para_imprimir/historia_final Podemos referirnos a nuestro directorio home usando el carcter tilde (~) como atajo: [User1@Maquina/otro]$ more ~/para_imprimir/historia_final Al crear un directorio, Linux crea dos referencias que se corresponden con los smbolos de punto . y dos puntos consecutivos ... El smbolo de un punto indica el directorio activo. Los dos puntos consecutivos hacen referencia al directorio padre del directorio activo. Si otro es un subdirectorio de User1, escribe el mandato de los ejemplos anteriores desde este directorio usando trayectoria relativa:
SISTEMAS INFORMTICOS
SISTEMAS OPERATIVOS MULTIUSUARIO: LINUX 9
4. COMANDOS RELACIONADOS CON ARCHIVOS Y DIRECTORIOS En la mayora de los comandos relacionados con archivos y directorios se pueden utilizar metacaracteres o comodines. Los comodines son caracteres especiales que permiten operar sobre un conjunto de ficheros y directorios mediante una orden; es decir, es una notacin abreviada para referirse a varios ficheros y directorios. * Se sustituye por cualquier cadena de caracteres, incluyendo la cadena vaca. ? Representa un nico carcter. [ ] Si se encierra una serie de caracteres entre corchetes, se sustituye por cualquier carcter de la lista. [x y] Indica un rango de caracteres entre x e y. El uso de los comodines se explicar mediante ejemplos en el mandato ls. 4.1. CD [DIRECTORIO_DESTINO] Permite acceder a un directorio determinado. El nombre del directorio puede incluir la ruta, bien sea absoluta o relativa. Para pasar al directorio padre se puede teclear el mandato seguido de punto punto, pero dejando al menos un espacio entre mandato y puntos: [User1@Maquina/User1]$ cd otro [User1@Maquina/otro]$ cd .. [User1@Maquina/User1]$ 4.2. MKDIR DIRECTORIO1 [DIRECTORIO2 DIRECTORION] Permite crear uno o ms directorios. Se pueden indicar rutas absolutas o relativas: [User1@Maquina/User1]$ mkdir dir1 dir2 (crea dir1 y dir2 en el directorio actual) 4.3. RMDIR DIRECTORIO1 [DIRECTORIO2 DIRECTORION] Permite borrar uno o ms directorios. Se pueden indicar rutas absolutas o relativas. Para borrar un directorio es necesario estar situado fuera y, adems, el directorio debe estar vaco: [User1@Maquina/User1]$ rmdir dir1 ~/dir2 (borra dir1 y dir2)
SISTEMAS INFORMTICOS
SISTEMAS OPERATIVOS MULTIUSUARIO: LINUX 10
4.4. LS [-LTACFR] [FICHEROS] [DIRECTORIOS] Permite listar los nombres de ficheros y directorios. Si no se especifica ningn fichero o directorio, se mostrar el contenido del directorio actual; si se especifica el nombre de uno o ms ficheros, mostrar informacin sobre ellos, y si se indica uno o ms directorios visualizar su contenido. El listado aparece ordenado por cdigo ASCII. Para poder moverse o listar un directorio es necesario tener permisos para poder hacerlo. Los modificadores de este mandato son: -l Visualiza los permisos de acceso de cada fichero o directorio. -t Realiza el listado ordenado por la fecha y la hora de la ltima modificacin. -a Lista todos los ficheros de un directorio. Por defecto, los ficheros cuyo nombre comienza por un punto se consideran ocultos y no aparecen. Con esta opcin s aparecern. -C Realiza el listado por columnas. El nmero de columnas depende del ancho de la pantalla y la longitud de los nombres. -F Si el fichero es ejecutable se aade un asterisco a su nombre; si es un directorio, se aade una barra. -R Realiza un listado del directorio indicado y todos los subdirectorios que cuelgan de l.
[User1@Maquina/User1]$ ls F Correo/ cursos/ para_imprimir/ [User1@Maquina/User1]$ ls F para_imprimir capitulo-1 historia-final notas/ tesis [User1@Maquina/User1]$ Al especificar los nombres de ficheros y directorios se pueden utilizar comodines: Suponiendo que en el directorio User1 existen los siguientes ficheros: a1 a11 a111 b1 b11 b111 aa ab ac ba bb bc a2 a3 b2 b3 aa1 aa2 aa3 bb1 bb2 bb3 Explica la salida de las siguientes instrucciones: [User1@Maquina/User1]$ ls b*
SISTEMAS INFORMTICOS
SISTEMAS OPERATIVOS MULTIUSUARIO: LINUX 11
[User1@Maquina/User1]$ ls a? [User1@Maquina/User1]$ ls b?? [User1@Maquina/User1]$ ls [ab]* [User1@Maquina/User1]$ ls ?[1-9] [User1@Maquina/User1]$ ls b[a-z]? [User1@Maquina/User1]$ ls ?[1-9]* 4.5. CAT FICHERO1 [FICHERO2 FICHERON] Visualiza el contenido de uno o ms ficheros. 4.6. MORE FICHERO1 [FICHERO2 FICHERON] Visualiza el contenido de uno o ms ficheros de forma paginada. 4.7. CP FICH_ORIGEN1 [FICH_ORIGEN2 FICH_ORIGENN] DESTINO Copia los ficheros listados en la lnea de comandos al fichero o directorio pasado como ltimo argumento. En caso de existir, esta orden sobrescribe el fichero destino sin preguntar: [User1@Maquina/cursos]$ ls DAM SMR [User1@Maquina/cursos]$ cp DAM ASIR [User1@Maquina/cursos]$ ls ASIR DAM SMR [User1@Maquina/cursos]$ 4.8. MV FICH_ORIGEN1 [FICH_ORIGEN2 FICH_ORIGENN] DESTINO Mueve los ficheros listados en la lnea de comandos al fichero o directorio pasado como ltimo argumento. En caso de existir, esta orden sobrescribe el fichero destino sin preguntar: [User1@Maquina/cursos]$ mv SMR GMinf [User1@Maquina/cursos]$ ls ASIR DAM GMinf [User1@Maquina/cursos]$
SISTEMAS INFORMTICOS
SISTEMAS OPERATIVOS MULTIUSUARIO: LINUX 12
4.9. RM [-IR] FICH1 [FICH2 FICHN] Borra los ficheros que recibe como argumentos. Por defecto, no pide confirmacin. -i Pide confirmacin para cada borrado. -r Recibe como argumento uno o ms directorios y elimina tanto el contenido como los directorios.
[User1@Maquina/User1]$ rm cursos/GMinf [User1@Maquina/User1]$ ls cursos ASIR DAM 4.10. FIND [DIR1 DIRN] EXPRESIN_BSQUEDA Busca ficheros en estructuras de directorios. Es una orden recursiva, es decir, busca en los directorios indicados y en todos sus subdirectorios. En expresin_bsqueda se puede poner: - name fichero busca por nombre. - perm nmero_octal busca por permisos de ficheros.
[User1@Maquina/cursos]$ find name agenda (selecciona todos los ficheros llamados agenda a partir del directorio actual) [User1@Maquina/cursos]$ find / -perm 444 (selecciona todos los ficheros con permisos 444 de todo el disco) 4.11. GREP [-NICV] TEXTO FICH1 [FICH2 FICHN] Permite localizar una palabra o frase en uno o ms ficheros. Muestra en pantalla las lneas que contengan el texto buscado. Si la cadena a buscar contiene espacios, ser necesario encerrarla entre comillas. -n Numera las lneas indicando su lugar en el fichero. -i Ignora la diferencia entre maysculas y minsculas. -c nicamente cuenta el nmero de lneas en las que aparece la cadena buscada. -v Muestra las lneas en las que no aparece el texto buscado.
[User1@Maquina/User1]$ grep hola agenda (muestra las lneas de agenda que contienen la palabra hola)
SISTEMAS INFORMTICOS
SISTEMAS OPERATIVOS MULTIUSUARIO: LINUX 13
Si se dispone del fichero empleados con el siguiente contenido, escribe las sentencias para conocer el nmero de personas que trabajan en el departamento contable y dnde trabaja Carlos:
4.12. HEAD [-N] FICH1 [FICH2 FICHN] Permite visualizar por la salida estndar (pantalla) las primeras lneas de un fichero o ficheros. Por defecto, muestra las 10 primeras lneas. El modificador n permite indicar el nmero de lneas: [User1@Maquina/User1]$ head -3 fichA (muestra las 3 primeras lneas de fichA) 4.13. TAIL [[+|-]-N] [-LBC] FICH1 [FICH2 FICHN] Permite visualizar el final de uno o ms ficheros. Por defecto, muestra las 10 ltimas lneas de cada fichero. -n Indica el nmero de lneas finales que se visualizarn. +n Visualiza a partir de la lnea indicada. -l Indica que cuente en unidades de lnea (opcin por defecto). -b Indica que cuente en unidades de bloques de 512 bytes. -c Indica que cuente en caracteres.
[User1@Maquina/User1]$ tail -3 fichA (muestra las 3 ltimas lneas de fichA) 4.14. WC [-LWC] FICH1 [FICH2 FICHN] Cuenta los caracteres, palabras y lneas de uno o ms ficheros. Cuando se proporcionan varios ficheros, cada uno se cuenta y se muestra por separado, y posteriormente se presenta el total acumulado. Con la opcin l (-w / -c) slo cuenta las lneas (palabras / caracteres). [User1@Maquina/User1]$ wc ficha (muestra el nmero de lneas, palabras y caracteres, as como el nombre de fichA)
SISTEMAS INFORMTICOS
SISTEMAS OPERATIVOS MULTIUSUARIO: LINUX 14
4.15. SORT [-FNROUT] [-KN] FICH1 [FICH2 FICHN] Toma como entrada una lista de ficheros de texto, los ordena por lneas y enva el resultado a la pantalla. Si se indica el nombre de varios ficheros, une el contenido de todos ellos y despus lo muestra ordenado; es decir, no efecta ordenaciones parciales. -f Ignora la diferencia entre maysculas y minsculas. -n Realiza una clasificacin numrica. Lo que debe haber en la posicin por donde se va a ordenar es un valor numrico. -r Invierte la ordenacin. -o Permite sustituir un archivo por su versin ordenada. -u Elimina todas las lneas repetidas dejando slo una. -t Permite indicar un separador de campos. Por defecto, el separador es el espacio. -kn Establece el campo o grupo de campos por los que se va a realizar la ordenacin. n indica el nmero de campo que se tendr en cuenta para la ordenacin.
Si se dispone del fichero personal con el siguiente contenido, Escribe la salida que producen las siguientes sentencias:
[User1@Maquina/User1]$ sort personal [User1@Maquina/User1]$ sort t: -k2 nr personal [User1@Maquina/User1]$ sort t: +5 personal
SISTEMAS INFORMTICOS
SISTEMAS OPERATIVOS MULTIUSUARIO: LINUX 15
4.16. AGRUPAMIENTO DE RDENES El agrupamiento de rdenes consiste en pedir al shell que lance la ejecucin de varias rdenes consecutivamente. Existen varias formas: orden1 ; orden2 ; orden3 Provoca la ejecucin secuencial e independiente de las rdenes indicadas:
(orden1 ; orden2 ; orden3) Tiene el mismo efecto que el caso anterior, pero para ciertas actuaciones todo lo que est entre parntesis se considera como un conjunto (redireccionamientos, ejecucin en segundo plano). orden1 && orden2 (funcin AND) Slo ejecutar orden2 si orden1 tuvo xito. Si orden1 falla por algn motivo, orden2 no se llega a ejecutar. En el ejemplo, ls busca el fichero, si lo encuentra, la segunda orden (cat) lo mostrar por pantalla. [User1@Maquina/User1]$ ls /etc/printcap && cat /etc/printcap orden1 || orden2 (funcin OR) Ejecuta orden2 slo si la ejecucin de orden1 no ha tenido xito. En el ejemplo, si el mandato ls ha tenido xito, la ejecucin se detiene ah; en caso contrario, se ejecutar cp. [User1@Maquina/User1]$ ls /etc/printcap || cp /etc/printcap_backup /etc/printcap
SISTEMAS INFORMTICOS
SISTEMAS OPERATIVOS MULTIUSUARIO: LINUX 16
4.17. ENTRADA Y SALIDA ESTNDAR Muchos comandos Linux toman su entrada de algo conocido como entrada estndar y envan su salida a la salida estndar (a menudo abreviadas como stdin y stdout). El intrprete de comandos configura el sistema de forma que la entrada estndar es el teclado y la salida estndar el monitor. El uso de entrada y salida estndar se puede comprobar con el siguiente ejemplo, en el que se ejecuta el mandato cat: si no se le pasan nombres de ficheros como parmetros, leer datos de stdin y los enviar a stdout: [User1@Maquina/User1]$ cat Hola caracol Hola caracol Adis Adios <ctrl.+d> [User1@Maquina/User1]$ Como se puede ver, cada lnea que el usuario teclea es inmediatamente reenviada al monitor (impresa en cursiva). Cuando se est leyendo de la entrada estndar, los comandos reconocen el fin de la entrada de datos cuando reciben el carcter EOT (End-Of_Text), normalmente generado con la combinacin <ctrl.+d>. Otro ejemplo: [User1@Maquina/User1]$ sort Berenjenas Castaas Aceitunas <ctrl.+d> Aceitunas Berenjenas Castaas [User1@Maquina/User1]$
SISTEMAS INFORMTICOS
SISTEMAS OPERATIVOS MULTIUSUARIO: LINUX 17
4.18. REDIRECCIONAMIENTOS DE ENTRADA Y SALIDA El shell nos permite redireccionar la salida de un mandato usando el smbolo > [User1@Maquina/User1]$ sort > lista-compra Berenjenas Castaas Aceitunas <ctrl.+d> [User1@Maquina/User1]$ cat lista-compra Aceitunas Berenjenas Castaas [User1@Maquina/User1]$ Como se puede ver, el resultado de sort no se muestra por pantalla, sino que es dirigido al fichero lista-compra. El uso de > para redireccionar la salida a un fichero que ya exista es destructivo. Si en su lugar usamos el smbolo >>, la salida ser aadida al final del fichero: [User1@Maquina/User1]$ ls > lista_de_archivos (sobrescribe el fichero si exista) [User1@Maquina/User1]$ ls >> lista_de_archivos (aade el listado al final) No slo puede ser redireccionada la salida estndar, tambin se puede redireccionar la entrada estndar usando el smbolo <, aunque no es lo habitual ni tiene muchos usos.
SISTEMAS INFORMTICOS
SISTEMAS OPERATIVOS MULTIUSUARIO: LINUX 18
4.19. USO DE TUBERAS (PIPES) El shell nos permite conectar una cadena de comandos en una tubera haciendo que la stdout del primer mandato se enve directamente a la stdin del segundo y as sucesivamente. Para crear una tubera se usa el smbolo |: El siguiente ejemplo conecta la salida de ls con la entrada de sort. [User1@Maquina/User1]$ ls Correo/ cursos/ para_imprimir/ [User1@Maquina/User1]$ ls | sort r para_imprimir/ cursos/ Correo/ [User1@Maquina/User1]$ Podemos entubar ms de dos comandos a la vez, consiguiendo, por ejemplo, avanzar pgina a pgina: [User1@Maquina/User1]$ ls | sort r | more
Actividades 1 a 15.
SISTEMAS INFORMTICOS
SISTEMAS OPERATIVOS MULTIUSUARIO: LINUX 19
5. ADMINISTRACIN DE USUARIOS La administracin de usuarios abarca, entre otras, tareas tan importantes como crear nuevas cuentas de usuario, cambiar contraseas de usuarios ya existentes, asegurarse de que el directorio home de un usuario se encuentra en el lugar adecuado, permitir el acceso de usuarios a los recursos del sistema, etc. Normalmente, estas tareas slo puede realizarlas un nico usuario denominado administrador del sistema o superusuario. 5.1. EL SUPERUSUARIO El administrador del sistema o superusuario es un usuario individual responsable de mantener el sistema en ejecucin correctamente. Para ello, tiene permisos especiales para acceder a todos los ficheros y recursos del sistema y determinar sus condiciones de trabajo. Linux proporciona un nombre de usuario especial para el superusuario (root) que obviamente tendr una contrasea. Esta contrasea slo debera ser conocida por l y, en todo caso, por un administrador de reserva. Teniendo en cuenta que el root puede realizar tareas tan importantes como iniciar y parar el sistema, aadir o suprimir usuarios, instalar y mantener o desinstalar software, crear ficheros de dispositivos, etc., se recomienda que el administrador del sistema utilice la cuenta de superusuario slo para tareas administrativas y una cuenta de usuario normal para trabajos rutinarios. Esto se debe a que algunas rdenes actan de manera diferente cuando las utiliza el root, proporcionando capacidades ampliadas. Para cambiar de cuenta de usuario, se utiliza la orden su: [User1@Maquina/User1]$ su password: (incorrecto) su: incorrect password [User1@Maquina/User1]$ su password: (correcto) [root@Maquina/root]# En el caso de Ubuntu, en lugar del superusuario existe un sustituto (que es el usuario que se crea en el proceso de instalacin) con la autorizacin para hacer todo lo que suele hacer el root. Este usuario no es root, slo un usuario que tiene una autorizacin llamada sudo. Por eso, cuando se necesita ejecutar algo que solo puede hacer el root, se debe hacer anteponiendo al mandato la palabra sudo para informar al shell de que el usuario est autorizado. Evidentemente, esto no lo puede hacer cualquier usuario, nicamente podrn aquellos que cuenten con la autorizacin oportuna (que se guarda en /etc/sudoers).
SISTEMAS INFORMTICOS
SISTEMAS OPERATIVOS MULTIUSUARIO: LINUX 20
5.2. CUENTAS DE USUARIO Y CONTRASEAS La informacin que controla las identificaciones de los usuarios se encuentra en el fichero /etc/passwd. Este fichero es legible por todos los usuarios, pero slo modificable por el root. Cuando un usuario teclea su identificacin y contrasea, el SO busca en /etc/passwd y, si la informacin es correcta, ejecuta el shell para ese usuario. El fichero /etc/passwd es un fichero de base de datos en el que cada lnea es un registro formado por campos separados por dos puntos (:). La informacin recogida en el fichero es la siguiente: Nombre de usuario: identificacin del usuario en el sistema. Contrasea: est codificada y solamente es conocida por el propio usuario. Este campo puede no existir. Nmero identificador de usuario (uid): es un nmero distinto y correlativo para cada usuario. Nmero identificador de grupo (gid): grupo principal de cada usuario. Comentario: es un campo opcional. Directorio del usuario: es el directorio de trabajo asignado a ese usuario. Shell: indica el shell que usar ese usuario. [User1@Maquina/User1]$ cat /etc/passwd root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/bin:/bin/sh bin:x:2:2:bin:/bin:/bin/sh
User1:x:1000:1000:UBUNTU:/home/User1:/bin/bash Vista parcial del fichero /etc/passwd 5.3. CREAR USUARIOS: USERADD [-U UID] [-G GRUPO] [-D DIREC] NOM_USER En Linux se pueden crear usuarios mediante el comando useradd siempre y cuando se haya accedido al sistema como root. -u uid Permite asignar un uid especfico. -g grupo Permite asignar a un grupo determinado. -d directorio Permite crear un directorio de trabajo distinto al que se crea por defecto.
SISTEMAS INFORMTICOS
SISTEMAS OPERATIVOS MULTIUSUARIO: LINUX 21
Esta instruccin realiza las siguientes acciones: Crea una entrada para el nuevo usuario en el fichero /etc/passwd. Crea la cuenta de usuario con su contrasea. Asigna un n identificador de usuario (uid) y un n identificador de grupo (gid). Crea el directorio home para el usuario. Asigna el shell correspondiente.
En Ubuntu se recomienda utilizar el mandato adduser mediante sudo. 5.4. BORRAR USUARIOS: USERDEL [-R ] NOM_USUARIO Esta instruccin borra la cuenta del usuario eliminando la entrada correspondiente del fichero /etc/passwd. La opcin r permite borrar tambin el directorio de trabajo del usuario: [root@Maquina/root]# userdel r User2 Este mandato es de bajo nivel por lo que se recomienda el uso de deluser para usuarios avanzados. 5.5. CREAR GRUPOS: GROUPADD [-G GID] NOM_GRUPO Permite crear un grupo nuevo. Por defecto asigna un gid, pero se puede especificar uno concreto con la opcin -g: [root@Maquina/root]# groupadd g 100 grupo3 groupadd: gid is not unique [root@Maquina/root]# groupadd g 110 grupo3 5.6. BORRAR GRUPOS: GROUPDEL NOM_GRUPO
SISTEMAS INFORMTICOS
SISTEMAS OPERATIVOS MULTIUSUARIO: LINUX 22
El fichero /etc/passwd guarda la informacin de todas las cuentas de usuario, cul es su equivalente para los grupos dados de alta? Puede un usuario pertenecer a varios grupos? Cmo podemos averiguar los grupos a los que pertenece un usuario? Cmo se modifican las propiedades de un usuario tales como cambiar/aadir un nuevo grupo?
SISTEMAS INFORMTICOS
SISTEMAS OPERATIVOS MULTIUSUARIO: LINUX 23
6. SEGURIDAD Dado que Linux ha sido diseado para soportar mltiples usuarios, ofrece muchos modos de acceder al sistema, adems de diversas herramientas y rdenes relativas a la seguridad. Las cuestiones de seguridad se pueden agrupar en varias categoras: Proteccin frente accesos indeseados: Linux solicita identificacin y contrasea a cada usuario para poder acceder al sistema. Proteccin del sistema de archivos: los ficheros y directorios tienen diferentes permisos de acceso, algo que resulta fundamental en un sistema multiusuario. Proteccin frente a ataques al sistema: Linux establece diferentes normas de seguridad a travs de herramientas del propio sistema (superusuario) y a travs de diferentes aplicaciones (antivirus). 6.1. PERMISOS DE LOS FICHEROS Los ficheros tienen tres niveles de permisos: Los permisos relativos al usuario individual que ha creado el fichero (propietario). Los relativos al grupo al que pertenece el propietario (grupo). Los que afectan al resto de usuarios del sistema (otros). Con ls l obtenemos los mltiples permisos de los ficheros, el nombre del propietario, el del grupo, el tamao, la fecha y hora de la ltima modificacin y el nombre del fichero: [User1@Maquina/User1]$ ls l -rw-rw-rw- User1 grupo2 May 14 17:26 fich1 drwxrwxrwx User1 grupo2 Mar 20 12:12 dir1 -rw-rw-r-- User2 grupo3 May 11 08:30 c4131.jpg La columna de la izquierda indica los permisos. El primer carcter indica si se trata de un fichero (-) o de un directorio (d). Los siguientes nueve caracteres se dividen en tres grupos: permisos de lectura (r), escritura (w) y ejecucin (x) de propietario, grupo y resto respectivamente. 6.2. MODIFICACIN DE LOS PERMISOS: CHMOD [ABS | SIM] F1 [F2 FN] Para modificar los permisos de uno o ms ficheros es necesario ser el propietario de los mismos. Modo absoluto (ABS). Los permisos se indican en numeracin octal, correspondiendo cada dgito a la combinacin binaria rwx. Se indican tres dgitos: el primero corresponde a los permisos del propietario, el segundo a los del grupo y el ltimo a los del resto.
SISTEMAS INFORMTICOS
SISTEMAS OPERATIVOS MULTIUSUARIO: LINUX 24
[User1@Maquina/User1]$ ls l fich1 -rw-rw-rw- User1 grupo2 May 14 17:26 fich1 [User1@Maquina/User1]$ chmod 744 fich1 [User1@Maquina/User1]$ ls l fich1 -rwxrr-- User1 grupo2 May 14 17:26 fich1 Modo simblico (SIM). Hay que tener en cuenta lo siguiente: - Clases de usuarios: u (propietario), g (grupo), o (otros). - Permisos: r (lectura), w (escritura), x (ejecucin). - +/- aadir/quitar permisos. Sintaxis: chmod clase-usuario +|- permisos ficheros
[User1@Maquina/User1]$ chmod go + x fich1 [User1@Maquina/User1]$ ls l fich1 -rwxr-xr-x User1 grupo2 May 14 17:26 fich1 6.3. CAMBIO DE PROPIETARIO: CHOWN NUEVO-PROPIETARIO F1 [F2 FN] En nuevo-propietario se puede poner el nombre o el uid del nuevo propietario, que, lgicamente, debe estar dado de alta en el sistema. Si cedemos un fichero, no podremos recuperarlo a menos que nos sea cedido de nuevo, ya que esta orden slo puede ejecutarla el propietario del fichero. [User1@Maquina/User1]$ chown User2 *.xml 6.4. CAMBIO DE GRUPO: CHGRP NUEVO-GRUPO F1 [F2 FN] Para realizar este cambio los ficheros nos deben pertenecer y el nuevo grupo debe estar dado de alta en el sistema. [User1@Maquina/User1]$ chgrp grupo3 cosas1 cosas2
Actividades 16 a 18
SISTEMAS INFORMTICOS
SISTEMAS OPERATIVOS MULTIUSUARIO: LINUX 25
7. SCRIPTS Un script es un fichero de texto sin formato que contiene mandatos del sistema operativo. Al teclear su nombre en el prompt, se ejecutarn todos los mandatos que contiene de forma secuencial. La ejecucin de un script puede hacerse de distintas formas: Ejecutando una nueva capa del shell: [User1@Maquina/User1]$ sh proceso1 Asignando permiso de ejecucin 3 : [User1@Maquina/User1]$ chmod u+x proceso1 [User1@Maquina/User1]$ proceso1 Cuando un usuario abandona el sistema, todos sus procesos son eliminados. Si se pretende que un proceso lanzado contine su ejecucin aunque el usuario se desconecte, hay que ejecutarlo mediante nohup y almacenando su salida en un fichero: [User1@Maquina/User1]$ nohup proceso1 > fichero_salida &
3 En la mayora de las distribuciones es necesario que el directorio que contenga los scripts est incluido en el PATH. Para incluir un directorio en el PATH de manera permanente (que no desaparezca cada vez que cerramos sesin) hay que incluir la siguiente lnea en el .profile propio del usuario: PATH=$PATH:$HOME/scripts (si nuestros ejecutables van a estar en ~/scripts)
SISTEMAS INFORMTICOS
SISTEMAS OPERATIVOS MULTIUSUARIO: LINUX 26
8. PARMETROS DE UN SCRIPT Los scripts pueden recibir argumentos en su lnea de ejecucin. Para ello, utilizan las variables $0, $1, $2, $9. La variable $0 recoge el nombre del script en ejecucin; la variable $1 el primer argumento pasado, $2 el segundo y as sucesivamente. Si se necesitan ms de nueve argumentos, se emplea el mandato shift para desplazar el dcimo argumento a $9, el noveno a $8 y as sucesivamente hasta perder el argumento que estaba guardado en $1, puesto que $0 siempre guardar el nombre del script. El nmero de argumentos que recibe un script (sin contar su nombre) se almacena en la variable $#. El conjunto de todos los argumentos pasados (sin el nombre del script) se almacenan en la variable $*. La variable $? contiene el cdigo de retorno del ltimo mandato ejecutado en el script. Si el mandato se ejecut correctamente, devuelve un cero. Esta variable permite comprobar la ejecucin de los mandatos. El mandato echo permite mostrar un mensaje en pantalla, si el mensaje contiene alguna variable, mostrar su contenido. Dado el siguiente script, escribe la salida de la siguiente sentencia:
[User1@Maquina/User1]$ sh proceso1 uno dos tres cuatro
SISTEMAS INFORMTICOS
SISTEMAS OPERATIVOS MULTIUSUARIO: LINUX 27
9. VARIABLES EN LINUX Linux permite crear variables de tipo alfanumrico que pueden ser variables de entorno (empleadas para manejar el entorno del sistema) o variables de usuario. Las variables de entorno son utilizadas por el sistema operativo y por las aplicaciones instaladas sobre l. Las ms importantes son: HOME. Contiene la ruta absoluta del directorio de trabajo del usuario. PATH. Contiene las rutas de bsqueda para los mandatos ejecutables; dichas rutas se separan por el carcter dos puntos (:). PS1. Contiene la cadena del indicador del sistema. Por defecto es $ PS2. Contiene la cadena secundaria del indicador del sistema. Cuando el sistema considera que un mandato est incompleto, muestra el indicador secundario para dar opcin al usuario a completarlo. Por defecto es > LOGNAME. Nombre de identificacin del usuario. TERM. Tipo de terminal utilizado. MAIL. Nombre del directorio donde se almacena el correo del usuario. SHELL. Nombre de la ruta del shell en ejecucin. Para que un usuario pueda crear sus propias variables de usuario, basta con asignarles un valor: variable=valor (sin espacios en blanco). Para utilizar el contenido de una variable en un mandato es necesario anteponer el signo $. Para concatenar informacin con el contenido de la variable, es preciso delimitar el nombre de la misma mediante llaves ({}):
Para asignar a una variable el resultado de un mandato se utiliza el operador grave (segundo acento ms espacio):
SISTEMAS INFORMTICOS
SISTEMAS OPERATIVOS MULTIUSUARIO: LINUX 28
Para consultar todas las variables de entorno que han sido establecidas en la sesin se puede utilizar el mandato env. Para visualizar todas las variables activas en la sesin se utiliza el mandato set (muestra las variables de entorno y las de usuario).
En muchos scripts es necesario solicitar informacin al usuario. Esta informacin se almacena en variables mediante el mandato read. Este mandato se utiliza seguido de la variable o variables que almacenarn la informacin introducida por el usuario. Si slo se indica una variable, almacenar todo lo que teclee el usuario. Si se indican dos variables, la primera recoge el texto hasta el primer espacio en blanco y la segunda el resto. Si hubiese tres, la primera recoge la primera palabra, la segunda variable la segunda palabra y la tercera todo lo dems. Es decir, el separador utilizado es el espacio en blanco y la ltima variable pasada como argumento recoge la informacin desde el ltimo separador hasta el final.
Dado el siguiente script, escribe su salida cuando se ejecuta sin argumentos y aade las lneas necesarias para que tambin aparezca en la salida la siguiente lnea: Y TU DIRECTORIO DE TRABAJO ES <trayectoria absoluta del directorio de trabajo>
Las variables que se pueden utilizar son de tipo alfanumrico, y por tanto no se pueden realizar operaciones matemticas de forma directa. Para realizar clculos es necesario emplear el mandato expr. Los operadores que utiliza este mandato son: + suma; - resta; \* producto; \ /divisin; % resto. Este mandato slo permite trabajar con nmeros enteros y es necesario que los operadores y los operandos vayan separados por espacios en blanco: User1@Maquina/User1]$ expr 4 + 5 9
SISTEMAS INFORMTICOS
SISTEMAS OPERATIVOS MULTIUSUARIO: LINUX 29
Si tecleamos las siguientes instrucciones: [User1@Maquina/User1]$ num=1 [User1@Maquina/User1]$ num=$num + 2 Escribe la salida que produce la siguiente sentencia: [User1@Maquina/User1]$ echo $num Escribe la sentencia necesaria para que s se realice la operacin matemtica:
SISTEMAS INFORMTICOS
SISTEMAS OPERATIVOS MULTIUSUARIO: LINUX 30
10. SENTENCIAS DE PROGRAMACIN 10.1. MANDATO EXIT Adems de para abandonar el sistema, este mandato tambin puede ser utilizado para terminar la ejecucin de un script. Cuando se utiliza de esta forma se acompaa de un valor que quedar almacenado en la variable $? para indicar el cdigo de terminacin del script: exit n 10.2. MANDATO IF Este mandato permite comprobar condiciones en un script. Su sintaxis posee tres variaciones. Primera opcin: Plantea una serie de mandatos a ejecutar si se cumple una condicin: if condicin then mandatos fi Segunda opcin: Plantea una serie de mandatos a ejecutar si se cumple la condicin y otros mandatos si no se cumple: if condicin then mandatos else mandatos fi Tercera opcin: Presenta condiciones anidadas: if condicin then mandatos elif condicin then mandatos else mandatos fi
SISTEMAS INFORMTICOS
SISTEMAS OPERATIVOS MULTIUSUARIO: LINUX 31
La sentencia if tambin se puede escribir en una sola lnea. Para ello es necesario separar cada uno de sus elementos por punto y coma: if condicin; then mandato; mandato; else mandato; mandato; fi
La condicin indicada en el mandato puede ser una expresin lgica o un mandato que devuelva un valor. Si el resultado es cero, se considerar que la condicin es verdadera. Para indicar expresiones lgicas como comparaciones de nmeros, cadenas alfanumricas, comprobaciones de ficheros, etc., se utiliza el mandato test: Comparaciones numricas: compara expresiones numricas o variables: test a eq b Cierto si a y b son iguales (equal). test a ne b Cierto si a y b no son iguales (not equal). test a ge b Cierto si a es mayor o igual que b (great or equal). test a gt b Cierto si a es mayor que b (great ). test a le b Cierto si a es menor o igual que b (least or equal). test a lt b Cierto si a es menor que b (least ).
Escribe proceso3 que crea un subdirectorio cuyo nombre recibe como argumento en el directorio actual. Si el subdirectorio se crea con xito, el script informar de ello.
Comparaciones de cadenas de caracteres: las cadenas de caracteres constantes se colocarn entre comillas y las variables llevarn el signo $. test cadenaA = cadenaB Cierto si cadenaA y cadenaB son iguales. test cadenaA != cadenaB Cierto si cadenaA y cadenaB no son iguales.
Sabiendo que el mandato pwd devuelve el nombre del directorio actual, escribe proceso4 que indica si se est situado en el directorio de trabajo del usuario:
Tratamiento de ficheros: permite comprobar la existencia y los permisos de cara al usuario que lo pregunta de un determinado fichero. test r fichero Cierto si el fichero existe y tiene permiso de lectura. test w fichero Cierto si el fichero existe y tiene permiso de escritura. test x fichero Cierto si el fichero existe y tiene permiso de ejecucin. test s fichero Cierto si el fichero existe y no est vaco. test d fichero Cierto si existe y es un directorio.
SISTEMAS INFORMTICOS
SISTEMAS OPERATIVOS MULTIUSUARIO: LINUX 32
test f fichero Cierto si existe y es un fichero ordinario. Operadores lgicos: sirven para agrupar las condiciones. condicin1 o condicin2 (OR) El conjunto es cierto cuando al menos una de las condiciones es cierta condicin1 a condicin2 (AND) El conjunto es cierto cuando ambas condiciones son ciertas.
Escribe proceso5 que recibe dos argumentos e indica si son ficheros: 10.3. MANDATO CASE Este mandato es una instruccin de alternativa mltiple. Compara el contenido de una variable o expresin con una serie de patrones, y cuando coincide, ejecuta los mandatos que acompaan a dicho valor. Su sintaxis es: case var in patrn1) mandatos ;; patrn2) mandatos ;; *) mandatos ;; esac
var puede ser una variable o expresin. patrn representa el valor o conjunto de valores que puede tener var. Se pueden indicar varios valores separndolos por signo de filtro ( | ). El final de los mandatos a ejecutar cuando se cumple un patrn se indica con dos signos de punto y coma. * es la opcin por defecto. Se ejecutarn los mandatos indicados cuando var no cumpla ningn patrn de los especificados. Es opcional.
Escribe proceso6 que visualiza, pagina u ordena el contenido de un fichero en funcin del modificador recibido. Si el proceso no recibe un modificador y el nombre de un fichero vlido, mostrar la sintaxis adecuada y terminar la ejecucin. El texto a mostrar en estos casos ser: Sintaxis: nom_proceso modificador fichero Modificadores: -v visualiza; -p pagina; -s ordena
SISTEMAS INFORMTICOS
SISTEMAS OPERATIVOS MULTIUSUARIO: LINUX 33
10.4. MANDATO FOR Permite crear un bucle en el que una variable ir tomando todos los valores de una lista indicada. Por cada valor que haya en la lista, se ejecutarn una vez todos los mandatos comprendidos entre do y done. for var in lista_de_valores do mandatos done
var es la variable que ir tomando los valores de la lista. lista_de_valores es una lista de valores separados por comas. Se pueden utilizar patrones como el asterisco (*) que indica todos los ficheros del directorio actual, o como $* que representa la lista de argumentos pasados al script.
Escribe proceso7 que cuenta los elementos del directorio actual: 10.5. MANDATO WHILE Permite crear un bucle que se ejecutarn mientras la condicin especificada sea cierta. while condicin do mandatos done Escribe proceso8 que imprime cinco veces la palabra recibida como argumento (palabra1, palabra2,. Palabra5): 10.6. MANDATO UNTIL Permite crear un bucle que se ejecutar hasta que la condicin especificada sea verdadera. until condicin do mandatos done
Escribe proceso9 que imprime cinco veces la palabra recibida como argumento (palabra1, palabra2,. Palabra5):
SISTEMAS INFORMTICOS
SISTEMAS OPERATIVOS MULTIUSUARIO: LINUX 34
ACTIVIDADES Realiza los siguientes ejercicios haciendo uso de tus propios apuntes. Toma nota de los comandos y opciones utilizadas. Respeta en todos los apartados el directorio activo especificado, no cambiando de lugar si no se indica expresamente.
1. Crea la siguiente estructura de directorios:
a. Crea PRINCIP, DATOS y C desde el directorio raz. b. Cambia al directorio PRINCIP y crea RESULT utilizando trayectoria relativa. c. Utilizando trayectorias absolutas, crea PROGRAMA y EJERCICI. d. Crea el resto de directorios con trayectorias relativas siendo el directorio activo PROGRAMA. 2. Borra EJERCICI utilizando trayectorias absolutas. 3. Crea, dentro de RESULT, dos directorios: C.DAT y C.BAK 4. Crea, en el directorio raz, el fichero texto, cuyo contenido sea la sintaxis de la orden cp. Utiliza la ayuda en lnea del sistema. 5. Crea, dentro de PROGRAMA, tres ficheros: texto.txt, texto.bak y texto1.bas. El contenido de cada uno de ellos ser el de la sintaxis de las rdenes cd, mkdir y rm. 6. Siendo el directorio activo RESULT, renombra el fichero texto1.bas con el nombre texto1.bak. 7. Copia todos los ficheros de PROGRAMA en un archivo llamado total en el directorio raz. 8. Siendo el directorio activo el raz, renombra el fichero texto.txt con el nombre texto.bas 9. Visualiza por pantalla el fichero total eliminndolo despus. 10. Copia todos los archivos de PROGRAMA en un directorio llamado TOTAL en el directorio raz. 11. Obtn los siguientes ficheros en el directorio de trabajo: a. Listado_1 que contenga un listado con todos los nombres y propiedades (permisos, tamao, propietario, ...) de los archivos y subdirectorios del directorio que contiene los controladores de dispositivos. b. Listado_2 que contenga un listado un listado largo de todos los archivos de tu directorio de trabajo ordenados a la inversa por nombre.
SISTEMAS INFORMTICOS
SISTEMAS OPERATIVOS MULTIUSUARIO: LINUX 35
c. Listado_3 que contenga un listado largo del contenido de tu directorio de trabajo ordenado de la siguiente forma: aparecern agrupados, primero los directorios y luego los archivos. Cada grupo ordenado a la inversa por nombre. d. Datos-1 que contenga un calendario del mes de Junio de 1917, seguido del siguiente texto: Eric John Ernest Hobsbawm (9/6/1917) Augusto Roa Bastos (13/6/1917) Claude kirkPatrick (17/6/1917) e. Datos_2 que contenga las cinco primeras y las cinco ltimas lneas de Listado_1 12. Crea un fichero en el directorio de trabajo llamado coches con el siguiente contenido: RENAULT:CLIO:AZUL:1200:85CV SEAT:IBIZA:BLANCO:1900:140CV RENAULT:MEGANE:NEGRO:1900:110CV CITROEN:ZX:AZUL:1900:95CV SEAT:CORDOBA:ROJOMETALIZADO:1500:80CV SEAT:AROSA:BLANCO:1100:75CV CITROEN:XSARA:VERDE:2000:145CV SEAT:LEON:AMARILLO:1400:120CV 13. Muestra por pantalla las ltimas dos lneas de este fichero. 14. Ordena el fichero por marcas y visualzalo. 15. Busca en el fichero anterior las lneas en las que el color sea BLANCO. 16. Asigna al fichero coches todos los privilegios posibles utilizando la sintaxis numrica. 17. Elimina todos los privilegios de grupo y resto de usuarios. 18. Asigna todos los privilegios con la sintaxis no numrica.
SISTEMAS INFORMTICOS
SISTEMAS OPERATIVOS MULTIUSUARIO: LINUX 36
ACTIVIDADES SCRIPTS 1. Escribe proceso10 que solicita un nmero y, si es mayor de 200, muestre el mensaje Mayor que 200: 2. Escribe proceso11 que solicita un nmero e indica si es par o impar: 3. Escribe proceso12 que solicita un nombre y comprueba si figura en el archivo ~/nombres: 4. Escribe proceso13 que sirva para mostrar un men en pantalla y que permita seleccionar entre las siguientes opciones: 1) Qu usuarios estn conectados actualmente y quin soy yo?; 2) Cul es mi directorio de trabajo?; 3) Salir. 5. Escribe proceso14 que indique el nmero de usuarios conectados en el sistema, los datos de fecha y hora, y el directorio actual: 6. Escribe proceso15 que calcule la media aritmtica de todos los nmeros introducidos por el usuario como argumentos. El proceso finalizar cuando se introduzca el nmero 0: 7. Escribe proceso16 que reciba un fichero como argumento y permita seleccionar entre las siguientes opciones: 1) Mostrar el inicio del fichero; 2) Mostrar el final del fichero; 3) Ordenar el fichero; 4) Mostrar el fichero paginado; 5) Contar el nmero de lneas; 6) Mostrar los permisos; 7) Buscar una palabra en el fichero; 0) Salir. 8. Escribe proceso17 que reciba un nmero indeterminado de argumentos y, para cada uno, indique si se trata de un nmero par o impar. Al final mostrar la cantidad de argumentos pares e impares recibidos. 9. Escribe proceso18 que solicite un nmero e indique si es par o impar. El proceso se repetir hasta que el usuario introduzca el nmero cero. Al final mostrar la cantidad de nmeros pares e impares introducidos. 10. Escribe proceso19 que recibe un fichero como argumento y lo cataloga en uno de los siguientes grupos: a) Menos de 10 palabras; b) Entre 10 y 100 palabras; c) Ms de 1000 palabras. 11. Escribe proceso20 que solicita el nombre de un fichero de texto al usuario e indica si todas sus lneas tienen menos de 60 caracteres. 12. Dada una lista de palabras almacenada (una palabra por lnea) en el fichero palabras, escribe proceso21 que muestre el nmero de palabras no repetidas.
SISTEMAS INFORMTICOS
SISTEMAS OPERATIVOS MULTIUSUARIO: LINUX 37
13. Escribe proceso22 que recibe un directorio como argumento y muestra por pantalla los ficheros con extensin .sh que contiene (sin usar el mandato ls). 14. Escribe proceso23 que modifique el proceso anterior comprobando que se ha recibido un directorio como argumento; si no es as, que lo solicite por teclado (tantas veces como sea necesario hasta disponer de un dato vlido). 15. Escribe proceso24 que solicita un cdigo de usuario (uid) e indica si ese usuario est conectado o no. 16. Escribe proceso25 que reciba un nmero como argumento e indique si es capica. 17. Escribe proceso26 que reciba tres argumentos: el primero ser un carcter cualquiera, el segundo un nmero entre 1 y 60, y el tercero un nmero entre 1 y 10. El script debe dibujar por pantalla tantas lneas como indique el argumento 3, cada lnea formada por tantos caracteres (argumento 1) como indique el nmero indicado en argumento 2. 18. Escribe proceso27 que cuenta cuntos ficheros y cuntos directorios hay en el directorio pasado como argumento. 19. Escribe proceso28 que solicita el nombre de un directorio e indica qu fichero de los contenidos en l tiene ms lneas. 20. Escribe proceso29 que al pasarle un fichero o directorio como argumento devuelva su tamao en MB.