Anda di halaman 1dari 40

SISTEMAS INFORMTICOS

Sistemas operativos multiusuario:


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.

Anda mungkin juga menyukai