Tema 7 S.O

40
8/16/2019 Tema 7 S.O http://slidepdf.com/reader/full/tema-7-so 1/40 29/4/2016 educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=19280 http://educacionadistancia.juntadeandalucia.es/cur sos/blocks/r ecopil a/r ecopila.php?i d= 19280 1/40 Sistemas operativos libres II: script.  Iván y Marta en su empresa de prácticas han tenido que instalar un servidor Linux, para optimizar el trabajo del sistema operativo y facilitar el trabajo a los usurarios y usuarias. Una vez instalado van a necesitar realizar ciertas tareas administrativas adicionales, las de administración del sistema y otras útiles para cualquier usuario o usuaria como la instalación de nuevo software, la actualización del sistema operativo, la instalación o uso de los servicios del sistema, mejorar el rendimiento, etc. Ya conoces la terminal de Windows, ahora te voy a enseñar el manejo de la shell de Linux. Shell que en castellano significa concha, es el intérprete de comandos del sistema. Es una interfaz de texto de altas prestaciones, que te sirve fundamentalmente para tres cosas: 1. Administra el sistema operativo. 2. Lanza aplicaciones. 3. Interactúa con ellas y como entorno de programación. El shell es tanto un intérprete de comandos u órdenes, como un lenguaje de programación. Sobre él vas a poder ejecutar órdenes con las que puedes crear programas, que se llaman script y ejecutar comandos para administrar el sistema operativo. Caso práctico

Transcript of Tema 7 S.O

Page 1: Tema 7 S.O

8/16/2019 Tema 7 S.O

http://slidepdf.com/reader/full/tema-7-so 1/40

29/4/2016 educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=19280

http://educacionadistancia.juntadeandalucia.es/cur sos/blocks/r ecopil a/r ecopila.php?i d= 19280 1/40

Sistemas operativos libres II: script.

Iván y Marta en su empresa de prácticas han tenido queinstalar un servidor Linux, para optimizar el trabajo delsistema operativo y facilitar el trabajo a los usurarios yusuarias. Una vez instalado van a necesitar realizar ciertastareas administrativas adicionales, las de administración delsistema y otras útiles para cualquier usuario o usuaria comola instalación de nuevo software, la actualización del sistemaoperativo, la instalación o uso de los servicios del sistema,mejorar el rendimiento, etc.

Ya conoces la terminal de Windows, ahora te voy a enseñar el manejo de la shell de Linux.Shell que en castellano significa concha, es el intérprete de comandos del sistema.Es una interfaz de texto de altas prestaciones, que te sirve fundamentalmente para tres cosas:

1. Administra el sistema operativo.2. Lanza aplicaciones.3. Interactúa con ellas y como entorno de programación.

El shell es tanto un intérprete de comandos u órdenes, como un lenguaje de programación. Sobre él vas apoder ejecutar órdenes con las que puedes crear programas, que se llaman script y ejecutar comandospara administrar el sistema operativo.

Caso práctico

Page 2: Tema 7 S.O

8/16/2019 Tema 7 S.O

http://slidepdf.com/reader/full/tema-7-so 2/40

29/4/2016 educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=19280

http://educacionadistancia.juntadeandalucia.es/cur sos/blocks/r ecopil a/r ecopila.php?i d= 19280 2/40

1.- La shell y sus comandos.

En el aula Iván y Marta tuvieron su primer encuentro con lashell, en un principio pensaron que no les iba a hacer falta enel mundo laboral.

En las empresas de prácticas han visto que pueden llegar atrabajar con Red Hat, Ubuntu y Knoppix. Por ello, para hacer una labor administrativa básica se ven en la dificultad de queen cada distribución tienen que estudiar el entorno gráfico,con los cambios que cada distribución tiene.

Esto, lo han solucionado fácilmente, pues se hanacostumbrado a trabajar con comandos de texto, y así no necesitan trabajar con el entornográfico, van a tiro hecho usando comandos.

Vamos a entrar en el mundo de la línea de comandos de Linux, verás que es muy flexible y potente, y notan complicado como pudiera parecer en un principio.

Caso práctico

Page 3: Tema 7 S.O

8/16/2019 Tema 7 S.O

http://slidepdf.com/reader/full/tema-7-so 3/40

29/4/2016 educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=19280

http://educacionadistancia.juntadeandalucia.es/cur sos/blocks/r ecopil a/r ecopila.php?i d= 19280 3/40

1.1.- Antecedentes históricos.

La shell te permite interactuar con el kernel a través de la interpretación de los comandos que escribesen la línea de comandos, o a través de los scripts.

Hay varias shell, la primera shell fue programada por Steven Bourne, a ésta se le llama sh o bsh, es una shelllimitada y usa una sintaxis de comandos usada en los

primeros sistemas UNIX.Cronológicamente, la siguiente shell fue la c-shell o csh,como su nombre indica usa comandos muy parecidos allenguaje de programación C.En 1986, David Korn juntó lo mejor de la bourne shell y lac-shell y programó la korn-shell o ksh.En la mayoría de los sistemas Linux, viene incorporadapor defecto la shell bash de Bourne Again Shell, En referencia al inventor de la primera shell. Estashell posee toda la funcionalidad de sh con características avanzadas de C.

Por eso, si creamos cualquier script .sh correrá perfectamente en la shell bash.La shell bash fue programada por desarrolladores del proyecto GNU.

Para acceder al modo texto o a la terminal puedes ir Aplicaciones>Accesorios>Terminal.

Si quieres saber las shells que tienes en tu distribución GNU/Linux sólo tienes que abrir el fichero shellsdel directorio /etc para ello escribe en la terminal:$cat /etc/shells

La shell bash:

Debe su nombre a Steven Bourne.

Se debe a David Korn.

No existe.

En este enlace puedes ver una página muy completa con un manual del shell bash muy completo.

Manual de shell bash. (1.38 MB)

Autoevaluación

Para saber más

Page 4: Tema 7 S.O

8/16/2019 Tema 7 S.O

http://slidepdf.com/reader/full/tema-7-so 4/40

29/4/2016 educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=19280

http://educacionadistancia.juntadeandalucia.es/cur sos/blocks/r ecopil a/r ecopila.php?i d= 19280 4/40

1.2.- Generalidades sobre introducción de comandos.

Como ya sabrás la sintaxis de las órdenes es la siguiente:$orden [-modificadores] [argumentos]

La orden indica al intérprete de comandos la acción a realizar.Los modificadores u opciones se introducen precedidos del carácter – guión.Los argumentos son caracteres que se utilizan como entrada del comando. El argumento puede ser

un archivo o un directorio. Antes de ver los comandos básicos, te voy a enseñar distintos modos de poder ejecutar varioscomandos.

En secuencia. Separados por punto y coma. Se ejecuta un comando detrás de otro en primer plano o foreground.$ comando1 ; comando2 ; comando3

En segundo plano. Separados o el último finalizado por el carácter ampersand &. Cadacomando terminado por este carácter se ejecuta en segundo plano o background, es decir, no seespera a su terminación para continuar.$ comando 1& comando2 & comando3 &

Mezcla de comandos en primer y segundo plano. Los que acaban en punto y coma obligan a losque les siguen, a esperar a que terminen. Los que acaban en & se lanzan en segundo plano y sesiguen ejecutando los siguientes.

$ comando1 ; comando2 & comando3 ; comando4 &comando5...

Para ver el listado de comandos, puedes escribir en la terminal elcomando help. La ayuda de un comando la puedes obtener dedistintas maneras con info, help o man (acrónimo de manual).

Otra ayuda con la que cuentas es la opción de autocompletar ,para ello, empiezas a escribir en la terminal y a continuación

pulsas la tecla de tabulación, con la que se completará elnombre.

Para introducir comandos, ¿Sólo se puede introducir uno por línea?

Verdadero.

Falso.

Autoevaluación

Page 5: Tema 7 S.O

8/16/2019 Tema 7 S.O

http://slidepdf.com/reader/full/tema-7-so 5/40

29/4/2016 educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=19280

http://educacionadistancia.juntadeandalucia.es/cur sos/blocks/r ecopil a/r ecopila.php?i d= 19280 5/40

1.3.- Redireccionamiento y tuberías.

Redirección de la salida por defecto.Los resultados de un comando en pantalla pueden redireccionarse a unfichero de dos formas distintas:

Borrando el fichero si ya existía, en caso contrario, lo creanuevo:

$ comando > fichero Añadiendo la información al fichero si ya existía, en casocontrario, lo crea nuevo:$ comando >> fichero

Tuberías o pipelinesLos resultados de un comando en pantalla pueden redireccionarse a la entrada de otro comandoseparándolos con el carácter de tubería o pipe: |. Sólo el último comando de una tubería muestra susresultados en pantalla (que también podrían redireccionarse a un fichero).$ comando1 | comando2 | ... | comandoN

Situaciones en las que la salida de un comando se utiliza como la entrada de otro son muy frecuentes en

la práctica. Por ejemplo, supón que deseas obtener un listado ordenado alfabéticamente con informaciónacerca de todos los usuarios conectados actualmente en la máquina. El comando who permite obtener lainformación acerca de los usuarios conectados y que sort puede ordenarla alfabéticamente. Una posiblesolución es:$ who > tmp$ sort < tmpusuario1 :0 Sep 09 19:53usuario2 :1 Sep 09 15:45$ rm tmpEn este caso el fichero tmp guarda de forma temporal la información proporcionada por who antes de usar el comando sort. Una forma simplificada de hacer esto mismo es usando tuberías. Tal y como lo ves acontinuación:$ who | sortusuario1 :0 Sep 09 19:53usuario2 :1 Sep 09 15:45

El efecto es similar a la creación de un archivo temporal, con la única diferencia de que el uso de lastuberías es mucho más eficiente.

Cuando usas el comando > fichero:

Crea un fichero nuevo o sobreescribe lo que tenía.

Estas añadiendo el resultado del comando a un fichero ya creado.

La salida de un comando es la entrada de otro.

Autoevaluación

Page 6: Tema 7 S.O

8/16/2019 Tema 7 S.O

http://slidepdf.com/reader/full/tema-7-so 6/40

29/4/2016 educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=19280

http://educacionadistancia.juntadeandalucia.es/cur sos/blocks/r ecopil a/r ecopila.php?i d= 19280 6/40

1.4.- Usuarios del sistema.

En el proceso de instalación del sistema operativo Linux, creaste un usuario, éste es el superusuario oadministrador o usuario root (utilizamos el término usuario en el sentido informático de persona que manejaun ordenador o aplicación informática). Este usuario cuenta con todos los privilegios sobre el sistema.Tiene acceso total a todo el sistema, se encarga de la administración del mismo, actualización ymantenimiento.

También puedes crear usuarios normales, que se conectarán al sistema introduciendo su nombre deusuario y contraseña. Son los usuarios habituales del sistema, los que utilizarán los recursos de éste.

También están los usurarios del sistema, que no son usuarios en sentido físico, sino que se generan alinstalar algún servicio.

Los usuarios se diferencian por su número Identificador de Usuario o UID (Acrónimo de User Identificator). Algunas características son:

El usuario root se identifica porque su UID es 0.Los usuarios del sistema tienen UID entre 1 y 1000.Los usuarios normales tienen asignados UID a partir de 1000.

La información sobre los usuarios del sistema se almacena en /etc/passwd. Para ver su contenido puedesescribir en la terminal:$cat /etc/passwd.

Cuando editas el fichero /etc/group da un listado con los grupos del sistema.

En esta presentación puedes ver la información de los usuarios y grupos del sistema.

Información de usuarios y grupos.

Para saber si el sistema operativo está preparado para queescribas un comando lo puedes ver mediante un indicador desistema o prompt.Generalmente este prompt termina en $, además de mostrartealguna información:

Como dónde estás.El nombre de tu máquina.

El nombre de usuario.Etc.

Esta información la puedes cambiar. Si el usuario es elsuperusuario, el indicador o prompt termina con el símbolo # almohadilla.

Siempre que realices una tarea administrativa el sistema te pedirá la contraseña del superusuario.

En Linux tienes el comando SU (acrónimo de Switch User) para cambiar de usuario o el comando SUDO(Acrónimo de Super User DO) para ejecutar comandos como superusuario.

Si escribes SUDO SU en la terminal, verás que cambia el prompt y ahora termina en almohadilla. Y puedesrealizar tareas de administrador.

Debes conocer

Page 7: Tema 7 S.O

8/16/2019 Tema 7 S.O

http://slidepdf.com/reader/full/tema-7-so 7/40

29/4/2016 educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=19280

http://educacionadistancia.juntadeandalucia.es/cur sos/blocks/r ecopil a/r ecopila.php?i d= 19280 7/40

Cuando trabajas como superusuario el prompt ¿acaba en almohadilla #?

Verdadero.

Falso.

Autoevaluación

Page 8: Tema 7 S.O

8/16/2019 Tema 7 S.O

http://slidepdf.com/reader/full/tema-7-so 8/40

29/4/2016 educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=19280

http://educacionadistancia.juntadeandalucia.es/cur sos/blocks/r ecopil a/r ecopila.php?i d= 19280 8/40

1.5.- Directorios.

Con los directorios puedes almacenar información de formaordenada. Es una forma de estructurar la informaciónalmacenada en nuestro soporte de almacenamiento.

Vas a ver una lista de comandos que te serán útiles cuandoquieras ver el contenido de un fichero, copiar ficheros,

eliminaros, moverles y movernos por la estructura jerárquica oárbol de directorios.

$PWD (Acrónimo de Print Working Directory). Muestra latrayectoria absoluta del directorio de trabajo.$LS ( Acrónimo de list): Enumera al contenido de un directorio, mostrando el nombre y extensión decada archivo, el tamaño en bytes, la fecha y hora en que se creó o modificó por última vez, y lossubdirectorios que cuelgan de él.$CHDIR o CD (Acrónimode Change Directory). Con este comando podemos movernos por laestructura de directorios creada. Sirve para subir o bajar por la estructura jerárquica. Si ejecutamosel comando CD sin parámetros, muestra el directorio y la unidad activa en la que estamos situados.$MKDIR (Acrónimo de Make directory). Crea directorios por debajo del actual.-p crea todos los directorios intermedios necesarios.

$RMDIR o RD (Acrónimo de Remove Directory). Con este comando podemos eliminar directorios encualquier parte de la estructura jerárquica.Para borrar directorios hemos de tener en cuenta que sólo se puede borrar un directorio si estávacío.Con el modificador -r borra las subcarpetas.

En este vídeo puedes ver algunos comandos en Ubuntu.

Algunos comandos en Ubuntu.

1. Por ejemplo, vas a crear dos carpetas: Carpeta1 y Carpeta2 en tu directorio de trabajo. Supón que eldirectorio de trabajo es /home/usuario. Para ello, escribe en la terminal:$mkdir Carpeta1 Carpeta2

2. Comprueba que las has creado haciendo un listado de tu directorio de trabajo. Para ello escribes:$ls

3. Si quieres ir a la carpeta Carpeta2, escribe en la terminal:$cd Carpeta2Verás que te ha cambiado el prompt.

4. Para volver al directorio anterior, escribe en la terminal:$cd ..

Relaciona los comandos con lo que muestran, escribiendo el número asociado a lo quehace el comando en el hueco correspondiente.

Ejercicio de relacionar

Comando Relación Resultado

LS 1.- Crea directorios.

Para saber más

Autoevaluación

Page 9: Tema 7 S.O

8/16/2019 Tema 7 S.O

http://slidepdf.com/reader/full/tema-7-so 9/40

29/4/2016 educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=19280

http://educacionadistancia.juntadeandalucia.es/cur sos/blocks/r ecopil a/r ecopila.php?i d= 19280 9/40

CD 2.- Lista ficheros de un directorio.

MKDI R 3. - Borra c arpetas y s ubc arpet as.

Rm -r 4.- Cambia de directorio.

Enviar

Page 10: Tema 7 S.O

8/16/2019 Tema 7 S.O

http://slidepdf.com/reader/full/tema-7-so 10/40

29/4/2016 educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=19280

http://educaci onadi stanci a.j untadeandal uci a.es/cursos/bl ocks/recopi la/recopi la.php?i d= 19280 10/40

1.6.- Ficheros.

Vas a ver una lista de comandos que te serán útiles cuandoquieras trabajar con ficheros y obtener listados de los mismos,realizar copias, reubicarles, etc.

$ ls (acrónimo de list). Lista de ficheros del directorio (por defecto el actual).

-l Con detalles, lista los atributos.-a Incluye ficheros ocultos (Los que comienzan conel carácter punto ".").-R Lista recursivamente los contenidos de losdirectorios.-al También puedes combinar los parámetros.

$ cat (Acrónimo de concatenate). Muestra el contenido de los ficheros.$ more fich1 [fich2] ... Muestra el contenido página a página. Un uso muy típico del comando morees como terminación de una tubería, para mostrar los resultados de otro comando página a página.Por ejemplo: ps -a -x -l | more$ cp fichOrigen fichDestino. CP es acrónimo de copy. Copia el fichero origen con el nuevo nombredestino sobreescribiendolo si existía.$ mv fichOrigen fichDestino. Mueve el fichero. Cambia el nombre y/o la localización.

$ file fich. Indica de que tipo es el fichero (Ejecutable, texto, ...).$ sort [fich] Ordena el fichero, o la entrada por defecto. Consulta sus opciones en la página demanual. El nombre de fichero es opcional. Si no hay fichero, busca en la entrada por defecto. Por eso, se puede utilizar como parte de una tubería (filtro).

Por ejemplo, crea un fichero con la salida del comando ls. Para ello, escribe en la terminal:$ls > fichero1

Para ver el contenido del fichero fichero1 que acabas de crear, escribe en la terminal:$cat fichero1

Ahora si quieres copiar el fichero fichero1 en Carpeta1, escribe en la terminal:$cp fichero1 /home/usuario/Carpeta1

En este vídeo puedes ver cómo crear carpetas.

Crear carpetas.

Debes conocer

Page 11: Tema 7 S.O

8/16/2019 Tema 7 S.O

http://slidepdf.com/reader/full/tema-7-so 11/40

29/4/2016 educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=19280

http://educaci onadi stanci a.j untadeandal uci a.es/cursos/bl ocks/recopi la/recopi la.php?i d= 19280 11/40

2.- Comandos de administración básica.

Desde el servidor de Linux que han instalado en la empresa

Iván va a tener que hacer labores administrativas, por ejemplo, va a tener que dar de alta a un grupo de usuarios, yademás, tiene que hacer que pertenezcan al mismo grupo,para luego facilitar el poner o quitar permisos a todo el grupo.Como el servidor sólo tiene entorno de texto, esta tarea latiene que realizar mediante comandos.

En este enlace puedes ver un resumen de comandos con sus parámetros más usuales.

Resumen de comandos.

En este enlace puedes ver una tabla comparativa de los comandos más usuales de DOS y deLinux.

Comparación de comandos. (0.10 MB)

Caso práctico

Debes conocer

Page 12: Tema 7 S.O

8/16/2019 Tema 7 S.O

http://slidepdf.com/reader/full/tema-7-so 12/40

29/4/2016 educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=19280

http://educaci onadi stanci a.j untadeandal uci a.es/cursos/bl ocks/recopi la/recopi la.php?i d= 19280 12/40

2.1.- Comandos sobre permisos.

Ya sabrás que los permisos más frecuentes que puede tener un fichero son de lectura (r), escritura (w) y ejecución (x).

Permiso de lectura: Solamente se permite la lectura, nola modificación. En el caso de carpetas, no se permite lacreación de archivos nuevos ni de subcarpetas.

Permiso de escritura: Se permite la lectura y lamodificación. En caso de carpetas, se pueden crear archivos y subcarpetas.Permiso de ejecución: Este permiso solamente tiene sentido en caso de archivos ejecutables(programas) y carpetas. Si este permiso está activo para el usuario concreto, éste podrá ejecutar elprograma.

Cuando haces un ls –l en la terminal, la información de una de sus líneas cualquiera es:-rwxr-xr-x1 primero primero4096 2011-05-12 ficheroComo puedes observar, los permisos están separados en tres partes:

Propietario, son los permisos del propietario de la carpeta.Grupo, son permisos sobre la carpeta del grupo que se indica a continuación.Otros, son permisos del resto de usuarios sobre la carpeta.

Para cambiar los permisos puedes usar los siguientes comandos:

$ chown usuario fich chown (acrónimo de Change Owner): Cambia el propietario de un fichero.$ chgrp grupo fich chgrp (acrónimo de change group): Cambia el grupo al que pertenece un fichero.$ chmod permisos fich chmod (acrónimo de change mode): Cambia los permisos de acceso delfichero añadiendo o quitando, o según se especifica en la cadena de permisos.

-u[+/-r][+/-w][+/-]x Añade o quita el permiso especificado para el usuario.-g[+/-r][+/-w][+/-]x Añade o quita el permiso especificado para el grupo.

Modificadores y argumentos para la orden chmod.

QuiénU: es el usuario creador.G: es el grupo al que pertenece el usuario.O: es el resto de usuarios del equipo.

Acción+-

R=4 es el permiso de lectura.w=2 es el permiso de escritura.x=1 es el permiso de ejecución.

Otra forma de modificar los permisos es mediante un númerooctal de tres cifras por cada grupo de permisos, este númerosurge de realizar la suma de los permisos que se les quierenasignar de acuerdo a los valores. r=4, w=2 y x=1.Por ejemplo, si quieres dar al fichero fichero1 todos los permisosa todos los usuarios, es decir, al usuario creador, al grupo al quepertenece este usuario y al resto de usuarios del sistema,escribe en la terminal una de las siguientes opciones:

$chmod 777 fichero1.$chmod ugo + rwx fichero1.

Puedes ver sus nuevos permisos escribiendo en la terminal:$ file fichero1O bien con ls –l.

En este enlace puedes ver un vídeo con el manejo del comando chmod.

Comando chmod.

Para saber más

Page 13: Tema 7 S.O

8/16/2019 Tema 7 S.O

http://slidepdf.com/reader/full/tema-7-so 13/40

29/4/2016 educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=19280

http://educaci onadi stanci a.j untadeandal uci a.es/cursos/bl ocks/recopi la/recopi la.php?i d= 19280 13/40

El archivo permisos.txt tiene 751 permisos:

El usuario, el grupo y el resto de usuarios tienen permiso de lectura solamente.

El usuario tiene todos los permisos, el grupo de lectura y ejecución y el resto de usuarios

sólo ejecución.

Tienen todos solamente permisos de ejecución.

En este enlace puedes ver una presentación con las distintas maneras de cambiar los permisos

de un fichero.

Cambiar los permisos de un fichero.

Autoevaluación

Debes conocer

Page 14: Tema 7 S.O

8/16/2019 Tema 7 S.O

http://slidepdf.com/reader/full/tema-7-so 14/40

29/4/2016 educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=19280

http://educaci onadi stanci a.j untadeandal uci a.es/cursos/bl ocks/recopi la/recopi la.php?i d= 19280 14/40

2.2.- Comandos de utilidades.

Hay muchos más comandos, ahora vas a ver una serie de comandos que se usan a menudo en el testeodel equipo:

$ echo mensaje: muestra el mensaje en la pantalla.$ df (acrónimo de display free): Muestra la ocupación deldisco.

$du (acrónimo de disk usage): muestra la ocupación dedisco de cada uno de los ficheros.$date: muestra la fecha del sistema.$cal (acrónimo de calendary): muestra el calendario.$grep: busca las líneas de un fichero donde aparezca lacadena especificada.$lpr : manda a imprimir.$shutdown: apaga o reinicia el sistema.$uname: muestra información del sistema.$logname: muestra el usuario que se ha conectado.$apt-get: manipula paquetes.$at: programa tareas.

Por ejemplo, si escribes en la terminal:$shutdown –r +15

Apagarás el sistema en quince minutos a partir de este momento y se reiniciará después de que el cierrese haya completado.$shutdown –h now

Apaga el ordenador.

En este enlace puedes ver una página muy completa con los comandos de la shell. Nos puedenservir cuando tengamos que acceder al equipo en modo seguro.

Comandos del shell bash.

Relaciona los comandos con lo que muestran, escribiendo el número asociado a lo quehace el comando en el hueco correspondiente.

Ejercicio de relacionar

Comando Relación Resultado

ECHO 1.- Imprime un fichero.

DU 2.- Muestra un mensaje por pantalla.

DF 3. - Muestra la ocupac ión de los f icheros en disc o.

LPR 4.- Muestra el espacio disponible.

Enviar

Para saber más

Autoevaluación

Page 15: Tema 7 S.O

8/16/2019 Tema 7 S.O

http://slidepdf.com/reader/full/tema-7-so 15/40

29/4/2016 educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=19280

http://educaci onadi stanci a.j untadeandal uci a.es/cursos/bl ocks/recopi la/recopi la.php?i d= 19280 15/40

Page 16: Tema 7 S.O

8/16/2019 Tema 7 S.O

http://slidepdf.com/reader/full/tema-7-so 16/40

29/4/2016 educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=19280

http://educaci onadi stanci a.j untadeandal uci a.es/cursos/bl ocks/recopi la/recopi la.php?i d= 19280 16/40

2.3.- Comandos de red.

Vas a ver unos comandos muy usados en redes queseguramente te resultan familiares:

$ping: sirve para verificar la respuesta de nuestro host enla red.$whois: Permite obtener información sobre un

determinado dominio.$traceroute: Muestra el camino en tiempo real de unpaquete hasta llegar a su destino.$netstat: Proporciona información sobre nuestra red.-a: Muestra los puertos abiertos.

$ifconfig: Muestra la dirección IP del equipo.

Por ejemplo, para activar o desactivar dispositivos de red puedes usar los siguientes comandos:$ifconfig eth0 down$ifconfig eth0 up

Con esto si solo tienes una tarjeta de red (eth0) la desactivará y luego la activará.

Puedes probar también a escribir en tu terminal:$whois google.comY obtendrás información del dominio google.

Relaciona los comandos con lo que muestran, escribiendo el número asociado a lo que

hace el comando en el hueco correspondiente.Ejercicio de relacionar

Comando Relación Resultado

PING 1.- Muestra la IP.

IFCONFIG 2.- Muestra información sobre la red.

TRACEROUTE 3.- Muestra el camino de un paquete.

NETSTAT 4.- Comprueba la conexión.

Enviar

En este enlace puedes ver una página muy completa con los comandos de red en Linux.

Comandos de red en Linux.

Autoevaluación

Para saber más

Page 17: Tema 7 S.O

8/16/2019 Tema 7 S.O

http://slidepdf.com/reader/full/tema-7-so 17/40

29/4/2016 educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=19280

http://educaci onadi stanci a.j untadeandal uci a.es/cursos/bl ocks/recopi la/recopi la.php?i d= 19280 17/40

2.4.- Comandos de gestión de usuarios.

Vas a ver una serie de comandos muy usuales en laadministración básica de un equipo.

$useradd usuario (acrónimo de user add): añadeusuarios.-g grupo usuario: crea el usuario usuario perteneciente al grupo.

$userdel usuario (acrónimo de usr delete): elimina usuarios.-r: borra también toda la información de su directorio personal.

$passwd usuario: cambia la contraseña de un usuario.$groupadd nuevogrupo: para añadir un nuevo grupo.$groupdel nombre_del_grupo: para eliminar un grupo.$usermod: cambia varios atributos de usuarios.-g grupo usuario: cambia el grupo por defecto de un usuario.-G lista_de_grupos: para añadir el usuario a otros grupos.

$id: muestra el nombre y número de usuario y grupo/s al que pertenece.$whoami: muestra el nombre de usuario.

$who: muestra los nombres de los usuarios conectados al sistema, sus terminales y la fecha/horade acceso.

En este enlace puedes ver un vídeo sobre administrar usuarios y grupos desde la terminal enUbuntu.

Administración de usuarios y grupos desde la terminal en Ubuntu.

Por ejemplo, para crear un nuevo usuario, como es una tarea de administrador, escribe en la terminal:$ sudo useradd usuarioNuevo

Puedes comprobar que se ha creado un nuevo usuario desde el entorno gráfico.En Sistema > Administración > Usuarios y Grupos, o bien, viendo el contenido del fichero passwd,escribiendo en la terminal:$cat /etc/paswwd

Comprueba que en la última línea hay un nuevo usuario, además, que como UID asignado tiene uno mayor que 1000, ya que es un usuario normal. Para ver el número UID también puedes escribir en la terminal:

$id usuarioNuevo

En el siguiente vídeo vas a ver cómo crear un usuario desde la terminal como superusuario.

Crear usuarios desde la terminal.

Para saber más

Debes conocer

Autoevaluación

Page 18: Tema 7 S.O

8/16/2019 Tema 7 S.O

http://slidepdf.com/reader/full/tema-7-so 18/40

29/4/2016 educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=19280

http://educaci onadi stanci a.j untadeandal uci a.es/cursos/bl ocks/recopi la/recopi la.php?i d= 19280 18/40

Relaciona los comandos con lo que muestran, escribiendo el número asociado a lo quehace el comando en el hueco correspondiente.

Ejercicio de relacionar

Comando Rel ación Resultado

USERADD 1.- Lista los procesos.

PS 2.- Muestra los usuarios.

WHO 3.- Mata procesos.

KILL 4.- Añade usuarios.

Enviar

Toda la información sobre usuarios, grupos y contraseñas se guarda en los archivos:

/etc/passwd: Información sobre usuarios. /etc/group: Información sobre grupos. /etc/shadow: contraseñas cifradas.

En estos ficheros se almacena la información línea a línea (cada una es un usuario o un grupo).

Page 19: Tema 7 S.O

8/16/2019 Tema 7 S.O

http://slidepdf.com/reader/full/tema-7-so 19/40

29/4/2016 educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=19280

http://educaci onadi stanci a.j untadeandal uci a.es/cursos/bl ocks/recopi la/recopi la.php?i d= 19280 19/40

2.5.- Comandos de gestión de procesos.

Tendrás la oportunidad de administrar y gestionar procesos enejecución, mediante comandos específicos para su tratamiento.Como aplicación más interesante de las señales se estudiará lasincronización de procesos. Se estudiará también latemporización de procesos. Con los siguientes comandos podráver, cancelar y priorizar procesos en ejecución.

$ ps (acrónimo de process status): muestra la lista deprocesos con sus PID (Identificación del proceso) y

nombre. Algunos de los parámetros que admite son:-a Muestra también procesos de otros usuarios.-x Muestra también procesos sin terminal de control (daemons).-u usuario Muestra los procesos de un usuario específico.-f Muestra los procesos en forma de árbol indicando de forma gráfica quién es hijo de quién.-l Con todos los detalles (S: estado (S - Sleep, R - Running, T - Stopped), UID: Identificacióndel usuario que ha lanzado el proceso, PID: Identificación del proceso PPID: identificacióndel padre del proceso, valor de nice, SZ: uso de memoria y CPU, etc.).

$ kill: Termina procesos.

$top. Muestra en tiempo real la situación de los procesos.

Por ejemplo, si escribes en la terminal:$psObtendrás información sobre el PID, TTY, TIME y CMD, ¿y qué es eso?, pues verás:

PID: Cada proceso obtiene un número de identificación único, este es el PID.TTY: Es la terminal asociada al proceso, también puede ser otro dispositivo de entrada.TIME: El tiempo que el proceso ha estado en ejecución.CMD: El nombre del comando que está siendo ejecutado.

Si ahora escribes:$ps –A

Verás todos los procesos que se están ejecutando.

Page 20: Tema 7 S.O

8/16/2019 Tema 7 S.O

http://slidepdf.com/reader/full/tema-7-so 20/40

29/4/2016 educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=19280

http://educaci onadi stanci a.j untadeandal uci a.es/cursos/bl ocks/recopi la/recopi la.php?i d= 19280 20/40

2.6.- Editores de texto.

Para ver el contenido de los ficheros puedes usar el comando cat, pero si, además, vas a querer modificarlos y cambiar algún valor en algún fichero de configuración, debes usar un editor de textos.

Algunos de los editores de texto más usados en Linux son:

Gedit: es el editor por defecto en modo gráfico en distribuciones GNOME.Nano: es el editor por defecto en modo texto.

Pico: editor básico.Vi ( Acrónimo de visual): editor de texto característico de Linux, tiene dos modos de trabajo:Modo comando o dos puntos.Modo introducción de texto.

Cuando abres el editor vi desde la terminal, escribiendo vi, estás en modo comando, para poder introducir texto tienes que pasar a modo de insertar texto, para ello pulsa :i (dos puntos i). Ahora escribe el textoque quieras que contenga el fichero y para salir pulsas control + c y tecleas :wq y el nombre del archivo.

Cuando estás en modo comando o dos puntos tienes unaserie de parámetros que puedes usar, como son:

Para insertar :iPara borrar :xPara buscar :fgPara salir sin grabar :q!Para salir y guardar los cambios :q

Para crear un fichero de texto, también puedes usar el comandocat, para ello, escribes en la consola cat > nombre_del_ficheroy después escribes el texto que quieras que contenga el fichero y para salir pulsas control+d.

En el siguiente vídeo vas a ver un uso básico del editor vi.

Manejo del editor vi.

El editor vi:

Es un editor gráfico.

Es equivalente a gedit.

Trabaja en modo dos puntos y modo insertar texto.

En este enlace puedes ver una página sobre los comandos y manejo del editor vi.

Debes conocer

Autoevaluación

Para saber más

Page 21: Tema 7 S.O

8/16/2019 Tema 7 S.O

http://slidepdf.com/reader/full/tema-7-so 21/40

29/4/2016 educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=19280

http://educaci onadi stanci a.j untadeandal uci a.es/cursos/bl ocks/recopi la/recopi la.php?i d= 19280 21/40

Editor vi.

Page 22: Tema 7 S.O

8/16/2019 Tema 7 S.O

http://slidepdf.com/reader/full/tema-7-so 22/40

29/4/2016 educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=19280

http://educaci onadi stanci a.j untadeandal uci a.es/cursos/bl ocks/recopi la/recopi la.php?i d= 19280 22/40

3.- Script de Linux.

Nora e Iván han estado probando Ubuntu en una máquina

virtual y han decidido instalarlo en su equipo real, ya quecuando instaló Windows 7 se dejó una partición libre.

Ha aprovechado esta partición para ello. Ahora Nora tiene enel equipo de su casa dos sistemas operativos en la máquinareal: windows 7 y Ubuntu.

Cuando enciende el equipo le aparecen muchas opcionespara arrancar el equipo, y si no selecciona ninguna, carga por defecto Ubuntu y el resto de la familia quiere que por defecto

arranque Windows 7.

Con los conocimientos que ya tiene va a editar el gestor de arranque, que es un shell script que

se ejecuta al iniciar el sistema y le va a modificar, entendiendo lo que hace el script en cadalínea.

En Linux hay unos archivos, llamados script o guiones de la shell, que contienen órdenes o comandos quese van ejecutando. Algunos de estos shell script se ejecutan al iniciarse el sistema, como el gestor dearranque. Otros, los puede crear el propio usuario para mecanizar tareas que ejecute con frecuencia.

En este apartado vas a aprender a realizar pequeños shell scripts.

Caso práctico

Page 23: Tema 7 S.O

8/16/2019 Tema 7 S.O

http://slidepdf.com/reader/full/tema-7-so 23/40

29/4/2016 educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=19280

http://educaci onadi stanci a.j untadeandal uci a.es/cursos/bl ocks/recopi la/recopi la.php?i d= 19280 23/40

3.1.- ¿Qué es un script?

Un script de comandos es un fichero de texto cuyas líneas soncomandos ejecutables, tal y como las escribirías en la línea decomandos del shell. Los scripts pueden ejecutarse como sifueran un nuevo comando. Las líneas que empiezan con elcarácter # son comentarios y son ignoradas por el shell alejecutar el script.El intérprete de comandos o "shell" es también un lenguaje deprogramación completo. La programación de shell se usa muchopara realizar tareas repetidas con frecuencia.En Linux cuando hagas un script se suelen comenzar con unalínea que indica la shell con la que se va a ejecutar el script. P puede ser:

#!/bin/bash#!/bin/sh#!/bin/ksh

Cualquier otra línea del script que comience por # es tomada como un comentario, éstos se deben añadir con el fin de facilitar la lectura del programa.

Para comenzar a crear un script tienes que:Escribir los comandos en un fichero de texto (con un editor de texto simple o redireccionando con cat >nombre_script).

Escribir los comandos.Grabar o guardar.Cambiar los permisos del fichero para que tenga permiso de ejecución (con el comando chmod).Ejecutarle.

Ahora para ejecutarle tienes varias opciones:Escribir en la línea de comandos el nombre del fichero de script, como si fuera un nuevo comando. El shellbusca el fichero en los directorios que están incluidos en la variable PATH. Si el directorio actual '.' no está

en el PATH, para ejecutar el script hay que indicar donde se encuentra, por ejemplo: . /miScript

La invocación (ejecución) del archivo puede realizarse:

1. Dando el nombre de archivo como argumento a bash.$bash miScript

2. Invocándolo directamente como un comando.$miScript

3. Puede requerirse indicar una vía absoluta o relativa, o referirse al directorio actual como$./miScript

4. Si el directorio actual no está contenido en la variable PATH.

$source miScript

En la siguiente presentación vas a ver cómo crear un script.

Crear un script.

Debes conocer

Autoevaluación

Page 24: Tema 7 S.O

8/16/2019 Tema 7 S.O

http://slidepdf.com/reader/full/tema-7-so 24/40

29/4/2016 educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=19280

http://educaci onadi stanci a.j untadeandal uci a.es/cursos/bl ocks/recopi la/recopi la.php?i d= 19280 24/40

Para ejecutar un script:

Con $.

Un script no se puede ejecutar.

Con ./ nombre_script.

Con #.

Page 25: Tema 7 S.O

8/16/2019 Tema 7 S.O

http://slidepdf.com/reader/full/tema-7-so 25/40

29/4/2016 educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=19280

http://educaci onadi stanci a.j untadeandal uci a.es/cursos/bl ocks/recopi la/recopi la.php?i d= 19280 25/40

3.2.- Variables.

Vas a poder usar variables como en cualquier lenguaje deprogramación. Las variables se pueden definir como un espacioen la memoria del sistema que puede contener un valor o no.Una variable de bash puede contener un número, un carácter ouna cadena de caracteres. No necesitas declararla.

Para asignar variables usamos el símbolo de igual =, o con elcomando set.

Para obtener el valor de la variable debemos precederla por $, es decir, el carácter $ nos permite expandir el valor de una variable dentro de una cadena.

Si asignamos a una variable algo entre paréntesis, lo que hacemos es crear una matriz del número deelementos que hay entre paréntesis o entre comillas.

$colores = (rojo amarillo azul verde blanco)Si quieres que se introduzcan las variables desde la línea de comandos, solicitando información al usuarioo usuaria usa el comando read (del inglés leer ). Este comando tiene como propósito solicitar información alusuario o usuaria. Su ejecución captura las digitaciones realizadas, hasta obtener un carácter nueva línea

(tecla Enter ).

Existen una serie de variables predefinidas por el shell quecontienen valores útiles. Por ejemplo:

$PWD, el nombre del directorio actual.$HOME, el nombre del directorio raíz del usuario.$PATH, una lista de directorios separados por “:” dondeel shell busca los comandos.

El valor de cualquiera de ellas se puede ver en todo momento con el comando echo. Por ejemplo:$ echo $HOME

Para introducir variables desde la terminal. ¿Usas el comando read?:

Verdadero.

Falso.

Autoevaluación

Page 26: Tema 7 S.O

8/16/2019 Tema 7 S.O

http://slidepdf.com/reader/full/tema-7-so 26/40

29/4/2016 educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=19280

http://educaci onadi stanci a.j untadeandal uci a.es/cursos/bl ocks/recopi la/recopi la.php?i d= 19280 26/40

3.3.- Parámetros.

Tienes que saber que los parámetros son el conjunto de datosadicionales colocados detrás del nombre de una orden, es decir,recibida por un archivo por lotes.Quizá en ocasiones el usuario o usuaria desee crear un programay ejecutarlo con diferentes conjuntos de datos.Estos parámetros se introducen desde el símbolo del

sistema, después del nombre del script. Al ejecutar un script se le pueden pasar argumentos. Cada cadena (separada por espacios) que se leindique detrás del nombre del fichero en la línea de comandos es un argumento (si se desea pasar unacadena que contiene espacios como un sólo argumento hay que encerrarla entre comillas).

Dentro del script, las variables $1, $2, $3, ... se substituyen por la cadena correspondiente a cadaparámetro.

$0: es la llamada al script.$1: es el primer parámetro que se pasa.$2: es el segundo, etc.$#: es el número de parámetros que se pasan.$@ y $*: son todos los parámetros, que se listan de una vez, en el orden que se han pasado.$$: pid que tiene nuestro script. Número de procesos del shell.$?: es el valor de salida del último comando ejecutado. En un "exit 1", se devolvería el valor 1. Sitodo sale bien, se devuelve el valor 0.$_: nos da el último argumento que hemos utilizado.

El parámetro $2:

Es el segundo parámetro.

Es el primer parámetro.

Es la llamada al script.

Autoevaluación

Page 27: Tema 7 S.O

8/16/2019 Tema 7 S.O

http://slidepdf.com/reader/full/tema-7-so 27/40

29/4/2016 educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=19280

http://educaci onadi stanci a.j untadeandal uci a.es/cursos/bl ocks/recopi la/recopi la.php?i d= 19280 27/40

3.4.- Comandos de programación.

El comando de programación: expr recibe números y operadoresaritméticos como argumentos, efectúa los cálculos indicados ydevuelve el resultado. Cada argumento debe estar separado por blancos. Opera sólo con números enteros y realiza lasoperaciones suma (+), resta (-), multiplicación (*), división entera(/), resto de división entera (%). Los símbolos * y / deben ser

escapados escribiendo \* y \/, al igual que los paréntesis, quedeben escribirse \( y \).El comando expr usa la convención del lenguaje C para ciertoy falso: 0 es falso, y distinto de 0 es cierto. No confundir con laconvención que toma el shell en sus valores true y false, que es la contraria.Expr también realiza operaciones lógicas de comparación, aceptando los operadores =, !=, >, <, >= y <=.El operador != es "no igual"; el ! se usa para negar.

True: Este comando no hace nada, sólo devuelve siempre 0, el valor verdadero. La ejecución correcta deun comando cualquiera devuelve 0.False: Este comando tampoco hace nada sólo devuelve siempre 1. Cualquier valor diferente de 0 se tomacomo falso. Las diversas condiciones de error de ejecución de los comandos devuelven valores diferentesde 0. Su significado es propio de cada comando.

Test: Este comando prueba condiciones y devuelve valor cierto (0) o falso (distinto de 0) según el criteriode cierto y falso del shell. Esto lo hace apto para usar en la condición de if. Tiene dos formasequivalentes.

test expresión[ expresión ]

Los espacios en blanco que hay entre la expresión y los corchetes son necesarios y debes ponerlessiempre.

¿Es equivalente test expresión o [ expresión ]?

Verdadero.

Falso.

Autoevaluación

Page 28: Tema 7 S.O

8/16/2019 Tema 7 S.O

http://slidepdf.com/reader/full/tema-7-so 28/40

29/4/2016 educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=19280

http://educaci onadi stanci a.j untadeandal uci a.es/cursos/bl ocks/recopi la/recopi la.php?i d= 19280 28/40

3.5.- Operadores de comparación.

El comando test nos permite llevar a cabo operaciones lógicassencillas con ficheros, cadenas y números enteros. El formato de estecomando estest expresionO de forma equivalente[ expresion ]

La expresión puede tener cualquiera de los formatos que se muestranen las siguientes tablas:Los operadores relacionales aritméticos son:

-lt: menor estricto que -le: menor o igual que -eq: igual que

-gt: mayor estricto que -ge: mayor o igual que -ne: no igual que

Comprobación de atributos de fichero.

Operador Verdad (TRUE) si:

-d fichero El fichero existe y es un directorio.

-e fichero El f ichero ex is te.

-f fichero El fichero existe y es un fichero regular (no un directorio, u otro tipo de fichero

especial).

-r fichero Tienes permiso de lectura en fichero.

-s fichero El fichero existe y no esta vacio.

-w fichero Tienes permiso de escritura en fichero.

-x fichero Tienes permiso de ejecución en fichero (o de búsqueda si es un directorio).

-O fichero Eres el dueño del fichero.

-G fichero El grupo del fichero es igual al tuyo.

fichero1 -ntfichero2

El fichero1 es más reciente que fichero2.

fichero1 -otfichero2

El fichero1 es más antiguo que fichero2.

Comparaciones de cadenas alfanuméricas

Operador Verdad (TRUE) si:

cadena1 = cadena2 cadena1 es igual a cadena2.

cadena1 != cadena2 cadena1 no es igual a cadena2.

cadena1 < cadena2 cadena1 es menor que cadena2.

cadena1 > cadena 2 cadena1 es mayor que cadena 2.

-n cadena1 cadena1 no es igual al valor nulo (longitud mayor que 0).

-z cadena1 cadena1 tiene un valor nulo (longitud 0).

Page 29: Tema 7 S.O

8/16/2019 Tema 7 S.O

http://slidepdf.com/reader/full/tema-7-so 29/40

29/4/2016 educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=19280

http://educaci onadi stanci a.j untadeandal uci a.es/cursos/bl ocks/recopi la/recopi la.php?i d= 19280 29/40

3.6.- Operaciones aritméticas.

Para realizar operaciones aritméticas se utiliza el comando expr, susintaxis es:expr ARG1 OPERACION ARG2.

Donde OPERACION puede ser:

+ Suma.- Resta./ División (barra invertida).Multiplicación.%resto.

Prueba a hacer los siguientes ejemplos en la terminal:

$ expr 10 + 1020$ x=10$ y=2$ expr $x / $y5$ resta=`expr $x - $y`$ mult=`expr $x (barra invertida)* $y`$ echo "$x menos $y vale $resta"10 menos 2 vale 8$ echo "La multiplicación de $x y $y es $mult"La multiplicación de 10 y 2 es 20

Tienesvarias formas de calcular valores dentro de un shell script. Para esto se utiliza una sintaxisespecial, y es muy importante que los valores de las variables que utilicen para hacer estos cálculos seannúmeros únicamente. La sintaxis para hacer operaciones aritméticas es la siguiente:$[expresión] o bien $((expresión))

Las operaciones que puedes realizar son:

suma $((1+1))resta $((2-1))multiplicación $((2*2))división $((2/2])otras como suma de bits, obtener el módulo, evaluación de igualdad, etc.

Prueba esto en la línea de comandos (o en una shell):$echo 1 + 1Si esperabas ver '2', quedarás desilusionado o desilusionada. La solución es ésta:$echo $((1+1))

Esto producirá una salida más 'lógica'. Esto se hace para evaluar una expresión aritmética. Tambiénpuedes hacerlo de esta manera:echo $[1+1]Si necesitas usar fracciones, u otras matemáticas, puede utilizar bc para evaluar expresiones aritméticas.Si ejecuta "echo $[3/4]" en la línea de comandos, devolverá 0, porque bash sólo utiliza enteros en susrespuestas. Si ejecuta "echo 3/4|bc -l", devolverá 0.75.

Page 30: Tema 7 S.O

8/16/2019 Tema 7 S.O

http://slidepdf.com/reader/full/tema-7-so 30/40

29/4/2016 educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=19280

http://educaci onadi stanci a.j untadeandal uci a.es/cursos/bl ocks/recopi la/recopi la.php?i d= 19280 30/40

3.7.- Depuración.

Al intentar ejecutar un script, te puede ocurrir que no se ejecute por algún error sintáctico. Para facilitarte la tarea de buscar el error está ladepuración.Se llama depuración ("debug") de un programa al proceso de verificar su funcionamiento en todos los casos posibles y corregir sus errores("bugs", "pulgas"; del inglés, literalmente, "chinche"; por extensión,insecto pequeño).

Cuando se está escribiendo un script, puede convenir invocarlo deforma especial para generar información de comandos ejecutados y errores, para ayudar en la depuración.Las salidas se imprimen en el error estándar, por lo que pueden direccionarse a un archivo sin mezclarsecon la salida del comando.

bash -x nombre_de_scriptImprime cada comando en la salida.

bash -v nombre_del_scriptInvoca el script obteniendo información sobre cada comando ejecutado.

Page 31: Tema 7 S.O

8/16/2019 Tema 7 S.O

http://slidepdf.com/reader/full/tema-7-so 31/40

29/4/2016 educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=19280

http://educaci onadi stanci a.j untadeandal uci a.es/cursos/bl ocks/recopi la/recopi la.php?i d= 19280 31/40

4.- Estructuras y funciones.

En la empresa de prácticas de Iván, le han pedido que ya quese defiende con el entorno de texto de Ubuntu, que ayude enlas tareas de administración del servidor de la empresa quees una distribución de Linux y sólo trabaja en entorno detexto.

Va a generar un script de manera que los usuarios se puedandar de alta mediante un script y así, sólo tengan queintroducir su usuario y contraseña, sin que tengan necesidadde saberse los comandos necesarios.

Iván va a tener que recordar las estructuras y funciones que se pueden definir desde la terminal.

En este apartado vas a ver un conjunto de sentencias de control que soporta la bash Shell, que te van apermitir tomar decisiones o repetir ciertos grupos de comandos con facilidad. Las sentencias con las quevas a trabajar son:

if ….then….fifor…do…donewhile…do….donecase…in…)….) esacfunciones.

Caso práctico

Page 32: Tema 7 S.O

8/16/2019 Tema 7 S.O

http://slidepdf.com/reader/full/tema-7-so 32/40

29/4/2016 educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=19280

http://educaci onadi stanci a.j untadeandal uci a.es/cursos/bl ocks/recopi la/recopi la.php?i d= 19280 32/40

4.1.- Estructuras condicionales.

Las sentencias condicionales tienen muchas formas. La másbásica es:

if expresión then sentencia,

Dónde sentencia sólo se ejecuta si la expresión se evalúa como

verdadera.

Los condicionales tienen otras formas compuestas, como:if expresión then sentencia1 else sentencia2.

Aquí sentencia1 se ejecuta si la expresión es verdadera. De otraforma se ejecuta sentencia2.

Otra forma más de condicional es:if expresión1 then sentencia1 else if expresión2 then sentencia2 else sentencia3.En esta forma sólo se añade else if expresion2 then sentencia2, que hace que sentencia2 se ejecute siexpresión2 se evalúa verdadera.

El comando if implementa una estructura alternativa. Su sintaxis es

<b>if expresión ; then comandos1 ; [else comandos2 ;] fi</b><br /> <b>if expresión</b><br /><b>then</b><br />

<b>comandos1</b>

<b>[else</b><br />

<b>comandos2]</b>

<b>fi</b><br />Construcciones más complejas pueden hacerse usando elif para anidar alternativas.

Con la sentencia IF cuando comparas dos cadenas, ¿es necesario el ELSE?

Verdadero.

Falso.

Para practicar puedes intentar ejecutar el siguiente script:<b> #!/bin/bash</b><br /> <b> if [ -w /etc/passwd ]</b><br /> <b> then</b><br />

echo "Tengo permisos de escritura en el archivo /etc/passwd"

<b>else</b><br />

echo "NO tengo permisos de escritura en el archivo /etc/passwd"

<b>fi</b><br />

Autoevaluación

Page 33: Tema 7 S.O

8/16/2019 Tema 7 S.O

http://slidepdf.com/reader/full/tema-7-so 33/40

29/4/2016 educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=19280

http://educaci onadi stanci a.j untadeandal uci a.es/cursos/bl ocks/recopi la/recopi la.php?i d= 19280 33/40

4.2.- Ficheros con la orden FOR

Este comando le usarás para implementar una estructurarepetitiva, en la cual, una secuencia de comandos se ejecuta unay otra vez.Su sintaxis esfor variable in lista ; do comandos ; doneSe puede probar en la línea de comandos:for NUMERO in 1 2 3 4 ; do echo $NUMERO ; donefor NOMBRE in alfa beta gamma ; do echo $NOMBRE ; donefor ARCH in * ; do echo Nombre archivo $ARCH ; doneEl carácter * es expandido por el shell colocando en su lugar todos los nombres de archivo del directorioactual.

Puedes probar a ejecutar el siguiente ejemplo:

<b>for LETRA in a b c d e f</b><br /> <b>do</b><br /> <b>echo $LETRA</b><br /> <b>done</b><br />Verá que te miestra las letras comprendidas desde la “a” hasta la “f”.La variable del “for” contendrá cada uno de los valores especificados después del in en cada bucle.Otro ejemplo clásico es que la variable tome en cada bucle el valor de un parámetro proporcionado en la

línea de comandos.

<b>for PAMETRO in $*</b><br /> <b>do</b><br /> <b>echo $PARAMETRO</b><br /> <b>done</b><br />Mostrará cada uno de los parámetros tecleados en la línea de comando.Otro ejemplo, variando la lista es:

<b>for i in `seq 0 9`; </b><br /> <b>do</b><br />

<b>echo $i</b>

<b>done</b><br />La lista cuando es un conjunto largo, la puedes expresar así: (valor inicial; valor final; como se

incrementa). Un ejemplo típico es la tabla de multiplicar:

<b>#!/bin/bash</b><br /> <b>echo Introduce un numero para hacer su tabla de multiplicar:</b><br /><b>read n</b><br /> <b>for i in ((i=0;i<=10;i++))</b><br /> <b>do</b><br />

<b>echo $n * $i es igual a $[n*i]</b>

<b>done</b>

Con la orden FOR, ¿es necesario el IN?

Verdadero.

Falso.

Autoevaluación

Page 34: Tema 7 S.O

8/16/2019 Tema 7 S.O

http://slidepdf.com/reader/full/tema-7-so 34/40

29/4/2016 educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=19280

http://educaci onadi stanci a.j untadeandal uci a.es/cursos/bl ocks/recopi la/recopi la.php?i d= 19280 34/40

4.3.- La estructura CASE.

Este comando implementa alternativas o "casos". Elige entremúltiples secuencias de comandos la secuencia a ejecutar. Laelección la realiza encontrando el primer patrón con el quecoincida una cadena de caracteres. Su sintaxis es

<b>case expresión in<br /> patrón1) </b>comandos1<b>;;<br />

patrón2) </b>comandos2<b>;;<br /> ...<br /> *)</b>comandosN;;<b><br /> esac</b>El patrón *) se coloca al final, representa el patrón por defecto. Sus comandos se ejecutan en el caso de que expresión no coincida con ninguno de los patronesprecedentes, es decir, cuando ninguna de las opciones anteriores fue satisfecha.La estructura case la usarás normalmente para generar menús y poder elegir distintas opciones. Puedesintentar hacer el siguiente ejemplo:

<b>#!/bin/bash</b><br /> <b>echo Elige alguna de las siguientes opciones:</b><br /> <b>echo 1 Tudirectorio de trabajo es:</b><br /> <b>echo 2 El usuario es:</b><br /> <b>echo 3 Salir</b><br /> <b>readopción</b><br /> <b>case $opcion in</b> <b>pwd ;;</b><br /> <b>whoami;;</b><br /> <b>exit;;</b><br /> <b>*) echo No has elegido ninguna opción propuesta.;;</b><br /> <b>esac</b>

Con la estructura CASE, ¿se generan menús?

Verdadero.

Falso.

Autoevaluación

Page 35: Tema 7 S.O

8/16/2019 Tema 7 S.O

http://slidepdf.com/reader/full/tema-7-so 35/40

29/4/2016 educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=19280

http://educaci onadi stanci a.j untadeandal uci a.es/cursos/bl ocks/recopi la/recopi la.php?i d= 19280 35/40

4.4.- La estructura WHILE.

Este comando implementa una estructura repetitiva, en la cual, el conjunto de comandos se ejecutamientras se mantenga válida una condición. La condición se examina al principio y luego cada vez que secompleta la secuencia de comandos. Si la condición es falsa desde la primera vez, los comandos no seejecutan nunca.Su sintaxis eswhile condición ; do comandos ; done

La construcción while (en inglés, significa mientras) es adecuada en loscasos en los que hay que evaluar cuándo hacer algo.En cambio, el uso del for sigue el patrón de repetirse mientras secumpla una condición. Prueba a intentar el siguiente ejemplo:

<b>EN="s"</b><br /> <b>while [ $EN != "S" ]; </b><br /> <b>do</b>

<b>read -p "Escribe S para salir: " EN</b>

<b>done</b>En el anterior ejemplo podemos ver la sencilla sintaxis que tiene elwhile; el ciclo no terminara hasta que el usuario escriba la letra “S”

(debe ser mayúscula).

Aquí tienes enlaces a páginas con pequeños scripts explicados línea a línea:

Ejemplos de scripts.

Relaciona el comando con una breve descripción, escribiendo el número asociado a lo quehace el comando en el hueco correspondiente.

Ejercicio de relacionar

Símbolo Relación Significado

If Se complementa con el do y done.

for Estructura condicional.

while Necesitas el IN.

Case Proporciona un menú.

Enviar

Debes conocer

Autoevaluación

Page 36: Tema 7 S.O

8/16/2019 Tema 7 S.O

http://slidepdf.com/reader/full/tema-7-so 36/40

29/4/2016 educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=19280

http://educaci onadi stanci a.j untadeandal uci a.es/cursos/bl ocks/recopi la/recopi la.php?i d= 19280 36/40

4.5.- Las funciones.

Las funciones en los scripts te serán necesarias cuando una tarea quese realiza repetidamente dentro del mismo programa puede escribirseaparte e invocarse como una "función".

Para definir una función es preciso elegir un nombre y escribir un trozode código asociado a ese nombre. La función suele recibir algún valor

como "parámetro" en base al cual realiza su tarea. Definida así lafunción, para introducida en el script, basta escribir su nombre ycolocar el valor del parámetro entre paréntesis.

Una función o subrutina es una agrupación de comandos bajo unmismo nombre. Esto nos permitirá dividir el programa en bloques yprogramar cada bloque por separado, o también agrupar una serie decomandos que se ejecutan a menudo, bajo un mismo nombre.

Para invocar a una función en un script, ¿es necesario simplemente escribir su nombre?

Verdadero.

Falso.

En este enlace puedes ver un pdf con un resumen de programación con bash.

Programación con bash. (1.00 MB)

Autoevaluación

Para saber más

Page 37: Tema 7 S.O

8/16/2019 Tema 7 S.O

http://slidepdf.com/reader/full/tema-7-so 37/40

29/4/2016 educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=19280

http://educaci onadi stanci a.j untadeandal uci a.es/cursos/bl ocks/recopi la/recopi la.php?i d= 19280 37/40

Anexo.- Licencias de recursos.

Licencias de recursos utilizados en la Unidad de Trabajo.

Recurso (1) Datos del recurso (1) Recurso (2) Datos del recurso

(2)

Autoría: Nuria Barroso Ruiz.

Licencia: Copyright (cita). Usoeducativo.

Procedencia: Captura depantalla de Ubuntu desdewindows7.

Autoría: Nuria

Barroso Ruiz.

Licencia: Copyright(cita). Uso educativo.

Procedencia:Captura de pantallade Ubuntu desdewindows7.

Autoría: Nuria Barroso Ruiz.

Licencia: Copyright (cita). Usoeducativo.

Procedencia: Captura depantalla Linux GPL.

Autoría: NuriaBarroso Ruiz.

Licencia: Copyright(cita). Uso educativo.

Procedencia:Captura de pantallade windows.

Autoría: Nuria Barroso Ruiz.

Licencia: Copyright (cita). Usoeducativo.

Procedencia: Captura depantalla de Windows7.

Autoría: NuriaBarroso Ruiz.

Licencia: Copyright(cita). Uso educativo.

Procedencia:Grabador deescritorio de Ubuntu.

Autoría: Nuria Barroso Ruiz.

Licencia: Copyright (cita). Usoeducativo.

Procedencia: Captura depantalla de windows.

Autoría: NuriaBarroso Ruiz.

Licencia: Copyright(cita). Uso educativo.

Procedencia:Captura de pantallade windows.

Autoría: Nuria Barroso Ruiz.

Licencia: Copyright (cita). Usoeducativo.

Procedencia: Captura depantalla de windows7.

Autoría: NuriaBarroso Ruiz.

Licencia: Copyright(cita). Uso educativo.

Procedencia:Captura de pantallade windows.

Autoría: Nuria Barroso Ruiz.

Licencia: Copyright (cita). Usoeducativo.

Procedencia: Captura depantalla de windows.

Autoría: NuriaBarroso Ruiz.

Licencia: Copyright(cita). Uso educativo.

Procedencia:Grabador de

Page 38: Tema 7 S.O

8/16/2019 Tema 7 S.O

http://slidepdf.com/reader/full/tema-7-so 38/40

Page 39: Tema 7 S.O

8/16/2019 Tema 7 S.O

http://slidepdf.com/reader/full/tema-7-so 39/40

29/4/2016 educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=19280

http://educaci onadi stanci a.j untadeandal uci a.es/cursos/bl ocks/recopi la/recopi la.php?i d= 19280 39/40

pantalla de windows.

Page 40: Tema 7 S.O

8/16/2019 Tema 7 S.O

http://slidepdf.com/reader/full/tema-7-so 40/40

29/4/2016 educacionadistancia.juntadeandalucia.es/cursos/blocks/recopila/recopila.php?id=19280