INTRODUCCION A LINUX ASO. TEMA 1.

1 INTRODUCCION A LINUX ASO. TEMA 1 ...
Author: Eva Castellanos Redondo
0 downloads 7 Views

1 INTRODUCCION A LINUX ASO. TEMA 1

2 1. Ficheros y directorios

3 El nodo del mas alto nivel en la jerarquía es el directorio raíz, llamado también /.El directorio /home contiene los directorios en los cuales los usuarios pueden almacenar sus ficheros personales. El árbol de directorios de un sistema Linux tiene una estructura funcional que sigue el Filesystem Hierarchy Standard (FHS)

4

5 Ejercicio Mira en la estructura de tu sistema Linux cuales de estos directorios anteriores existen y cuales no. Investiga donde guarda tu sistema Linux el kernel Investiga donde guarda tu sistema Linux los comandos (ls, cp, etc) Investiga si tu sistema Linux tiene instalado algún compilador de C.

6 Ejercicio. Scripts de arranqueAccede al directorio donde se encuentran los scripts de arranque del sistema y describe lo que hay en él.

7 Descripción rápida de los directorios Standard en Linux/ Directorio raíz. Es el punto de entrada del árbol de directorios. /home Directorios personales de los usuarios. /dev Ficheros de dispositivo que representan componentes hardware. /etc Ficheros importantes para la configuración del sistema. /etc/init.d Scripts de arranque.

8 Descripción rápida de los directorios Standard en Linux/usr/bin Programas de acceso general. /bin Programas necesitados en el proceso de arranque. /usr/sbin Programas reservados para el administrador del sistema. /sbin Pogramas reservados para el administrador del sistema y necesitados para el arranque. /usr/include Ficheros de cabecera para el compilador de C. /usr/include/g++ Ficheros de cabecera para el compilador de C++.

9 Ejercicio Investiga que es un fichero de cabecera de C.Para que utiliza C este tipo de ficheros. ¿Qué contienen?

10 Descripción rápida de los directorios Standard en Linux/usr/share/doc Varios ficheros de documentación. /usr/share/man System manual pages (man pages) /usr/src Código fuente del sistema de software. /usr/src/linux Código fuente del Kernel. /tmp, /var/tmp Ficheros temporales. /usr Todos los programas de aplicación /var Ficheros de configuración. También aquellos enlazados desde /usr.

11 Ejercicio ¿Donde están en tu sistema las páginas del man?

12 Descripción rápida de los directorios Standard en Linux/var/log Ficheros de log del sistema. /var/adm Datos de administración del sistema. /lib Librerías compartidas (por programas enlazados dinámicamente) /proc Ficheros de los procesos del sistema. /sys Sistema de ficheros del sistema donde se almacena toda la información de los dispositivos para el kernel. /usr/local Extensiones independientes de la distribución. /opt Software opcional, extensiones grandes y programas empaquetados (como KDE, GNOME,Netscape, etc)

13 2 Permisos en linux

14 d representa un directorio l link, es decir un enlace o acceso directo $> ls -l -rwxrwxr-- 1 sergio ventas sep 9 14:10 presentacion -rw-rw-r-- 1 sergio sergio sep 7 16:36 reporte1 drwxr-xr-x 2 sergio sergio ago 27 11:41 videos - un guión representa un archivo común (de texto, html, mp3, jpg, etc.) d representa un directorio l link, es decir un enlace o acceso directo b binario, un archivo generalmente ejecutable

15 permisos Permisos para usuario, grupo y otros. rwx rwx rwxusuario grupo otros Significado de las letras: r read - lectura w write - escritura (en archivos: permiso de modificar, en directorios: permiso de crear archivos en el dir.) x execution - ejecución

16 Permisos en octal La combinación de valores de cada grupo de los usuarios forma un número octal, el bit x es 20 es decir 1, el bit w es 21 es decir 2, el bit r es 22 es decir 4, tenemos entonces: r = 4 w = 2 x = 1

17

18 Estableciendo los permisos con chmod$> chmod 755 reporte1 $> chmod 511 respaldo.sh $> chmod 700 julio* $> chmod 644 * Recursividad $> chmod -R 755 respaldos/*

19 Estableciendo permisos en modo simbólico

20 Cambiando usuario y grupocomandos chown (change owner, cambiar propietario) chgrp (change group, cambiar grupo). La sintaxis es muy sencilla: chown usuario archivo[s] y chgrp grupo archivo[s]. Además al igual que con chmod, también es posible utilizar la opción -R para recursividad.

21

22 Bits SUID, SGID y de persistencia (sticky bit)#> ls -l /usr/bin/passwd -r-s--x--x 1 root root feb /usr/bin/passwd SUID En vez de la 'x' ahora una 's' (suid). al activar el bit SUID obliga al archivo ejecutable binario a ejecutarse como si lo hubiera lanzado el usuario propietario y no realmente quien lo lanzó o ejecutó.

23 Bits SUID, SGID y de persistencia (sticky bit)El bit SGID funciona exactamente igual que el anterior solo que aplica al grupo del archivo. Es decir si el usuario pertenece al grupo 'ventas' y existe un binario llamado 'reporte' que su grupo es 'ventas' y tiene el bit SGID activado, entonces el usuario que pertenezca al grupo 'ventas' podrá ejecutarlo. También se muestra como una 's' en vez del bit 'x' en los permisos del grupo.

24 Bits SUID, SGID y de persistencia (sticky bit)STICKY BIT (Bit de persistencia) Se indica con una 't': #> ls -ld /tmp drwxrwxrwt 24 root root 4096 sep 25 18:14 /tmp Lo que hace el bit de persistencia en directorios compartidos por varios usuarios, es que el sólo el propietario del archivo pueda eliminarlo del directorio. Si no se tuviera el sticky bit activado, entonces en estas carpetas públicas, cualquiera podría eliminar o modificar los archivos de cualquier otro usuario.

25 Estableciendo los permisos especiales#> ls -l /usr/prog -r-x--x--x 24 root root 4096 sep 25 18:14 prog #>chmod 4511 /usr/prog -r-s--x--x 24 root root 4096 sep 25 18:14 prog

26 Estableciendo los permisos especiales

27 Permisos preestablecidos con umask0002 (o en formato simbólico con la opción -S) $> umask -S u=rwx,g=rwx,o=rx Lo anterior indica que un directorio y archivos ejecutables se crearán con los permisos 775 y los archivos comunes con los permisos 664. Esto se logra restando de 777 el valor de umask ( ) y ( ) respectivamente. El primer valor de umask corresponde para valores de Sticky bit, GUID o SUID, que por default es 0.

28 Ejercicio Establece los permisos de tu cuenta para que los ficheros que se creen solamente tengan permisos de lectura. Se pide también que los permisos especiales estén deshabilitados.

29 PRACTICA 1.1 Realiza la práctica 1.1Cumplimenta el documento y entrégalo al profesor por la plataforma.

30 3. Mtools

31 MTOOLS Mtools son una serie de comandos para trabajar con sistemas de ficheros MS-DOS MS-DOS. Los comandos incluidos en mtools te permiten nombrar el primer floppy como a:, igual que en ms- dos, y los comandos son como los comandos MS- DOS excepto que deben de ir precedidos con una m.

32 Comandos MTools mdir a: mcopy Testfile a:Copia el fichero Testfile al floppy disk mdel a:Testfile mformat a: mcd a: mmd a:test mrd a:test

33 4. Comandos importantes de Linux

34 Administración de ficherosls [options] [files] ls sin ningún parámetro listará el contenido del directorio actual de forma corta. -l lista detallada -a visualiza ficheros ocultos -i visualiza el número de inodo

35 Administración de ficheroscp [options] source target copia source a target. -i Pide confirmación si es necesario antes de sobrescribir target -r Copia recursiva (incluye subdirectorios)

36 Administración de ficherosmv [options] source target Copia source a target y después borra el original source. -b Crea una copia backup antes de mover source -i Espera confirmación si es necesario antes de sobrescribir el fichero target

37 Administración de ficherosrm [options] files Borra los ficheros especificados del sistema de archivos. No se borrarán los directorios salvo que utilicemos la opción -r . -r Borra cualquier subdirectorio existente -i Espera confirmación antes de borrar cada fichero

38 Administración de ficherosln [options] source target Crea un link interno desde source a target. Generalmente el enlace o link apunta al mismo fichero en el sistema de ficheros. Si ln se ejecuta con la opción -s lo que se crea es un enlace simbolico lo que equivaldría a un acceso directo en windows.

39 Administración de ficheroscd [options] [directory] Cambia el directorio actual. Sin ningún parámetro lo que hace es que te lleva al directorio home del usuario.

40 Administración de ficherosmkdir [options] directory Crea un nuevo directorio rmdir [options] directory Borra el directorio especificado si está vacío

41 Administración de ficheroschown [options] username[:[group]] files Transfiere la propiedad de un fichero -R Realiza los cambios a los ficheros y directorios en todos los subdirectorios. chgrp [options] groupname files Transfiere la propiedad a un grupo de un conjunto de ficheros. El propietario del fichero solo puede cambiar la propiedad del grupo si es miembro del grupo actual y el nuevo grupo.

42 Administración de ficheroschown [options] username[:[group]] files Transfiere la propiedad de un fichero -R Realiza los cambios a los ficheros y directorios en todos los subdirectorios. chgrp [options] groupname files Transfiere la propiedad a un grupo de un conjunto de ficheros. El propietario del fichero solo puede cambiar la propiedad del grupo si es miembro del grupo actual y el nuevo grupo.

43 Administración de ficherosgzip [parameters] files Este programa comprime los contenidos de los ficheros utilizando algoritmos matemáticos. Los ficheros comprimidos de esta manera tienen extensión .gz y necesitan ser descomprimidos antes de usarse. Para comprimir varios ficheros o incluso directorios completos hay que utilizar el programa tar. -d Descomprimir

44 Ejercicio Crea un archivo el cual contenga la fecha actual. Comprímelo con máxima compresión (opción -9). Descarga una imagen y comprímela. ¿Cual es el ratio de compresión?

45 Administración de ficherostar options archive files tar agrupa uno o más ficheros en un archivo. La compresión es opcional. Tar tiene muchas opciones aunque las más utilizadas son las siguientes: -f Escribe la salida a un fichero y no por pantalla. Se suele utilizar casi siempre. -c Crea un nuevo archivo tar -r Añade ficheros a un archivo existente

46 Administración de ficherostar options archive files -t Lista el contenido de un archivo. -u Añade ficheros, pero solo si son más nuevos que los ficheros contenidos en el fichero tar -x Unpack. Descomprime los ficheros de un archivo (extraction) -z Packs. Agrupa los ficheros comprimiéndolos con gzip.

47 Administración de ficherostar options archive files -j Comprime el fichero resultante con bzip2 -v Lista los ficheros procesados Los archivos creados con tar finalizan con la extensión .tar y tgz o tar.gz si el archivo está comprimido. Si se comprime utilizando bzip2 deberá de terminar en .tar.gz2.

48 Ejercicio Realiza un tar de tu directorio personal comprimiéndolo con bzip2 y con gzip. ¿Cual tiene el ratio de compresión más alto?

49 Administración de ficherosfind [options] Con find se puede buscar u fichero dentro de un directorio. La orden find es una de las más potentes de UNIX, pero también una de las que tienen una sintaxis más compleja. Esta orden se usa para examinar toda la estructura de directorios, o señalados en la línea de órdenes. Una vez localizados, podemos hacer que ejecute distintas acciones sobre ellos. El campo expresión sirve para indicar los criterios de selección de los archivos y la acción que queremos aplicarles al encontrarlos.

50 Administración de ficherosEjemplo de find: $ find / -name ifconfig                          (busca el archivo ifconfig dentro de la estructura de directorios) La opción -name indica a find que únicamente se busquen los archivos cuyo nombre se especifica a continuación. Cuando find no puede buscar en un determinado directorio por no poseer derechos de acceso, no los comunica. Para evitar estos mensajes de error podemos redirigir el error a /dev/null. Ejemplo: $ find / -name login 2>/dev/null

51 Ejercicio Se desea saber qué ficheros en el directorio home se crearon antesdeayer, ayer y hoy Se desea saber los ficheros del directorio /bin que comiencen por s y sean propiedad de root

52 Administración de ficherosOpciones de find:

53 Comandos para acceder a los contenidos de los ficheroscat [options] files El comando cat muestra el contenido de un fichero. Todo el contenido del fichero se mostrará por pantalla sin interrupción. -n Con la opción anterior se muestran los números de pantalla a la izquierda de las líneas.

54 Comandos para acceder a los contenidos de los ficherosless [options] files Este comando es utilizado para mostrar el contenido de un fichero determinado. Se puede hacer scroll con los botones PgUp y PgDn o saltar la pantalla completa con Space . Se puede saltar al principio o al final de un fichero con las teclas Home y End . Con Q se sale del programa.

55 Comandos para acceder a los contenidos de los ficherosgrep [options] searchstring files El comando grep busca una cadena específica en los ficheros especificados. Si la cadena a buscar se encuentra, el comando muestra la línea donde encontró searchstring. -i (Ignora mayúsculas de minúsculas) -H Solo visualiza los nombres de los respectivos ficheros, pero no las líneas de texto. -n Visualiza el numero de la línea donde ha encontrado lo que iba buscando. -l (Solo lista los ficheros en los cuales searchstring no ocurre)

56 Ejercicio Visualiza las líneas del fichero /etc/passwd donde aparezca la palabra root

57 Comandos para acceder a los contenidos de los ficherosdiff [options] file1 file2 El fichero diff compara el contenido de dos ficheros. La salida del programa lista las lineas que no matchean. Este comando es utilizado con frecuencia por programadores que necesitan conocer las alteraciones de los programas y no todas las líneas de código. -q Solo muestra si los dos ficheros difieren o no -u Produce un diff “unificado” el cual hace que la salida sea más comprensible

58 Sistemas de ficheros mount [options] [device] mountpointEste comando puede ser utilizado para montar cualquier dispositivo de datos (disco duro, pendrive, CD-ROM, etc). -r montaje en modo read-only -t filesystem Especifica el sistema de ficheros, generalmente ext3 o 4 para discos duros Linux, vfat para sistemas Windows o pendrives, y iso9660 para CDs

59 Sistemas de ficheros Importante mountSi el disco duro no está definido en el fichero /etc/fstab, habrá que especificar también el tipo de dispositivo. En este caso, solo root puede montarlo. Si el sistema de ficheros debería de ser montado también por otros usuarios, esto deberá de introducirse en el fichero /etc/fstab file (separado por comas) y salvar los cambios. La página man de mount tiene más información.

60 Ejercicio Visualiza el fichero fstab.Interpreta el contenido y haz una descripción del mismo.

61 Sistemas de ficheros umount [options] mountpointEste comando hace lo contrario que el anterior. Desmonta un dispositivo montado. Para prevenir la perdida de información hay que ejecutar este comando antes de extraer un dispositivo removible. Generalmente solo se permite a root utilizar los comandos mount y umount. Para habilitar a otros usuarios se deberá de especificar en el fichero /etc/fstab con las respectivas etiquetas.

62 Ejercicio Monta un pendrive de forma manual.Móntalo y desmóntalo por lo menos dos o tres veces. Haz lo mismo con el CD-ROM.

63 Información del sistemadf [options] [directory] El comando df(disk free) si se ejecuta sin ninguna opción muestra la información sobre el total del espacio libre en disco, el espacio del disco utilizado actualmente y el espacio libre en todos los discos montados. Si se especifica un directorio, la información se mostrará del disco donde el directorio se encuentre. -h Muestra el número de bloques ocupados en gigabytes, megabytes, o kilobytes— en un formato fácilmente entendible por humanos. -T Tipo del sistema de ficheros (ext2, nfs, etc.)

64 PRACTICA 1.2 Realiza la práctica 1.2 y entrégala en la plataforma.

65 Información del sistemadu [options] [path] Este comando si se ejecuta sin parámetros muestra el total del espacio en disco ocupado por los ficheros y subdirectorios del directorio actual -a Muestra el tamaño de cada fichero individual -h Salida en formato human-readable -s Visualiza solo el tamaño total calculado

66 Información del sistemafree [options] El comando free visualiza la información de la RAM y el espacio de swap utilizado mostrando el total y las cantidades utilizadas en ambas categorías. -b Output en bytes -k Output en kilobytes -m Output en megabytes

67 Información del sistemadate [options] Este programa muestra la fecha actual. Si se ejecuta como root también se puede cambiar la fecha del sistema. Más detalles en la página del man.

68 Procesos top [options]top proporciona una visión rápida de los procesos que se están ejecutando actualmente en el sistema. Si se presiona la tecla H se accede a una página que explica brevemente opciones para customizar el programa.

69 Procesos ps [options] [process ID]Si se ejecuta sin ninguna opción, este comando muestra una tabla con todos los programas que TU estás ejecutando. Las opciones a este comando no están precedidas por un guión.

70 Ejercicio Ejecuta ps -efMira en el man qué opciones son las opciones anteriores. ¿Qué es lo que hacen?

71 Procesos aux Visualiza una lista detallada de todos los procesos independientemente del propietario.

72 Procesos kill [options] process IDDesafortunadamente, algunas veces, un programa no puede terminar de una forma correcta. Kill envía una señal TERM que indica al programa que tiene que terminar. Si esta forma no ayuda, el siguiente parámetro podría usarse: -9 Envía la señal KILL en vez de la señal TERM lo que hace que termine el proceso de todas formas.

73 Ejercicio Ejecuta un editor de texto.Vuelve a ejecutar el editor de texto. Averigua el PID del primer editor de texto. Máta el primer editor de texto con el comando kill

74 Procesos killall [options] processnameEste comando es muy similar a kill pero utiliza el nombre del proceso en vez del ID como argumento. Matará todos los procesos con ese nombre.

75 Network ping [options] hostname or IP addressEl comando ping se utiliza para probar la funcionalidad básica de las redes TCP/IP. Envia un paquete de datos al host destino requiriendo una respuesta inmediata. -c number Determina el numero total de paquetes a enviar y termina cuando se han entregado. -f flood ping: envía tantos paquetes de datos como sea posible. Es un método utilizado por los administradores para testear las redes. -i value Especifica el intervalo entre dos paquetes de datos en segundos (por defecto un segundo)

76 Network nslookup El DNS resolverá los nombres de dominio a direcciones IP. Con esta herramienta se pueden enviar consultas a servidores DNS. telnet [options] hostname or IP address [port] Telnet es actualmente un protocolo de Internet que te habilita el poder trabajar con hosts remotos a través de la red. Telnet también es el nombre de un programa que utiliza este protocolo.

77 Cuidadín No utilizar telnet sobre una red en la que pueda haber sniffers que detecten nuestra password. Especialmente sobre Internet. En el caso de que se quiera hacer un telnet en una red insegura utilizar ssh u otro programa parecido.

78 Miscelanea de comandospasswd [options] [username] Comando para cambiar la password del sistema. Root puede cambiar todas las password.

79 Ejercicio Cambia la password de tu sistema.Una vez cambiada reestablécela a la password anterior.

80 Miscelanea de comandossu [options] [username] El comando su hace posible logearse en el sistema bajo un usuario diferente dentro de la misma sesión. Hay que especificar el usuario y la password. La password no será pedida a root. Si se ejecuta sin nombre de usuario lo que ocurre es que el cambio es a superusuario (root). Utiliza su – para arrancar una shell para otro usuario.

81 Miscelanea de comandoshalt [options] Se utiliza este comando cuando no se quiere perder datos. Se debería de realizar un shutdown del sistema siempre con este comando. reboot [options] Igual que halt solo que lo que hace es que el sistema realice un reinicio inmediato.

82 Ejercicio Investiga además de reboot que otros comandos existen para reiniciar la máquina.

83 Miscelanea de comandosclear Limpia la consola.

84 5. El editor vi

85 Ejercicio. Con el editor vi crea un fichero en el que aparezca todo el texto de esta diapositiva (incluido el encabezado). Los editores de texto son utilizados a menudo en las tareas de administración y también en la programación. En el mundo de Unix, vi es un editor bastante utilizado y muchos administradores lo prefieren incluso antes que algún editor gráfico con ratón.

86 6. Variables de entorno

87 $BASH El path al binario Bash  bash$ echo $BASH /bin/bash $BASH_VERSION version de Bash instalada en el sistema bash$ echo $BASH_VERSION (1)-release

88 tcsh% echo $BASH_VERSIONBASH_VERSION: Undefined variable. Checkear $BASH_VERSION es un buen método para determinar que tipo de shell se está ejecutando. En ocasiones $SHELL no muestra la respuesta correcta. $EDITOR Editor por defecto invocado por un script, usualmente vi o emacs.

89 Ejercicio ¿Existen todas las variables anteriores en tu entorno de usuario?

90 $GROUPS Grupos al que pertenece el usuario root# echo $GROUPS $HOME home directory del usuario, usualmente /home/username

91 $HOSTNAME El comando hostname asigna el nombre del sistema en el momento de boot en el script init. $HOSTTYPE host type como $MACHTYPE, identifica el sistema hardware. bash$ echo $HOSTTYPE i686

92 $IFS internal field separator $IFS por defecto es whitespace (space, tab, and newline), pero puede ser modificado por ejemplo, para parsear un fichero de datos csv.

93 Ejercicio Averigua qué hace el siguiente comando. ¿Cuales son las opciones del comando cat? bash$ echo $IFS | cat -vte

94 $MACHTYPE machine type Identifica el hardware del sistema. bash$ echo $MACHTYPE i686 $OSTYPE operating system type bash$ echo $OSTYPE linux

95 $PATH path, usualmente /usr/bin/, /usr/X11R6/bin/, /usr/local/bin, etc. Cuando se ejecuta un comando, la shell hace una búsqueda en los directorios de la variable path en busca de ejecutables. bash$ echo $PATH /bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin:/sbin:/usr/s bin PATH=${PATH}:/opt/bin añade el directorio /opt/bin al actual path.

96 Ejercicio Crea un directorio misdatos con un fichero mifich.sh en él que contenga lo siguiente: echo “Hola Mundo” Dale permiso de ejecución y incluye en el path el directorio misdatos Ejecuta mifich.sh desde el directorio /

97 $PPID El $PPID   de un proceso es el process ID (pid) de su proceso padre. $PWD working directory (directorio actual) $SECONDS Numero de Segundos que el script lleva ejecutándose.

98 $UID user ID number ver el fichero /etc/passwd

99 Ejercicio Ejecuta el comando env. ¿Qué es lo que aparece?

100 Ejercicio Investiga qué es exportar una variable.¿Aparecen las variables exportadas en el entorno del usuario?

101 Otros comandos exit Descripción: finalización de una sesión de usuario who Descripción: muestra los usuarios de sistema que han iniciado una sesión. Ejemplos: who, w, whoami

102 Otros comandos Mail Descripción: envío y lectura de correo electrónico. Ejemplos: mail < fichero, mail -v < fichero

103 Ejercicio Instala un mail forwarder en tu máquina y prueba a ver si funciona el comando mail enviándote un mensaje a tu cuenta de correo electrónico.

104 Otros comandos Write Descripción: se utiliza para comunicarnos con otros usuarios que están en ese momento conectados a nuestro mismo sistema Ejemplos: $write lucas Claro que estoy Pasate por mi despacho -            Ctrl – d – $

105 Ejercicio Ejecuta dos terminales y manda un mensaje con write de un terminal a otro. Prueba a entrar en un terminal como root y mandarle un mensaje a otro usuario conectado. Verifica antes si el usuario está conectado.

106 Otros comandos Mesg Descripción: se utiliza para modificar los derechos de escritura por parte de otros usuarios en nuestro Terminal. La orden mesg sin parámetros nos dirá si tenemos o no activa la recepción de mensajes Ejemplos: $mesg Is y $ mesg n Is n $

107 Otros comandos echo Descripción: repite por pantalla todo lo que le pasemos por parámetro Ejemplos: $echo Esta orden repite todo todo Esta orden repite todo todo $echo $TERM Xterm $

108 Otros comandos cal Descripción: visualiza el calendario correspondiente al mes actual. Admite parámetros Ejemplo: cal uname Descripción: =unix name. Información sobre el tipo de unix en el que estamos, kernel, etc. Ejemplos: uname, uname –a

109 Otros comandos lpr Descripción: permite enviar archivos a la impresora que haya por defecto para que sean impresos. Se colorarán en la cola de impresión en orden de llegada. Ejemplo: lpr programa.c lp Descripción: Igual que lpr pero para Unix System V

110 Otros comandos man Manual del programador de unixSintaxis básica: man comando pwd Descripción: Muestra nuestro directorio de trabajo actual

111 Otros comandos history moreDescripción: muestra el historial de comandos introducidos por el usuario. Ejemplos: history | more more Descripción: muestra el contenido de un fichero con pausas cada 25 líneas. Ejemplos: more fichero

112 Otros comandos Head Descripción: muestra la cabecera (10 lineas) de un fichero. Ejemplos: head fichero, head -100 /var/log/maillog | more Tail Descripción: muestra el final (10 lineas) de un fichero. Ejemplos:tail -f /var/log/maillog, tail /var/log/maillog | more

113 Otros comandos File Descripción: nos dice de que tipo es un fichero. Ejemplos: file fichero, file *

114 Otros comandos which Descripción: busca en el path los archivos que le pasemos como parámetro Ejemplo: $wich vi emacs pine /bin/vi /usr/bin/emacs /usr/bin/pine $

115 PRACTICA Realiza la práctica 1.3 y entrégala por la plataforma.

116 Otros comandos WhereisDescripción: busca en el path el archivo que se pase como parámetro Ejemplo: $whereis vi /usr/bin/vi (en mac OS X) $

117 Otros comandos id Descripción: La orden id devuelve el identificador de usuario y de grupo del usuario que le indiquemos Ejemplo: $id Uid=504(chan) gid=504(igx) grupos=504(igx) $id lucas Uid=519(lucas) gid=504(igx) $

118 Otros comandos newgrp descripción: igual a su pero en este caso lo que se solicita es el cambio de grupo. Solo nos podemos cambiar a los grupos permitidos por el administrador del sistema

119 8. Tuberías

120 Tuberías Salida estandard que la tome otro comando como entrada: (|)Unir la salida standard de un comando (el de la izquierda) con la entrada del comando de la derecha por ejemplo: cat texto.txt | more ls -l | more

121 Redirecciones Comando > fileRedirecciona la salida del comando a un fichero. Comando >> file Redirecciona la salida del comando a un fichero (añadiendo la información).

122 9. La calculadora

123 bc COMANDO bc:           El comando bc se utiliza como calculador de la línea de comandos. Es similar a una calculadora básica. Usándolo podemos hacer cálculos matemáticos básicos. SINTAXIS:     La sintaxis es           bc [opciones]

124 bc OPCIONES: -c Sólo compilar. El output son comandos dc que son enviados al salida estándar. -l Define las funciones matemáticas e inicializa la escala a 20, en vez de al cero por defecto. filename Nombre del archivo que contiene los comandos básicos de cálculo, éste no es un comando necesario.

125 bc ejemplos bc Salida: bc 1.06Copyright ,1997,1998,2000 Free Software Foundation,Inc. This is free software with ABSOLUTELY NO WARRANTY. For details type `warranty'. 9*2 18

126 bc ejemplos bc -l Salida: bc 1.06Copyright ,1997,1998,2000 Free Software Foundation,Inc. This is free software with ABSOLUTELY NO WARRANTY. For details type `warranty'. 1+2 3

127 bc ejemplos bc calc.txt Salida: bc 1.06Copyright ,1997,1998,2000 Free Software Foundation,Inc. This is free software with ABSOLUTELY NO WARRANTY. For details type `warranty'. 3 El archivo "calc.txt" contiene el siguiente código: 1+2.

128 Más ejemplos con bc Suma $ echo '57+43' | bc 100 Resta14

129 Más ejemplos con bc Multiplicación $ echo '57*43' | bc 2451 scaleLa variable scale determina el número de dígitos que siguen al punto decimal en tu resultado. Por defecto es cero. (Salvo que usemos la opción -l en cuyo caso por defecto vale 20 posiciones decimales. Más sobre -l más adelante.)

130 Más ejemplos con bc División $ echo 'scale=25;57/43' | bc Raíz cuadrada $ echo 'scale=30;sqrt(2)' | bc

131 Ejercicio Tengo dos ficheros f1.txt y f2.txt con un número.Se pide la suma, resta, multiplicación y división de ambos números utilizando el comando bc. Nota: el primer operando siempre es el contenido en f1.txt

132 Más ejemplos con bc Potencia $ echo '6^6' | bc 46656

133 Más ejemplos con bc ParéntesisUso brackets para separar los diferentes componentes de mis sumas siempre que es posible, elimina cualquier posible duda de que obtenga una respuesta errónea. Considera los siguientes cálculos: $ echo '7+(6*5)' | bc $ echo '7+6*5' | bc $ echo '6*5+7' | bc Todos dan la misma respuesta, 37

134 Más ejemplos con bc obase e ibaseobase e ibase son variables especiales que definen la base de entrada y de salida. Justifica obase valores entre 2 y 999, a pesar de que nada mayor que 16 vale la pena! Justifica ibase valores entre 2 y 16. Convierte de decimal a hexadecimal Aquí estamos convirtiendo 255 de base 10 a base 16: $ echo 'obase=16;255' | bc FF

135 Más ejemplos con bc Convierte de decimal a binarioY aquí estamos convirtiendo el numero 12 de base 10 a base 2: $ echo 'obase=2;12' | bc 1100

136 Más ejemplos con bc Convierte de binario a decimalAquí estamos convirtiendo el número binario 10 a base 10 (decimal). $ echo 'ibase=2;obase=A;10' | bc 2 Nótese que la obase es "A" y no "10". La razón es que si hemos configurado la ibase a "2", y ahora intentamos usar "10" como valor para la obase, nos quedará en "2", porque "10" en base 2 es "2".

137 Más ejemplos con bc Convierte de hexadecimal a decimal$ echo 'ibase=16;obase=A;FF' | bc 255 Una vez más nótese el uso de "A" para indicar base 10, debido a que "10" en hex (base 16 - el valor ibase) es 16.

138 Ejercicio. Modifica la siguiente secuencia de comandos para que funcione correctamenteecho ibase=16;obase=A;FF > datos.txt type datos.txt tac datos.txt > bc tac datos.txt | bc Nota: tiene que salir un solo 255 por pantalla.

139 Más ejemplos con bc Uso de bc con scripts del shellPodemos usar variables con bc, lo que es muy útil en los scripts: $ FIVE=5 ; echo "$FIVE^2" | bc 25 Nótese el uso de las dobles comillas para preservar el valor de la variable $FIVE.

140 Más sobre el uso de bc con ficherosAquí hay un ejemplo sencillo: scale=2 /* estos comentarios funcionan como en C y Java */ print "\nConvert Fahrenheit to Celsiusn\n" print "Temperature in Fahrenheit: " ; fah = read() print "\n" print "Equivalent Temperature in Celsius is: " (fah ) * 5.0 / 9.0 quit

141 Más sobre el uso de bc con ficherosCreamos y guardamos el fichero, y luego lo ejecutamos de la siguiente forma: $ bc -q filename Convertimos Fahrenheit a Celsius Temperatura en Fahrenheit: 61 La temperatura equivalente en Celsius es: 16.11 Nótese que este ejemplo es con GNU bc. Otras versiones (propietarias) de bc pueden tener unos requerimientos de sintaxis más severos. Algunos bcs no permiten el uso de print o read, por ejemplo, con lo que hemos de editar nuestro fichero antes de cada cálculo. No muy útil.

142 ¿Eres capaz de realizar en bc un programa que resuelva ecuaciones de segundo grado?Realiza el programa para resolver ecuaciones de segundo grado y entrégalo en la plataforma. El profesor abrirá una tarea de subida de ficheros al efecto.

143 10. Filtros

144 sort Descripción: Se basa en ordenar líneas de un fichero. Y también por ordenar por columnas, el separador de columna que usa por defecto es el espacio en blanco (“ “). sort opciones fichero -k nº : indica el campo por el que quiero ordenar y seguirá ordenándolo si es igual por las siguientes columnas (6,7,...), si no pones nada ordena la linea -n : toma el valor como numérico a comparar y no como texto -r : orden inverso -R : desordenar, aleatoriamente -t “carácter”: indica otro separador de columna. -u : hace que la ordenación sea única, es decir elimina los duplicados (quita la linea duplicada)

145 Ejemplo de uso de sort ls -l | sort(ordenaría por la primera columna, la de los permisos) ls l | sort -k 8 (ordenaría por la 8 columnas, la de los nombres) ls l | sort -k 5 lo ordena por el tamaño entendiendo el numero como texto. ls l | sort -k 5 -n lo ordena por el tamaño entendiendo el numero como valor

146 Ejercicio ¿Que hace el siguiente comando?cat /etc/passwd | sort -k 3 -n -t “:”

147 wc Descripción: Word Count. Cuenta las líneas palabras o caracteres de un fichero. La sintaxis es la siguiente: wc -parámetro fichero Tiene tres parámetros posibles: -l que cuenta sólo las líneas de un fichero -w cuenta las palabras de un fichero -c cuenta los caracteres de un fichero

148 cut Descripción: Sirve para cortar trozos de una línea.Le tenemos que indicar la columna que nos interesa y el limitador. -d “carácter”: carácter limitador -f campo: columna/s que nos interesa, separadas por comas Ejemplo: cat /etc/passwd | sort -k 3 -n -t “:” | cut -d “:” -f 1 Se obtiene la lista de nombre , ordenada por numero de usuario, y solo muestra la columna 1

149 Ejercicio ¿Qué hace el siguiente comando?cat /etc/passwd | sort -k 8 -R -t “:” | cut -d “:” -f 1,3

150 tr El comando tr dado un flujo de datos (entrada estándar) nos permite modificarlos sustituyendo y/o borrando carácteres. Sintaxis: tr [OPCIÓN] ... SET1 [SET2] Donde [OPCIÓN] pueden ser cualquiera de las siguientes. -d Borrar los caracteres indicados en SET1 -s Elimina o reemplaza los caracteres repetidos indicados en SET1 -c Todos los caracteres que no sean los indicados en SET1 los convierte en SET2 -t Trunca SET1 a la longitud de SET2

151 Ejemplos con tr $ echo murcielago | tr aeiou AEIOU MurcIElAgO¿Pero que ocurre si SET1 tiene mayor longitud que SET2 o al revés? $ echo murcielago | tr aeiou AE mErcEElAgE $ echo murcielago | tr aeiou AE. m.rc.ElAg. $ echo murcielago | tr ae AEIOU murciElAgo

152 Ejemplos con tr Borrado $ echo murcielago | tr -d ae murcilgo$ echo 'una frase muy tonta pero valdrá' | tr -d ' ' unafrasemuytontaperovaldrá

153 Ejemplos con tr Borrar repetidos~$ echo 'una frase muy tonta pero valdrá' | tr -s ' ' una frase muy tonta pero valdrá

154 Ejemplos con tr Sustituir repetidos$ echo 'una frase muy tonta pero valdrá' | tr -s ' ' . una.frase.muy.tonta.pero.valdrá $ echo '(((una frase muy tonta pero valdrá)))' | tr -s ' )(' ' ][' [una frase muy tonta pero valdrá]

155 Ejemplos con tr Sustituir con negadosSi utilizamos la opción -c, el comando localizará todos los caracteres que no coincidan con el patrón dado en SET1 y los reemplazara por sus correspondientes en SET2. $ echo 'naci el ' | tr -c ' ' '-'

156 Secuencias válidas \NNN carácter con valor octal NNN (de uno a tres dígitos) \\ barra invertida \a pitido audible (BEL) \b espacio hacia atrás \f salto de página \n salto de línea \r retorno de carro \t tabulación horizontal \v tabulación vertical

157 Otro ejemplo con tr $ ls |tr '\t' '\n' gedit.banyut.1053685335kde-banyutyHf1n2 keyring-GLhk1g ksocket-banyut orbit-banyut orbit-root plugtmp

158 Ejercicio Tenemos una serie de campos en un fichero (todos en una línea) separados por '$' y queremos saber cuales de ellos contienen la palabra root. Lo mismo que el anterior pero que comiencen por la letra a. Utiliza grep y tr para solucionar el ejercicio. Ejemplo de fichero: var$log$root$ assembler$program input restore$navigator$ Completed execution$program finder$coconut battery$upgrade system

159 ¿Qué hace este comando? $ rev '\etc\passwd\' |tr -s ':' '|' | sort -k 3 -n -t '|'

160 Rangos con tr SET1 y SET2 se pueden definir como un rango de caracteres, esto se consigue mediante el carácter '-', por ejemplo para definir los números del 0 al 9, se escribirá, 0-9. $ echo 'Yo soy porque nosotros somos' | tr a-z A-Z YO SOY PORQUE NOSOTROS SOMOS

161 Rangos predefinidos con tr[:alnum:] todas las letras y dígitos [:alpha:] todas las letras [:blank:] todos los espacios en blanco horizontales [:cntrl:] todos los caracteres de control [:digit:] todos los dígitos [:graph:] todos los caracteres imprimibles, sin incluir el espacio [:lower:] todas las letras minúsculas [:print:] todos los caracteres imprimibles, incluyendo el espacio [:punct:] todos los caracteres de puntuación [:space:] todos los espacios en blanco horizontales y verticales [:upper:] todas las letras mayúsculas [:xdigit:] todos los números hexadecimales [=CAR=] todos los caracteres que son igual que CAR

162 Ejemplo utilizando rangos predefinidos$ echo 'Yo soy porque nosotros somos' | tr [:lower:] [:upper:] YO SOY PORQUE NOSOTROS SOMOS

163 Ejercicio ¿Qué hacen los siguientes comandos?$ tr -d [:cntrl:] fitx_B.txt $ cat fitx_A.txt | tr 'a-zA-Z' 'A-Za-z' $ tr -c '[:print:]\n' $ ls | tr [:upper:] [:lower:] > fitx_C.txt

164 PRACTICA 1.4 Realiza la práctica 1.4 y súbela a la plataforma.

165 10. Más comandos

166 nice Que es NI ? : NI es llamado el numero gentil o "nice number"Es especificado por el "superusuario"("root") o dueño del proceso y sirve para modificar la prioridad. Valores desde -20 (mas prioridad) y 20 (menos prioridad) El super-usuario (root) puede ajustar la prioridad de los procesos a cualquier valor.

167 nice Por defecto, todos los procesos nice = 0.Con nice es posible iniciar un programa con la prioridad modificada. Solo root o el superusuario puede establecer prioridades negativas que son más altas. Con la opción -l de ps es posible observar la columna NI que muestra este valor.

168 Ejemplos de uso de nice nice -10 named : Esto bajaría la prioridad de named en 10 unidades.(Si estaba en -10, pasará a - 20). nice +10 named : Esto incrementaría la prioridad de named en 10 unidades.(Si estaba en 0, pasaría a +10). En algunos sistemas funciona así: nice -n -8 comando

169 renice nice = establece la prioridad de un proceso cuando se incia su ejecución renice permite alterar la prioridad en tiempo real, sin necesidad de detener el proceso.

170 Ejemplo de renice #> nice -n -5 yes (se ejecuta el programa 'yes' con prioridad -5) (dejar ejecutando 'yes' y en otra terminal se analiza con 'ps') #> ps -el F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 4 S write_ pts/ :00:00 yes #> renice 12826: prioridad antigua -5, nueva prioridad 7 4 S write_ pts/ :00:15 yes (obsérvese el campo NI en el primer caso en -5, y en el segundo con renice quedó en 7, en tiempo real)

171 Comando & El & es utilizado para indicar que el proceso debe de ejecutarse en el fondo (background). Ejemplo: $ ls -lR / & Intenta hacer Ctrl+c una vez ejecutado el comando a ver que pasa.

172 nohup El comando nohup permite mantener la ejecución de un comando (el cual le pasamos como un argumento) pese a salir de la terminal (logout), ya que hace que se ejecute de forma independiente a la sesión. Ignorar la señal HUP (señal que se envía a un proceso cuando la terminal que lo controla se cierra), esto implica que aunque cerremos la terminal, el proceso se siga ejecutando.

173 nohup Ejemplo $ nohup ./miscript.sh &Por defecto, la salida del comando, que normalmente aparecería directamente en la terminal, será procesada a un fichero llamado nohup.out que aparecerá en la ruta donde nos encontremos al ejecutar el comando.

174 ¿Que diferencia hay entre nohup y &?Con & cuando salgo de la consola o terminal todos los procesos en background se mueren pero no si los lanzo con nohup.

175 jobs lista los procesos actuales en ejecución

176 sleep El comando sleep que fija un tiempo para llevar a cabo una acción. Es como un cronometro, cuando termina la cuenta se realiza la acción que le sigue. Por defecto la cuenta es en segundos; se puede cambiar hasta días con los suffix. Sintaxis sleep [--help] [--version] numero[smhd]…

177 Ejemplos de sleep sleep 3s; exit También pude haber escrito:sleep 3; exit porque por defecto sleep el tiempo lo toma como segundos. (s segundos ,m minutos, h horas, d días)

178 Ejemplos de sleep Imprimir "Esta es la información de [nombre de usuario]" y después de ella los datos. Todo con un retardo de 1 minuto. sleep 1m; echo "Esta es la información de `uname - n`"; uname -a

179 Ejercicio Create un script uno.sh en el que coloques un comando sleep 10 u otro tiempo parecido para que tarde en ejecutarse. Utiliza nice y renice para establecer las prioridades. Ejecútalo también con & y nohup.

180 Comando w El comando w es similar al comando who y no está presente en todos los sistemas. who proporciona información relativa a entradas en el sistema. El comando w informa de qué están haciendo los usuarios. El listado estándar es: $ w 11:07am up 4:10, 3 users, load average: 0.11, 0.06, 0.02 USER TTY FROM IDLE JCPU PCPU WHAT alu1960 pts/0 ord :39am 25: s 0.02s pine paco pts/2 fonil 11:06am 0.00s 0.20s 0.05s w alu1621 pts/1 ord :52am 10: s 0.03s pine

181 Ejercicio Investiga que hace el comando uptime y pon un ejemplo de uso.

182 split El comando split en sistemas Unix sirve para partir/dividir un archivo en varios de menor tamaño. Modo de empleo: split [OPCIÓN] [FICHERO [PREFIJO]] Corta ARCHIVO en partes de tamaño fijo y los vuelca en PREFIJOaa, PREFIJOab…; El tamaño por defecto es de 1000 líneas, y el prefijo por defecto es `x’. Sin información o cuando la información provista es ., leer la entrada estándar.

183 Argumentos de split -b, –bytes=TAMAÑO escribe TAMAÑO bytes en cada fichero de salida -C, –line-bytes=BYTES escribe un máximo de BYTES bytes sin cortar líneas -l, –lines=NÚMERO pone NÚMERO de líneas en cada fichero de salida –verbose muestra un diagnóstico en la salida de error estándar antes de que cada fichero sea abierto –help muestra esta ayuda y finaliza –version informa de la versión y finaliza TAMAÑO debe ser un múltiplo del sufijo: b 512, kB 1000, K 1024, MB 1000*1000, M 1024*1024, GB 1000*1000*1000, G 1024*1024*1024, y así para T, P, E, Z, Y.

184 Ejemplos de split split -b 22 prueba.txt nuevoEste ejemplo cortará el fichero prueba.txt en ficheros distintos llamados nuevoaa, nuevoab y nuevoac, cada uno de 22 bytes. split -l 500 prueba.txt nuevo Este ejemplo generará ficheros de 500 líneas cada uno, nuevoaa, nuevoab, nuevoac, etc…

185 time   Sintaxis: time [comando] Devuelve el tiempo de ejecución total, el tiempo que el sistema ha dedicado a ese usuario y el tiempo de preparación del programa o comando pasado como argumento.

186 PRACTICA 1.5 Realiza la práctica 1.5 y súbela a la plataforma.

187 11. sed y awk

188 sed Este comando también lo usamos mucho, porque nos permite, de una forma cómoda, borrar líneas, registros o sustituir cadenas de caracteres dentro de las líneas. Para borrar una línea hacemos lo siguiente: sed 'nº_de_línead' fichero Podemos indicar un número de línea concreto. Por ejemplo: sed '1d' fichero

189 sed Podemos indicar un intervalo de líneas a borrar. Por ejemplo:sed '3,5d' fichero También podemos indicar que queremos borrar desde una determinada línea en adelante: sed '3,$d' fichero

190 sed Otro ejemplo útil es borrar las líneas en blanco de un fichero:sed '/^$/d' fichero A la hora de borrar, también podemos especificar una cadena, de tal forma que el comando borrará todas las líneas que contengan esa cadena. Ejemplo: cat fichero | sed '/^[ ]*$/d' > ficherodestino Lo anterior borrará todas las líneas en blanco de fichero.

191 sed Otro de los usos más interesantes de sed es sustituir cadenas. Podemos sustituir una cadena por otra de la siguiente manera: sed 's/cadena1/cadena2/' fichero Al ejecutar el comando anterior, se sustituye la primera cadena que encuentra por la segunda. Pero, si lo que queremos es sustituir todas las cadenas que encuentre, en cada una de las líneas, añadimos el parámetro g : sed 's/cadena1/cadena2/g' fichero

192 sed Sustituir la cadena1 por la cadena2 en un número de línea concreto: sed '5 s/USUARIO/usuario/g' fichero Sustituir son caracteres especiales como el tabulador: \t o el carácter de nueva línea: \n. Sustituir este carácter separador \t por otro carácter separador, como por ejemplo el punto y coma (;): sed 's/\t/;/g' fichero

193 awk  Awk busca ciertos patrones en la entrada, y la procesa de la manera especificada. Awk tiene una gran funcionalidad, Complejidad del lenguaje. awk dispone de un lenguaje completo, sintácticamente similar a C que tiene una gran potencia a la hora de reconocer patrones en la entrada, ya que permite especificar combinaciones de expresiones regulares.

194 awk Se procesa registro a registro y no línea a línea.En el lenguaje awk, un ‘registro’ es el equivalente a una ‘línea’ Awk separa automáticamente cada registro en campos que pueden utilizarse individualmente. Por defecto, un registro es una línea del fichero, lo que significa que el separador de registros es ‘\n’. Por defecto, un campo es todo aquello que esté separado por espacios en blanco, es decir, una palabra. El separador de campos por defecto es '[ \t]' (espacio y tabulador).

195 awk Una posible sintaxis de awk sería: awk [fichero_entrada]Un programa de awk es una secuencia de sentencias patrón-acción, con un formato determinado, en el que las acciones se ejecutarán si en el registro actual se cumple el patrón. El formato es el siguiente: patrón {accion} Suele ser necesario encerrar los programas de awk entre comillas, para evitar que el shell las interprete como caracteres especiales.

196 awk Hay que tener en cuenta dos cosas:Si no hay patrón, las acciones se ejecutan en todos los registros. Si no hay acciones, lo que se hace es ejecutar la acción por defecto, que es copiar el registro en la salida estándar.

197 Awk (ejemplos de uso) * Mostramos el nombre de usuario de todos los usuarios logueados en la máquina: who|awk '{print $1}' * Borramos todas las líneas vacías de un fichero: awk '!/^$/ {}' fichero * Mostramos el nombre de usuario y el intérprete que usa: awk 'BEGIN {FS=":"}; {print $1,$NF | "sort"}' /etc/passwd

198 Awk (ejemplos de uso) * Mostramos el nombre completo del usuario y su login: awk 'BEGIN {FS=":"}; {print $1,$5 | "sort"}' /etc/passwd

199 Variables en awk Como ya hemos dicho, awk dispone de un lenguaje completo, y, como cualquier otro lenguaje, dispone de variables. Las variables pueden ser de dos tipos: Variables predefinidas. Variables definidas por el usuario.

200 Variables predefinidas en awkFS (Field separator): Permite indicar a awk cuál es el caracter que separa los campos. Por defecto es el espacio. La forma de indicar a awk el caracter de separación de campos es la siguiente: FS = “caracter”. Por ejemplo: FS = ",". Si hacemos FS = "", estamos indicando a awk que cada carácter es un campo. NF (Number of fields): Contiene el número total de campos que contiene el registro que se está leyendo en cada momento. RS (Record separator): Contiene el carácter que indica a awk en qué punto del archivo acaba un registro y empieza el siguiente. Por defecto es el caracter “\n”.

201 Variables predefinidas en awkNR (Number of record): Contiene el número de orden del registro que se está procesando en cada momento. OFS (Output FS): La instrucción print inserta en la salida un carácter de separación cada vez que aparece una coma en el código. Mediante OFS, podemos indicar a awk que separe los campos mediante el separador que le indiquemos. Por ejemplo: OFS = ";"

202 Variables definidas por el usuarioEscalares: Almacenan un solo valor. Vectoriales: Como vectores o arrays. En awk, se pueden crear arrays asociativos, dado que el lenguaje nos permite usar una cadena como índice del array. Para referirnos a un elemento dentro de un array, lo haremos: nombre[ subíndice ].

203 Campos de entrada En Awk se considera cada registro del archivo de entrada como una sucesión de campos delimitados por un carácter dado. Este carácter es, por defecto, el espacio. En cualquier caso, podemos indicar a awk que considere otro carácter como separador de campos mediante la opción FS, tal y como podemos ver en ejemplos anteriores. Cada uno de estos campos se numera de forma correlativa, según su posición en la línea (o registro), de la siguiente manera: $1, $2, $3, ... Además, también podemos referirnos a la línea entera con $0. Se puede forzar a procesar una línea carácter a carácter, dejando la variable “separador de campos” FS sin contenido. Si hacemos ésto, en $1 se tendrá el primer carácter de la línea, en $2 el segundo, etc.

204 Ejemplo con awk Visualiza la lista de usuarios que se encuentran conectados en el sistema, mediante el siguiente formato: nº orden -- nombre usuario, totalizando el nº de usuarios. Ejemplo: root df01 3 – df02 Solución: who -u|awk 'BEGIN { i=0 } { i+=1; print i,"-",$1 } END { print "Total usuarios " i }'

205 Ejercicio con awk Visualiza todos los usuarios del sistema incluidos en el fichero /etc/passwd con el siguiente formato: root tiene el id 0 daemon tiene el id 1 ….

206 Estructura básica de un programa con awkEn el ejemplo anterior tenemos tres bloques: BEGIN { i=0 } { i+=1; print i,"-",$1 } END { print "Total usuarios " i }

207 Sentencia práctica en el procesamiento de ficherosawk '{ if (x % 2 == 0) print "x is even"; else print "x is odd" }'

208 Ejercicio utilizando awkSe necesita saber el número de usuarios que hay en el fichero /etc/passwd y si su ID es par o impar. Utiliza awk para resolver este ejercicio.

209 Expresiones regularesExpresión regular = patrón que define a un conjunto de cadenas de caracteres. Se construyen de forma análoga a las expresiones aritméticas. Existe la posibilidad de combinar expresiones simples; para ello, debemos emplear distintos operadores. La mayoría de los caracteres, incluyendo todas las letras y dígitos, son expresiones regulares que se definen a si mismos. Cualquier metacarácter con significado especial debe ser precedido del símbolo backslash para que pierda su significado especial.

210 Expresiones regularesUna lista de caracteres encerrados dentro de [] referencia cualquier carácter sencillo de esa lista. Si el primer carácter es un ^ entonces estaremos haciendo referencia a los caracteres que no aparecen en la lista. Los caracteres ^ y $ son metacaracteres que representan una cadena vacía al principio y al final de la línea, respectivamente. Los símbolos \< y \> representan una cadena vacía al principio y al final de una palabra. Una expresión regular que representa un carácter sencillo puede ser continuada con uno o varios caracteres de repetición.

211 Expresiones regularesCaracteres de repetición: ? El elemento precedente es opcional y debe coincidir al menos una vez. * El elemento precedente debe coincidir cero o más veces {n} El elemento precedente debe coincidir exactamente n veces + El elemento precedente debe coincidir una o más veces. {,m} El elemento precedente es opcional y debe coincidir al menos m veces. {n,m} El elemento precedente debe coincidir al menos n veces pero no más de m veces.

212 Expresiones regularesDos expresiones regulares pueden unirse con el operador |. La expresión resultante representa cualquier cadena que responda a uno de los dos patrones.

213 Ejemplos de expresiones regularespablo La cadena pablo ^pablo La cadena pablo al comienzo de una línea. pablo$ La cadena pablo al final de una línea. ^pablo$ La cadena pablo formando una única línea. niñ[oa] La cadena niño o niña

214 Ejemplos de expresiones regularesni[^aeiou]o La tercera letra no es una vocal minúscula. ga.o La tercera letra es cualquier carácter. ^....$ Cualquier línea que contenga 4 caracteres. ^\. Cualquier línea que comienza por punto. ^[^.] Cualquier línea que no comienza por punto.

215 Ejemplos de expresiones regularesniños* niño, niños, niñoss, niñosss, etc “niño” niño entre comillas dobles. “*niño”* niño con o sin comillas dobles. [a-z][a-z]* una o más letras minúsculas. [a-z]+ una o más letras minúsculas (sólo válido en algunas aplicaciones). .

216 Ejemplos de expresiones regulares[^0-9A-Z] cualquier carácter que no sea ni número ni letra mayúscula. [a-zA-Z] cualquier letra sea mayúscula o minúscula. [Ax5] cualquier carácter que sea A, x o 5. niño|niña|nada una de las tres palabras. (s|arb)usto la palabra susto o arbusto.

217 Ejemplos de expresiones regularesga?t[oa] gato, gata, gasto, gaita, etc. \ cualquier palabra que empiece por ga.   ño\> cualquier palabra que termine por ño \ la palabra niño o\{2,\} dos o más oes en una misma fila.

218 Importante expresiones regulares y grepSiempre que empleemos expresiones regulares con grep, deben se encerradas entre comillas dobles para que el interprete de órdenes no los considere. Si dentro de la expresión regular tenemos el metacaracter $ , deberemos emplear comillas simples en lugar de las comillas dobles.

219 Ejemplos de expresiones regulares y egrepEjemplo 1: Corchetes Sirven para hacer coincidir cualquier carácter(pero sólo uno) que se encuentre entre ellos # ls | egrep "[ab]00sor" a00sor b00sor

220 Ejemplos de expresiones regulares y egrepEjemplo 2: Paréntesis Hacen coincidir cualquier carácter(uno o más) que se encuentre entre ellos # ls | egrep "a(00)sor" a00sor

221 Ejemplos de expresiones regulares y egrepEjemplo 3: Cuantificadores * Coincide con cualquier carácter que le preceda cero o más veces # ls | egrep "na*uto" naaauto nauto

222 Ejemplos de expresiones regulares y egrep? Coincide con cualquier carácter cero o más veces # ls | egrep "a?sor" a00sor b00sor Coincide con cualquier carácter que lo preceda una o más veces # ls | egrep "a0+sor" a00sor

223 Ejemplos de expresiones regulares y egrepEjemplo 4: Llaves {} Establecen el número de veces que se repetirá el carácter que lo precede en la expresión # ls | egrep ".0{2}sor" a00sor b00sor

224 Ejemplos de expresiones regulares y egrepEjemplo 5: Metacarácteres | Coincide con cualquier carácter o carácteres a cada lado de la barra # ls | egrep "[a|b]00*" a00sor b00sor

225 Ejemplos de expresiones regulares y egrepEjemplo 5: Metacarácteres | Coincide con cualquier carácter o carácteres a cada lado de la barra # ls | egrep "[a|b]00*" a00sor b00sor

226 PRACTICA 1.6 Realiza la práctica 1.6 y súbela a la plataforma.

227 Ejemplos de expresiones regulares y egrep[^] Coincide con cualquier carácter no listado después del circunflejo . Coincide cuando es usado dentro de una expresión con cualquier carácter(pero sólo uno siempre que no sea cero. # ls | egrep "hu.vo" hu3vo huevo

228 Ejemplos de expresiones regulares y egrepEjemplo 6: Anclas Se utilizan para especificar en que posición se da el patrón. ^ Especifica que el patrón debe estar en el principio de la línea # ls | egrep "^h.*" hu3vo hueeevo huevo

229 12. Ficheros importantes de Linux

230 Archivo /etc/passwd La seguridad informática básicamente busca controlar los siguientes aspectos: ·            Confidencialidad: que la información esté protegida de intrusos. ·            Integridad: que los datos en estado de almacenamiento o transmisión/recepción se encuentren en estado óptimo. ·            Disponibilidad: que la información no esté restringida a aquellos usuarios/aplicaciones reales del sistema.

231 Archivo /etc/passwd Contenido del archivoroot:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/bash

232 Archivo /etc/shadow El fichero de shadow alberga pares de nombres de usuario y contraseñas, así como información contable, como la fecha de expiración, y otros campos especiales. Este fichero debería protegerse a toda costa, y sólo el root debería tener acceso de lectura a él.

233 Fichero /etc/groups El fichero de grupos contiene toda la información de pertenencia a grupos, y opcionalmente elementos como la contraseña del grupo (generalmente almacenado en gshadow) El formato es: nombregrupo:contraseña_cifrada:GID:miembro1,mie mbro2,miembro3 Un grupo puede no contener miembros, sólo un miembro o múltiples miembros, y la contraseña es opcional (y no se suele usar).

234 Archivo /etc/gshadow Similar al fichero shadow de contraseñas, este fichero contiene los grupos, contraseñas y miembros. De nuevo, este fichero debería ser protegido a toda costa, y sólo el usuario root debería tener permiso de lectura al mismo.

235 Archivo /etc/shells El fichero de shells contiene una lista de shells válidos, si el shell por defecto de un usuario no aparece listado aquí, quizás no pueda hacer login interactivamente. /bin/bash /bin/csh /bin/ksh /bin/sh /bin/tcsh /bin/zsh

236 Fichero /etc/fstab Los parámetros necesarios para montar un sistema de ficheros son: Tipo de sistema de ficheros: Es necesario indicarle el tipo de sistemas de ficheros a registrar. Así sabrá que funciones utilizar. Tipo de acceso: Si es de sólo lectura, sólo escritura o ambos. Dispositivo: ( p.e.: /dev/hda1, /dev/hdb, /dev/sda1,..., none si es el /proc, ya que se realiza sobre la memoria). Directorio: Indica el directorio sobre el que se va a montar, es decir, el directorio mediante el cual accederemos al sistema de archivos.

237 Fichero /etc/fstab Ejemplo: Montar el cdrom en el directorio /dev/cdrom. mount -t mount -t iso9660 /dev/hdb /mnt/cdrom

238 Contenido del /etc/fstabcontenido de /etc/fstab: # /dev/hda2 / ext2 defaults 1 1 /dev/hda3 /usr ext2 defaults 1 2 /dev/sda1 /home ext2 defaults 1 2 /dev/hdb /mnt/cdrom iso9660 user,noexec,nodev,nosuid,ro,noauto 0 0 /dev/fd0 /mnt/floppy vfat user,noexec,nodev,nosuid,rw,noauto 0 0 none /proc proc defaults 0 0 /dev/hda4 swap swap defaults 0 0 /dev/hda1 /mnt/dos vfat exec,dev,suid,rw,auto 0 0

239 Opciones del fichero /etc/fstabuser,nouser: permite/no permite a un usuario ordinario montar el sistema de ficheros. suid,nosuid: Permite/no permite tener ficheros con el bit de usuario definido. auto/noauto: Indica que sí/no se monta cuando hacemos mount -a. defaults: Aplica las opciones rw,suid,dev,exec,auto,nouser,async. exec/noexec: Permite/no permite la ejecución de binarios. ro,rw: Montar sólo lectura, lectura-escritura. sync/async: Todos los accesos I/0 al sistema de ficheros se realizarán en modo síncrono/asíncrono dev/nodev: Interpreta/no interpreta los dispositivos especiales de bloques/caracteres en el sistema de ficheros.

240 Archivo Crontab El comando crontab crea un archivo con su nombre de usuario en el directorio /var/spool/cron/crontabs (depende de la distro). Campos 1-5 especifican la hora a la que se ejecutará el comando: minuto (0-59) hora (0-23) día del mes (1-31) mes del año (1-12) día de la semana (0-6, donde 0=domingo) El sexto campo es una cadena que se ejecuta a la hora apropiada

241 Archivo Crontab Ejemplo de un fichero crontab 30  8    * * 4  echo “Reunión de personal hoy a las 10:00 AM”   0    0    * * *      rm *.tmp 2 > errfile

242 Ejercicio Crea una tarea en el crontab que incluya la hora en el fichero /home/usuario/horas.txt dentro de un minuto. Ejecuta el comando necesario para conocer si el proceso cron está ejecutandose, sino lo tendrás que arrancar tu mismo: /etc/init.d/cron start Si está iniciado → reinicialo. Para el proceso cuando lo hayas terminado de utilizar.