39
Curso Básico de UNIX Filtros. sort grep find fgrep y egrep tr uniq dd Preguntas y Ejercicios Bibliografía y Referencias Se da el nombe de filtros a un grupo de comandos que leen alguna entrada, realizan una transformación y escriben una salida. Además de los que veremos aquí, incluye comandos tales como head, tail, wc, y cut. sort La comparación u ordenación puede ser por caracteres ASCII o por valor numérico. La ordenación ASCII es la más parecida a la alfabética; sigue el orden del juego de caracteres ASCII. En este ordenamiento, los caracteres idiomáticos (vocales acentuadas, ñ) no se encuentran en el orden alfabético tradicional. En la ordenación numérica se respeta la ordenación por valor numérico de la cadena de caracteres: 101 va después de 21; en ordenamiento ASCII sería al revés. sort arch1 ordena según el código ASCII. sort -n arch2.num ordena numéricamente. Si no se indican campos de ordenación, la comparación se hace sobre toda la línea. Si se indican campos, la comparación se hace considerando la cadena de caracteres iniciada en el primer caracter del primer campo hasta el último caracter del último campo. sort -t: -k1,3 arch1.txt ordena por campos separados por ":", tomando en cuenta para la comparación los caracteres desde el primero del campo 1 hasta el último del campo 3. sort -t: -k1.3,3.5 arch1.txt ordena por campos tomando en cuenta desde el 3er. caracter del campo 1 hasta el 5to. caracter del campo 3. sort -nr arch2.num ordena en orden numérico descendente. sort -k3 arch3.txt ordena alfabéticamente, usando como cadena de comparación la comprendida desde el primer caracter del 3er. campo hasta el fin de lína. Como no se indica separador, los campos se definen por blancos (espacio o tabulador). find El comando find explora una rama de directorios buscando archivos que cumplan

Curso B sico de UNIX - Filtrosjtortone.com.ar/utnconfluencia/cusrobasicodeunixfiltros.pdf · Curso Básico de UNIX Filtros. sort grep find fgrep y egrep tr uniq dd Preguntas y Ejercicios

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

Curso Básico de UNIX

Filtros.

sortgrepfindfgrep y egreptruniqddPreguntas y EjerciciosBibliografía y Referencias

Se da el nombe de filtros a un grupo de comandos que leen alguna entrada, realizan unatransformación y escriben una salida. Además de los que veremos aquí, incluye comandostales como head, tail, wc, y cut.

sort

La comparación u ordenación puede ser por caracteres ASCII o por valor numérico. Laordenación ASCII es la más parecida a la alfabética; sigue el orden del juego de caracteresASCII. En este ordenamiento, los caracteres idiomáticos (vocales acentuadas, ñ) no seencuentran en el orden alfabético tradicional. En la ordenación numérica se respeta laordenación por valor numérico de la cadena de caracteres: 101 va después de 21; enordenamiento ASCII sería al revés. sort arch1

ordena según el código ASCII. sort -n arch2.num

ordena numéricamente.

Si no se indican campos de ordenación, la comparación se hace sobre toda la línea. Si seindican campos, la comparación se hace considerando la cadena de caracteres iniciada en elprimer caracter del primer campo hasta el último caracter del último campo. sort -t: -k1,3 arch1.txt

ordena por campos separados por ":", tomando en cuenta para la comparación los caracteresdesde el primero del campo 1 hasta el último del campo 3. sort -t: -k1.3,3.5 arch1.txt

ordena por campos tomando en cuenta desde el 3er. caracter del campo 1 hasta el 5to.caracter del campo 3. sort -nr arch2.num

ordena en orden numérico descendente. sort -k3 arch3.txt

ordena alfabéticamente, usando como cadena de comparación la comprendida desde elprimer caracter del 3er. campo hasta el fin de lína. Como no se indica separador, los camposse definen por blancos (espacio o tabulador).

find

El comando find explora una rama de directorios buscando archivos que cumplan

determinados criterios. El comando find en GNU es extremadamente potente, permitiendocriterios de búsqueda tales como:

el nombre contiene cierta cadena de caracteres o aparea con algún patrón:son enlaces a ciertos archivos;fueron usados por última vez en un cierto período de tiempo;tienen un tamaño comprendido dentro de cierto intervalo;son de cierto tipo (regular, directorio, enlace simbólico, etc.);pertenecen a cierto usuario o grupo;tienen ciertos permisos de acceso;contienen texto que aparea con cierto patrón.

Una vez ubicados los archivos, find puede realizar diversas acciones sobre ellos:

ver o editar;guardar sus nombres en otro archivo;eliminarlos o renombrarlos;cambiar sus permisos de acceso;clasificarlos por grupos.

find /var -name *.log -print

busca en el directorio /var los archivos terminados en .log, imprime sus nombres en la salida. find /tmp -size +200k -print

busca archivos mayores de 200k. En los argumentos numéricos, +N es mayor que N, -N esmenor que N, N es exactamente igual a N. find /var/spool/mail -atime +30 -print

busca archivos no accedidos hace más de 30 días. La opción -atime se refiere a tiempotranscurrido desde última lectura, -mtime desde última modificación de estado o permisos,-ctime de contenido. find /var/tmp -empty -exec rm {} \;

busca archivos vacíos y los borra. find /home -nouser -ls

busca archivos en los cuales en lugar del nombre de usuario dueño aparece un número (UID).Esta situación se da cuando la cuenta de usuario ha sido borrada pero han permanecido losarchivos creados por ese usuario.

grep

El comando grep (Global Regular Expression and Print) permite buscar las líneas quecontienen una cadena de caracteres especificada mediante una expresión regular. Lee laentrada estándar o una lista de archivos y muestra en la salida sólo aquellas líneas quecontienen la expresión indicada. La sintaxis es grep patrón archivos

donde el patrón a buscar es una expresión regular.

Crear un archivo con los días de la semana, uno por línea; llamarle dias. grep martes dias

grep tes dias

muestra las líneas del archivo dias que contienen la cadena "tes".

grep unix01 /etc/passwd

grep unix0[1-9] /etc/passwd

ls -l /usr | grep '^d'

lista sólo los subdirectorios del directorio /usr (la línea empieza con "d").

ls -l / | grep '.......rw'

lista sólo los archivos que otros pueden leer y escribir en el directorio principal.

grep '^[^:]*::' /etc/passwd

busca usuarios sin contraseña; caracteres al principio de línea que no sean ":", y luego "::" (elsegundo lugar, que es el de la contraseña, está vacío).

grep '^[^:]*:\*:' /etc/passwd

busca usuarios que no pueden entrar al sistema; tienen un * en el lugar de la contraseña; \escapa el significado del segundo *, que vale como caracter a buscar.

Ninguna expresión regular de grep aparea con un caracter nueva línea; las expresiones seaplican individualmente a cada línea.

Entre las opciones de grep se cuentan -i para evitar distinguir entre mayúsculas deminúsculas, -n para mostrar el número de línea y -v para buscar líneas que no contengan laexpresión regular indicada.

fgrep y egrep

Hay dos versiones de grep que optimizan la búsqueda en casos particulares:

fgrep (fixed grep, o fast grep) acepta solamente una cadena de caracteres, y no una expresiónregular, aunque permite buscar varias de estas cadenas simultáneamente;

egrep (extended grep), que acepta expresiones regulares extendidas con los operadores + ? |y paréntesis.

fgrep no interpreta metacaracteres, pero puede buscar muy eficientemente muchas palabrasen paralelo, por lo que se usa mucho en búsquedas bibliográficas; egrep acepta expresionesmás complejas, pero es más lento; grep es un buen compromiso entre ambos.

fgrep martes dias

busca la cadena martes en el archivo dias. En fgrep y egrep puede indicarse la opción -f buscar.exp, donde buscar.exp es un archivoque contiene la expresión a buscar: cadenas simples para fgrep, expresiones regulares paraegrep, separadas por nueva línea; las expresiones se buscan en paralelo, es decir que lasalida serán todas las líneas que contengan una cualquiera de las expresiones a buscar.Crear un archivo buscar.fgrep con las cadenas "tes" y "jue", una por línea. El comando fgrep -f buscar.fgrep dias

extrae del archivo dias las líneas que contienen estas cadenas. El comando grep soporta fgrep y egrep como opciones -F y -E, respectivamente. grep -F -f buscar.fgrep dias

egrep "tes|jue" dias

grep -E "tes|jue" dias

obtienen el mismo efecto del comando anterior. egrep "([0-9]+ab)*1234" archivo

busca cadenas comenzadas opcionalmente por un dígito y los caracteres ab, todo el

paréntesis 0 o más veces, y hasta encontrar la cadena 1234. Escribir grep -E es similar a egrep, aunque no idéntico; egrep es compatible con el comandohistórico egrep; grep -E acepta expresiones regulares extendidas y es la versión moderna delcomando en GNU. fgrep es idéntico a grep -F.

tr

El comando tr translitera los caracteres de la entrada: sustituye unos caracteres por otros. Lasustitución es caracter a caracter. Entre sus opciones se encuentran -d para borrar caracteres;-c para sustituir complemento de los caracteres indicados, es decir, que no sean ésos; y -spara comprimir caracteres repetidos en uno solo.

cat dias | tr a-z A-Z

convierte todo a mayúsculas. cat dias | tr -d aeiou

borra todas las vocales del archivo dias. Agregar al archivo dias líneas en blanco, varias seguidas, intercaladas entre los nombres delos días. cat dias

cat dias | tr -s "\n*"

convierte varios caracteres nueva línea seguidos en una solo; elimina renglones en blanco.

cat nota | tr -c "[a-zA-Z0-9]" "_"

transforma todos los caracteres que no sean letras o números en subrayas. cat nota | tr -cs "[a-zA-Z0-9]" "[\n*]"

transforma todos los caracteres que no sean letras o números en nuevalínea, y comprime lasnuevalíneas repetidas en una sola; deja cada palabra sola en un renglón.

ls -l /usr | tr -s " " | cut -f3,4

comprime los blancos en la salida para poder cortar campos.

uniq

El comando uniq excluye todos los renglones adyacentes duplicados menos uno; es decir,elimina renglones repetidos consecutivos. La opción -c escribe el número de ocurrencias alcomienzo del renglón.El siguiente ejemplo muestra las 5 palabras más frecuentes en el conjunto de archivos: cat *.txt | tr -sc A-Za-z '\012' | \

sort | uniq -c | sort -n | tail 5

cat lista todos los archivos, tr comprime el renglón eliminando blancos, sort los ordena, uniqcuenta las ocurrencias y elimina repetidos, sort -n ordena por cantidad de ocurrencias y tailmuestra las 5 ocurrencias más frecuentes.

dd

El comando dd es un convertidor de datos: convierte de ASCII a EBCDIC y a la inversa, cambialos tamaños de los bloques de registros, hace ajuste de blancos y otras transformacionesusuales cuando se manejan transferencias entre sistemas operativos distintos o datos enbruto, sin formato, como en los respaldos en cinta.

Preguntas y Ejercicios.

Bibliografía y Referencias.

Comandos: sort, find, grep, fgrep, egrep, tr, uniq, dd

Referencias: páginas man, nodos info, Kernighan-Pike[1987], Coffin[1989].

Víctor A. González Barbone vagonbar en fing edu uy

Instituto de Ingeniería Eléctrica - Facultad de Ingeniería - Montevideo, Uruguay.

Curso Básico de UNIX

Preguntas y Ejercicios.

Ficha Referencia: Filtros

Estructura de archivos.Estructura del archivo /etc/passwd: #nombre:contraseña:UID:GID:comentarios:dir_propio:shell jperez:Xdio0IKLLP:1130:103:Juan Pérez:/home/jperez:/bin/bashEstructura del archivo /etc/group: #grupo:GID:lista_usuarios docentes:103:victor,german,fernandoEstructura del archivo /etc/hosts: #número_IP nombre_máquina alias 10.137.137.250 liebre.cdi.edu.uy liebre localhost mailhostTodos los archivos anteriores pueden tener comentarios (líneas comenzadas por #).

1.Buscar a partir del directorio /var todos los archivos de nombre core y mostrar a) sus nombre;b) sus nombres en listado largo; c) eliminarlos.

2.Un archivo acceso.log de registro de accesos de usuarios a un sistema UNIX, genera unrenglón por acceso, el primer campo es el nombre del usuario, y los campos están separadospor ":".a) Escribir comandos que muestren el nombre de cada usuario y la cantidad de accesosregistrados, en orden alfabético.b) Extraer del archivo acceso.log las líneas correspondientes al usuario jperez del mes demayo del año 1997. La fecha figura en el formato "1300 15 Mayo 1997"; el primer número es lahora.c) Extraer del archivo acceso.log las líneas que correspondan al usuario jperez o al usuarioelopez.

3.En el archivo NoMBreS.tXT un mismo nombre puede estar en mayúsculas y minúsculas,mezcladas de diferentes maneras. Generar una lista de nombres en minúscula con los 7nombres que aparecen menos veces, sin importar como estén escritos.

4.Un archivo palabras.txt contiene palabras distintas una por línea. Extrar todas las palabrasque empiecen y terminen con vocal, en minúscula o mayúscula.

5.Usar el archivo /etc/passwd o el comando ypcat passwd si el sistema usa NIS, para resolverlas siguientes preguntas. En estos archivos pueden haber comentarios, líneas empezadas por#, que deben eliminarse de la búsqueda. Recordar que el caracter # es interpretado por elshell.

a) eliminar los comentarios.b) extraer una línea que muestre directorio propio y shell del usuario elopez.c) listar los usuarios que usan el shell /bin/bash.

d) listar los usuarios que no usan el shell /bin/bash.e) contar la cantidad de usuarios.

6.Realizar las tareas indicadas, si es posible; si no lo es, indicar los motivos. Presentar el archivo/etc/passwd ordenado según los siguientes criterios: a) ordenado por nombre de login de usuario. b) ordenado por número de usuario. c) ordenado por número de grupo y dentro de cada grupo por número de usuario. d) ordenado por número de grupo y dentro de cada grupo por campo de comentario.

7.Encontrar las 5 palabras más frecuentes en el texto historia1.txt, e indicar la cantidad deveces que fue usada cada una. Indicación: transformar primero todas las palabras aminúscula.

Víctor A. González Barbone vagonbar en fing edu uy

Instituto de Ingeniería Eléctrica - Facultad de Ingeniería - Montevideo, Uruguay.

Curso Básico de UNIX

Comandos de Usuario

Ultima revisión: Set 2001PropósitoMetalenguaje y convencionesReferencias

Comandos:

apropos banner cal cat cd chmod clear cmp cp cut date diff echo env exit filehead hostname id info less ln ls dir vdir mail man mesg mkdir more mv passwd pr

printenv ps pwd rm rmdir tail talk touch umask wc whatis which who whoami

Propósito:

Esta guía resume la sintaxis, opciones más frecuentes y ejemplos de uso de los comandosUNIX de más uso en la práctica. En descripción se presenta nombre del comando, sintaxisresumida, acción principal, opciones más usuales, ejemplos y observaciones, si las hay.

Esta guía no puede ni pretende sustituir la consulta de las páginas man.

Metalenguaje y convenciones:

... repetición del último item[] item opcional, puede estar o no{A|B} item opcional obligatorio, debe tomarse A o BTAB tecla o caracter tabuladorLF caracter nueva líneaCR caracter retorno de carroESPACIO caracter o tecla de barra espaciadorablanco caracter TAB o ESPACIO, delimita palabrasUID identificador de usuario (número)GID identificador de grupo (número)(su) requiere permiso de supervisor

Los items en minúsculas van tal cual, los items en MAYUSCULAS deben ser sustituídos porvalores del usuario.

apropos

apropos [OPCIONES] PALABRA-CLAVE ...

busca entre las descripciones cortas de las páginas del manual la presencia de la palabraclave.

-r interpreta cada nombre como una expresión regular

-w interpreta cada nombre como conteniendo caracteres comodines

apropos man

apropos -w man*

banner

banner MENSAJE

Muestra el mensaje (cadena de caracteres) en letras grandes y girado 90°; para imprimircarteles.

-wN en un ancho de N columnas

banner -w 40 Hola!

banner a

cal

cal [OPCIONES] [[MES]AÑO]

Sin parámetros, muestra calendario del mes actual; el año debe indicarse con centuria,1-1999; el mes en número 1 a 12.

-j día juliano, contado desde el 1 de enero

-y calendario del año en curso

cal

cal 1998

cal 11 1997

cal 9 1752

muestra el mes del año en que se saltearon 11 días para compensar años bisiestos.

cat

cat [OPCIONES] [ARCHIVO ...]

Concatena los archivos indicados y los muestra en la salida estándar. Sin argumentos, recibede la entrada estándar (-).

-A equivalente a -vET

-b numera las líneas que no están en blanco

-E muestra $ al final de cada línea

-n numera las líneas

-s reemplaza varias líneas en blanco por una sola

-t equivale a -vT

-v muestra caracteres no imprimibles excepto LF y TAB

-T muestra TAB como ^I

cat /etc/group

cat cap1 cap2 cap3

muestra sucesivamente los archivos cap1, cap2 y cap3. cat cap1 cap2 cap3 > libro

reúne los archivos cap1, cap2 y cap3 en el archivo libro. cat arch1 arch2 > arch1

hace perder los datos originales en arch1.

cd

cd [DIRECTORIO]

cambia directorio de trabajo; sin parámetros, cambia al directorio propio del usuario comoaparece en $HOME. En Linux, es un comando interno del shell; ver bash(1). cd /etc

cd

chmod

chmod [OPCION] MODO ARCHIVO ...

cambia los permisos de acceso a los archivos indicados. No cambia los permisos de losenlaces simbólicos. -v verboso, describe acción sobre cada archivo.

-R recursivo, cambia permisos de subdirectorios y sus contenidos

chmod -R 0755 documentos/visibles

chmod ug+rw-x,o+r-wx cap*.txt

clear

clear

borra la pantalla del terminal.

cmp

cmp [OPCIONES] ARCH1 ARCH2 [SALTEAR1 [SALTEAR2]]

compara dos archivos. Si son iguales, no dice nada; si difieren, marca el byte y el número delínea de la primera diferencia.

-l número de byte (decimal) y bytes diferentes (octal) para cada

diferencia.

-s devueve solamente un valor de retorno, sin escribir nada.

Los valores de retorno son 0 si los archivos son iguales, 1 si diferen, >1 si hubo un error. Losvalores decimales SALTEAR1 y SALTEAR2 indican la posición de byte donde comienza lacomparación en ARCH1 y ARCH2; puede expresarse en hexadecimal precediento el número con0x, o en octal precediendo con 0.

cp

cp [OPCIONES] ARCH_ORIGEN ARCH_DESTINO

cp [OPCIONES] ARCHIVO ... DIRECTORIO

copia ARCH_ORIGEN hacia ARCH_DESTINO; copia los archivos indicados hacia DIRECTORIO. Pordefecto no copia directorios.

-d copia enlaces simbólicos como tales

-f forzoso, sobreescribe archivos destino si existen

-i avisa antes de sobreescribir archivos existentes

-l crea enlaces hard en lugar de copiar los archivos

-p preserva dueño, grupo, permiso y fecha

-s crea enlaces simbólicos en lugar de copiar los archivos

-R recursivo, copia directorios y sus archivos

-v verboso, escribe el nombre de cada archivo que copia

cp arch1 /dir1/arch1

cp -vi arch1 arch2

cp -dpRv dir1 /dir2/subdir2 dirtodo

mejor forma de copiar exactamente una estructura de directorios, recursivamente, conservandopermisos y manteniendo enlaces simbólicos; verboso puede omitirse.

cut

cut -f CAMPOS [-d DELIM][ARCHIVO ...]

cut -c COLUMNAS [ARCHIVO ...]

extrae partes de cada línea de los archivos indicados o de la entrada estándar. Los campos ycolumnas se indican con números 1, 2,... o con intervalos n-m. Intervalos incompletos: -n es1-n, m- es m hasta el último campo o columna.

-f campos numerados, por defecto separados por TAB

-c columnas, ubicación posicional de caracteres en la línea

-d fija el caracter delimitador de campos, TAB por defecto

-s con -f para no imprimir líneas que no contengan el delimitador

cat /etc/passwd | cut -d: -f1,3,5-6

cat /etc/passwd | cut -c1-15

ls -l | cut -c57-

corta sólo el nombre del archivo, al final (puede requerir ajuste en el valor de columna).

date

date [OPCION] [+FORMATO]

muestra fecha y hora. Con +FORMATO la presenta según el patrón indicado.

date [-u|--utc|--universal] [ MMDDHHmm [[CC]YY][.SS] ]

fija (su) fecha y hora.

-u --utc --universal hora universal (GMT)

Formato para fijar la hora:MM mes (01-12)

DD día (01-31)

HH hora (00-23)

mm mminuto (00-59)

CC centuria

YY año

SS segundos (00-59)

Formato para presentar la fecha y la hora (+FORMATO):

'%H' hora (00-23)

'%M' minuto (00-59)

'%S' segundos (00-59)

'%T' hora en 24 horas (hh:mm:ss)

'%X' hora en representación local (%H:%M:S)

'%a' nombre local abreviado del día

'%A' nombre local completo del día

'%b' nombre local abreviado del mes

'%B' nombre local completo del mes

'%c' fecha y hora locales

'%d' día del mes (01-31)

'%m' mes (01-12)

'%w' día de la semana (0-6), 0 es Domingo

'%x' fecha local

'%y' 2 dígitos del año (00-99)

'%Y' 4 dígitos del año (1970....)

diff

diff ARCHIVO1 ARCHIVO2

muestra las diferencias existentes entre dos archivos.

diff nota1 nota2

echo

echo [OPCIONES] MENSAJE ...

escribe en la salida estándar los mensajes, separados con un espacio y con LF al final.Muchos shells tienen un comando interno del mismo nombre; éste, fuera del shell, debeinvocarse como /bin/echo.

-n suprime LF al final

-e interpreta estos caracteres especiales, dentro de " "

\a campana

\b retroceso

\c suprime LF al final

\f cambio de página

\n nueva línea (LF)

\r retorno de carro (CR)

\t tabulador horizontal

\v tabulador vertical

\\ barra inversa

\nnn caracter ASCII nnn en octal

echo Hola Todos!

echo -n Hola Todos!

echo -e "\a"

echo -e "\101"

muestra la letra A, que es 101 en octal.

env

env [OPCIONES][NOMBRE=VALOR]...[COMANDO [ARGUMENTO ...]]

Sin argumentos, muestra valores de variables de ambiente; con argumentos, corre el comandoindicado con las variables de ambiente modificadas según se indique.

-i comenzar con un ambiente virgen, ignorando el actual

env

env DIR=/etc listadir1

lista el contenido del directorio /etc; listadir es un archivo ejecutable que contiene la línea lsdir1, para listar contenido del directorio dir1. echo Directorio $HOME

ls -l $HOME

muestra el directorio propio del usuario, guardado en la variable de ambiente HOME.

exit

exit [N]

produce la salida del shell con estado de terminación N (número); si no se indica retorna con0.

file

file OPCIONES ARCHIVO

intenta determinar el tipo de archivo de que se trata: texto ASCII, código C, script en diversoslenguajes, binario, otros.

-z examina archivos comprimidos

file cati.c

este archivo contiene código C. file adduser

este archivo es un script en Perl. file /bin/cat

es un ejecutable binario.

head

head [OPCIONES] ARCHIVO ...

muestra la primera parte de un archivo, por defecto 10 líneas. Si son varios archivos muestraun encabezado con el nombre de cada archivo. -v verboso, imprime encabezamiento con nombre del archivo

-q silencioso, no imprime encabezado con nombre del archivo

-N imprime primeras N líneas, por defecto 10

-n N imprime primeras N líneas

head -24 /etc/inetd.conf

hostname

hostname [NOMBRE]

sin argumentos, da el nombre de la máquina; con NOMBRE, fija el nombre de la máquina(su).

-h ayuda

-f --fqdn nombre de máquina completo, con dominio DNS

-d --domain nombre de dominio DNS

-i --ip-address dirección (número IP)

-a --alias nombres de alias

-v verboso

id

id [OPCIONES] [NOMBRE_USUARIO]

muestra información sobre un usuario. Muestra nombre, UID, grupo, GID y grupossuplementarios. Si el id real y el efectivo no corresponden muestra ambos. Las opcioneslimitan el despliegue.

-g sólo el grupo primario

-G grupos suplementarios

-n nombre en lugar de número; requiere -u, -g, o -G

-r real en lugar de efectivo; requiere -u, -g o -G

-u sólo el número de usuario (UID)

id

id webmaster

muestra datos del usuario webmaster.

info

info [NOMBRE]

sistema de información de GNU sobre UNIX. info info

muestra información sobre info, con tutorial para aprender a manejar info.

less

less [OPCIONES] [ARCHIVO]

programa de paginado y búsqueda similar a more, con más opciones y comandos. Permitemovimiento hacia adelante y atrás, pero no lee todo el archivo al principio, por lo que es másrápido. Sus comandos están tomados de more y vi (ver more).--help -? muestra ayuda sobre comandos internos

ln

ln [OPCIONES] ORIGEN [DESTINO]

ln [OPCIONES] ORIGEN ... DIRECTORIO

si el último argumento es un directorio, ln crea en ese directorio enlaces a todos los archivosorigen con el mismo nombre; si sólo se indica un nombre de archivo, crea un enlace hacia esearchivo en el directorio actual; si se indican dos archivos, crea un enlace con el primer nombre(archivo real) hacia el segundo (enlace). Por defecto, crea enlaces hard y no elimina archivosexistentes.

-f forzoso, elimina archivos destino existentes

-i interactivo, pide confirmación para eliminar archivos

-s simbólico, crea enlaces simbólicos en lugar de hard

-v verboso, da el nombre de cada enlace creado

ln nota nota.ln

ln -s /etc/passwd

ln -s datos.usuario datos.usu.ln

ln -sv datos.usuario LEAME dir2

ls, dir, vdir

ls [OPCIONES] [NOMBRE]

Para cada nombre de directorio, lista contenido de directorio; para cada nombre de archivo,indica su nombre y datos. La salida está ordenada alfabéticamente por defecto. Sin nombre,lista el directorio corriente. La opción -l muestra, separados por espacios, los campos tipoarchivo y permisos, cantidad de enlaces hard, dueño, grupo, tamaño, mes, día, hora o año,nombre.

-1 un nombre de archivo por línea

-a todos los archivos, incluso no visibles comenzados por .

-c ordenar por fecha de estado de último cambio (ctime en inodo)

-C salida en columnas con ordenamiento por columnas

-d lista directorios como archivos, no su contenido

-F indica tipo: / directorio, * ejecutable, @ enlace simbólico

-i inodo, número de índice de cada archivo

-k tamaños en KB

-l listado en formato largo

-r invertir ordenamiento

-R listar recursivamente subdirectorios

-s tamaño en bloques de 1024 bytes

-t ordenar por fecha de última modificación (mtime en inodo)

-u ordenar por fecha de último acceso (atime en inodo)

-U no ordenar

-x salida en columnas con ordenamiento por filas

direquivale al ls -C. vdir

equivale a ls -l.

mail

mail [OPCIONES] [DESTINO ...]

procesador de correo electrónico de UNIX. Sin argumentos, muestra lista de mensajes en lacasilla de entrada y permite manipularlos. Si hay un destino, lee de la entrada estándar hastaun "." aislado en una línea y envía lo leído como mensaje a destino.

-v verboso, muestra detalles de entrega

-s TEMA especifica el tema (subject) del mensaje

-c LISTA envía copias a LISTA de usuarios, separados por coma

-b LISTA envía copia ciega a LISTA de usuarios

-f [ARCH] lee contenido de archivo propio mbox o el indicado

-u USUARIO equivale a mail -f /var/spool/mail/USUARIO

Comandos internos de mail:& indicador de comandos de mail

? muestra lista de comandos para manejo de mensajes

d borra mensaje corriente, marcado con '>'

N muestra el mensaje número N

q sale del programa de correo

mail -s "Saludos para todos " -c pedro,[email protected] juan

envía un mensaje al usuario juan, tema "Saludos para todos", con copia a usuarios pedro ymateo.

man

man [OPCIONES] [SECCION] NOMBRE ...

Da formato y muestra las páginas del manual en línea. Si no se indica sección, muestra sólo laprimera que encuentre; si se indica sección como número 1-9, muestra la página que haya enla sección indicada. Las páginas están organizadas en secciones, reconocidas por un dígito, yeventualmente subsecciones indicadas por una o más letras.

-a muestra páginas en todas las secciones

-d muestra información de depuración propia de man

-f equivalente a whatis

-h muestra ayuda para man

-k equivalente a apropos

-w no imprime las páginas, sino las ubicaciones

Secciones del manual:

1 programas ejecutables y guiones (scripts)

2 llamadas al sistema (funciones del núcleo)

3 llamadas a biblioteca (funciones de biblioteca)

4 archivos especiales (generalmente en /dev)

5 formatos de archivos

6 juegos

7 paquetes de macros

8 comandos de administración (su)

man -h

man man

man -a man

mesg

mesg [y|n]

controla acceso de escritura a la terminal propia por otros usuarios, típicamente con programastales como talk y write. Sin parámetros, muestra el estado: is y si está habilitada escritura,is n si no está habilitada escritura.

y permite a otros escribir mensajes en la terminal

n no permite a otros escribir mensajes en la terminal

mesg

mesg y

mesg n

mkdir

mkdir [OPCIONES] [-m MODO] DIRECTORIO ...

crea los directorios indicados. Por defecto, el modo es 0777 menos los bits de umask.

-m MODO permite fijar el modo para el nuevo directorio;

el modo es simbólico y usa el modo por defecto como partida.

-p crea primero todos los directorios padre inexistentes,

con el modo de umask modificado con u+wx

--verbose informa sobre la creación de directorios

mkdir dir1 dir2

mkdir -p ltr/jd/jan

crea la estructura de directorios ltr/jd/jan.

more

more [OPCIONES][-N][+/CADENA[-N] [ARCHIVO ...]

pagina el texto dividiéndolo en pantallas, presentando una por vez.

-N fija tamaño de pantalla en N líneas

-d muestra mensajes de ayuda

-s comprime en una varias líneas en blanco seguidas

-u suprime subrayados

+/cadena busca la cadena antes de mostrar

+N comienza a mostrar a partir de la línea N

Durante el despliegue, reconoce los comandos siguientes, algunos de los cuales pueden irprecedidos de un número multiplicador:h muestra resumen de estos comandos

ESPACIO avanza una pantalla

ENTER muestra siguiente línea

f avanza una pantalla; ^F

b retrocede una pantalla; también ^B

^L (Ctrl-L) redibuja la pantalla

= muestra número de línea actual

/PATRON busca hacia adelante la expresión regular PATRON

?/PATRON busca hacia atrás la expresión regular PATRON

n repetir última búsqueda

. repetir el comando anterior

´ ir a lugar de comienzo de última búsqueda

q, Q sale

mv

mv [OPCIONES] ARCH_ORIGNEN ARCH_DESTINO

mv [OPCIONES] ARCHIVO ... DIRECTORIO

cambia de nombre ARCH_ORIGEN, o mueve hacia ARCH_DESTINO si el archivo destino invoca otro

directorio; mueve ARCHIVO y los siguientes archivos hacia DIRECTORIO. Entre sistemas dearchivos sólo puede mover archivos normales.

-f forzoso, sobreescribe archivos destino si existen

-i avisa antes de sobreescribir archivos existentes

-v verboso, escribe el nombre de cada archivo que mueve

-u no mover si existe archivo destino más nuevo o de igual fecha

mv nota notanueva

mv -vi LEAME LEAME2

mv -v arch1 notanueva LEAME /dir2/subdir2

passwd

passwd [OPCIONES] [NOMBRE]

cambia la contraseña del usuario. El superusuario puede cambiar las contraseñas de otrosusuarios. En general, las contraseñas deben tener entre 6 y 8 caracteres, contenermayúsculas, minúsculas, dígitos 0 a 9 o signos de puntuación; no se admiten contraseñassimples ni parecidas al nombre del usuario. Si el superusuario asigna contraseñas pocoseguras no hay advertencia.

-x M máximo número de días de validez; luego pide cambiar

-n M mínimo número de días antes de poder cambiar

-n M número de días de advertencia antes de expirar

passwd

permite cambiar la contraseña del usuario invocante passwd jperez

(su) cambia la contraseña del usuario jperez.

pr

pr [OPCIONES] ARCHIVO ...

escribe en salida estándar un texto con formato, paginado y opcionalmente en variascolumnas.

+P1[:P2] de página P1 a página P2

-C en C columnas

-a escribe las columnas a través y no hacia abajo

-d a doble espacio

-f separar páginas con salto de página

-h reemplazar encabezado con el indicado

-l largo de página en líneas; por defecto 66

-m escribir archivos en paralelo uno en cada columna

-o margen izquierdo; se suma al ancho indicado por -w

-w ancho de página en columnas; por defecto 72

pr -o8 -l23 -h "Lista de usuarios" /etc/passwd

pr -o2 -l22 -h "Lista de servicios" /etc/services | more

ls /etc | pr -2 -b -l23 | more

ls /etc | pr -3 -b -l23 -a | more

printenv

printenv [VARIABLE] ...

muestra el valor de todas las variables de ambiente; si se indica un nombre de variable,puestra el valor de esa variable.

printenv TERM

ps

ps [OPCIONES] [PID] ...

informa sobre procesos en ejecución. Para las opciones, no debe usarse -, aunque esaceptado.

l formato largo

u formto usuario, muestra nombre, PID, hora inicio, estado

j formato trabajos, muestra PGID y SID

s formato señales

a mostrar también procesos de otros usuarios.

x mostrar también procesos sin terminal de control

w no truncar líneas para caber en un ancho de página;

agregar una w para cada línea más

h sin encabezado

r sólo procesos en ejecución

ps auxwww | more

muestra todos los procesos en ejecución, en formato usuario, aún los sin terminal, admitiendohasta 4 líneas por comando.

pwd

pwd

imprime toda la ruta del directorio corriente; todos los componentes mostrados serán losdirectorios reales, no enlaces simbólicos. El shell tiene una versión interna de pwd, por lo quepara ejecutar ésta, que es externa, es preciso escribir

ls -l /var/spool/mail

muestra /var/spool/mail como enlace simbólico a /var/mail (Debian). cd /var/spool/mail

pwd

versión interna del shell, muestra /var/spool/mail, el enlace simbólico. /bin/pwd

versión externa, muestra /var/mail, el directorio real.

rm

rm [OPCIONES] NOMBRE ...

elimina los archivos indicados; por defecto no elimina directorios.

-f ignora archivos inexistentes y nunca pide confirmación

-i interactivo, pregunta antes de eliminar cada archivo.

-r, -R recursivo, borra directorios y su contenido

-v verboso, muestra nombre de cada archivo eliminado

rm arch1 arch2 dir1/arch3

rm -riv dir1/subdir1

rm -r *

elimina TODOS los archivos y subdirectorios; no avisa. ¡Cuidado!

rmdir

rmdir [OPCIONES] DIRECTORIO ...

elimina directorios vacíos.

-p elimina directorios padre si quedan vacíos

rmdir dir2

rmdir -p dir1/subdir11/subdir111

tail

tail [OPCIONES] ARCHIVO ...

muestra la última parte de un archivo, por defecto 10 líneas. Si son varios archivos muestra unencabezado con el nombre de cada archivo.

-f continúa tratando de leer; para archivos en crecimiento

-v verboso, imprime encabezamiento con nombre del archivo

-q silencioso, no imprime encabezado con nombre del archivo

-N imprime últimas N líneas

-n N idem

talk

talk USUARIO [TTY]

conversar con otro usuario. Si está en la misma máquina, alcanza con el nombre de login delusuario; si está en otra máquina, es preciso usar la forma usuario@maquina. Si el usuario tienevarias sesiones a la vez, puede indicarse la terminal, usualmente en la forma ttyXX.

touch

touch [OPCIONES] ARCHIVO ...

cambia fecha, hora de acceso y/o modificación de los archivos indicados; les pone la fecha yhora actuales. Si los archivos no existen los crea vacíos.

-a cambia sólo fecha de acceso

-c no crea el archivo si no existe

-m cambiar sólo fecha de modificación

-r arch_ref fija la fecha según fecha del archivo arch_ref

-t MMDDhhmm[[CC]YY][.ss]

fija la fecha indicando mes MM, día DD, hora hh y minuto mm;

puede agregarse también centuria CC y año YY y segundos ss.

touch 01011200 dia1enero.h1

touch ahora.arc

touch -r antes.arch arch1 arch2

umask

umask [-S] [MODO]

fija la máscara para permisos de creación según modo. Si modo se indica con número, es enoctal; si no, es en modo simbólico. En general, los permisos de creación serán, paradirectorios, 0777 menos los bits de máscara; para archivos 0666 menos los bits de máscara. Lamáscara vigente es la fijada por defecto o la que se fije con este comando. Sin parámetros,umask muestra la máscara vigente. La máscara indica los permisos que se quitan al permisofijado.

-S muestra la máscara, sin fijarla (por defecto, sin parámetros)

umask

muestra la máscara vigente. umask 022

fija los permisos de creación de archivos en 0666 - 022, es decir, 0644; los de directorios en2777 - 022, es decir, 2755 (Debian).

uname

uname [OPCIONES]

muestra información de la máquina y del sistema operativo:

-a toda la información

-m máquina, tipo de hardware

-n nombre de máquina en la red

-p tipo de procesador

-r edición (release) del sistema operativo

-s nombre del sistema operativo

-v versión del sistema operativo

wc

wc [OPCIONES] ARCHIVO ...

cuenta líneas, palabras y caracteres de los archivos indicados o de la entrada estándar. Si sonvarios los archivos, imprime una línea por cada uno y un total.

-c sólo caracteres

-w sólo palabras

-l sólo líneas

man pwd | wc -l

wc /etc/passwd /etc/group

whatis

whatis [OPCIONES] NOMBRE ...

muestra una descripción corta de los comandos similares a nombre.

-r interpreta cada nombre como una expresión regular

-w interpreta cada nombre como conteniendo caracteres comodines

whatis man

whatis -w man*

which

which PROGRAMA ...

indica la ruta completa de PROGRAMA, si éste está accesible a través de la variable PATH..

who

who [OPCIONES] [am i]

Quién está en el sistema. Muestra nombre de login, línea de terminal, hora de ingreso, nombrede máquina remota o display X. am i máquina y nombre de login del usuario invocante

-H muestra encabezado de columnas

-u tiempo inactivo; "old" es >24 horas; "." activo reciente

-w si el usuario recibe (+) o no (-) mensajes

-m igual que 'who am i'

whoami

whoami

Muestra identificador del usuario efectivo actual. Si se ha usado su para adoptar otro usuario,whoami muestra el nombre asociado con el usuario adoptado.

Referencias:

Linux Debian/GNU. Páginas man, info.

Víctor A. González Barbone - Ingeniero de Sistemas en Computación - http://iie.fing.edu.uy

/~vagonbar

E-mail: vagonbar en fing edu uy - E-mail personal: [email protected]

Instituto de Ingeniería Eléctrica - Facultad de Ingeniería - Montevideo, Uruguay.

Curso Básico de UNIX

Comandos de Filtro

Referencias

dd find grep, fgrep, egrep sort tr uniq

dd

dd OPCION ...

copia un archivo, de entrada estándar a salida estándar por defecto, opcionalmente cambiandotamaño de bloques de entrada salida y realizando diversas conversiones.

if=ARCHIVO leer la entrada del archivo indicado.

of=ARCHIVO dirigir la salida al archivo indicado.

ibs=BYTES leer la entrada en bloques de BYTES bytes.

obs=BYTES grabar la salida en bloques de BYTES bytes.

bs=BYTES leer y grabar entrada y salida en bloques.

conv=CONVERSION[,CONVERSION]... convertir según argumentos.

Las opciones numéricas admiten los multiplicadores b para 512, k para 1024.

Los argumentos de conversión se separan por comas sin espacios; incluyen:

ascii convierte EBCDIC a ASCII.

ebcdic convierte ASCII a EBCDIC.

ibm convierte ASCII a EBCDIC alternativo.

block embloca cada línea de entrada en 'cbs' bytes, reemplaza

nueva línea por espacio, rellena con espacios.

unblock reemplaza espacios finales de cada bloque con nueva línea.

lcase convierte mayúsculas a minúsculas

ucase convierte minúsculas a mayúsculas.

notrunc no truncar el archivo de salida.

find

find [DIRECTORIO...] [EXPRESION]

Recorre una jerarquía de directorios buscando archivos seleccionados según cierta expresión ymuestra información sobre los encontrados.

Argumentos numéricos:

+N mayor que N

-N menor que N

N exactamente N.

Criterios de búsqueda:

-name PATRON el nombre aparea con PATRON;

-iname PATRON idem,insensible a mayúculas;

-path PATRON nombre con vía completa;

-ipath PATRON idem, insensible a mayústulas;

-regexp EXP nombre aparea con expresión regular EXP

-iregexp EXP idem, insensible a mayúsculas;

-lname PATRON archivo es un enlace simbólico;

-ilname PATRON idem, insensible a mayúsculas;

-atime N último acceso N*24 horas atrás

-ctime N último cambio de estado N*24 horas atrás

-mtime N última modificación N*24 horas atrás

-amin N último acceso N minutos atrás

-cmin N último cambio de estado N minutos horas atrás

-mmin N última modificación N minutos atrás

-daystart mide tiempos desde las 0 horas de hoy

-size N[bckw] tamaño de N bloques, caracteres, KB o palabras (2 bytes)

-empty archivo vacío, regular o directorio

-user UNAME archivo del usuario UNAME

-group GNAME archivo del grupo GNAME

-uid N archivo del usuario de número N

-gid N archivo del grupo de número N

-nouser archivo sin dueño asignado

-nogroup archivo sin grupo asignado

Acciones:

-print imprime la ruta completa de los archivos encontrados.

-ls lista los archivos encontrados en formato ls -dils

-exec COMANDO {} \; ejecuta COMANDO sobre los archivos encontrados

find /usr/local/doc -name '*.texi'

busca en el directorio indicado los archivos de nombre indicado. find /usr/src -name '*.c' -size +100k -print

muestra nombres de archivos terminados en .c con tamaño mayor de 100 K. find . -lname '*sysdep.c'

busca enlaces simbólicos del nombre indicado. find /u/bill -amin +2 -amin -6

archivos que fueron leídos entre 2 y 6 minutos atrás.La medición de tiempos se hace desde 24 horas atrás (1 día atrás); para medir tiempos desdelas 0 horas del día de hoy, usar la opción -daystart. find ~ -daystart -type f -mtime 1

archivos que fueron modificados ayer. find / -empty -exec rm -rf '{}' ';'

busca archivos o directorios vacíos y los elimina. find . -name '*.h' -exec diff -u '{}' /tmp/master ';'

compara archivos de "header" (*.h) del directorio corriente contra el archivo /tmp/master.

grep, egrep, fgrep

grep [ -e PATRON | -f ARCHIVO | PATRON ] OPCIONES ARCHIVO ...

recorre los archivos indicados extrayendo las líneas que aparean con un patrón de cadena decaracteres.

-G el patrón es una expresión regular básica; opción por defecto

-E el patrón es una expresión regular extendida

-F el patrón es una cadena fija

Existen dos variantes: egrep, similar a grep -E, y fgrep, igual a grep -F.

-c sólo muestra la cantidad de líneas

-e PATRON usa el patrón indicado; útil cuando el patrón empieza con -

-f ARCHIVO obtiene los patrones del archivo, uno por línea

-h suprime indicación de archivo cuando se busca en varios archivos

-i ignora mayúsculas y minúsculas en el patrón y en los archivos

-n indicar número de línea

-v muestra las líneas que no aparean con el patrón

-w aparea el patrón como una palabra

-x el patrón aparea con toda la línea

sort

sort [OPCIONES] [ARCHIVO...]

ordena, mezcla o compara todas las líneas de los archivos indicados o de la entrada estándar.Tiene 3 modos de operación: ordenar, verificar orden, mezclar archivos.

-c verifica si los archivos ya están ordenados

-m mezcla archivos ordenados en uno solo, ordenado

-b ignora blancos adelante en la ordenación

-d ordena considerando sólo letras, números y blancos

-f ordena como si todas fueran mayúsculas

-i ignora caracteres no imprimibles (fuera de 040-0176 octal)

-n ordena como valores numéricos y no como ASCII

-r invertir el sentido de la ordenación

-o arch archivo de salida; puede ser el de entrada

-t usar el caracter indicado como separador de campos

-k POS1[,POS2] campos de ordenación, POS1 hasta POS2 inclusive;

o hasta el final si no hay POS2

Las posiciones POS1 y POS2 son de la forma F.C donde F es el número del campo y C es elprimer caracter desde el comienzo del campo (para POS1) o desde el final del campo (paraPOS2); si se omite C se ordena tomando en cuenta el primer caracter del campo.

cat /etc/passwd | sort -t:

cat /etc/passwd | sort -t: +4 -f | cut -d: -f5

cat /etc/passwd | sort -t: +5 | cut -d: -f6

cat /etc/passwd | sort -t: -n -k3,5 | cut -d: -f4,5

tr

tr [OPCION]... CONJ1 [CONJ2]

copia entrada en salida traduciendo, comprimiendo o borrando caracteres. CONJ1 y CONJ2definen un conjunto ordenado de caracteres a transformar. La opción -c reemplaza CONJ1 porsu complemento, los caracteres no especificados en el conjunto.

-d elimina los caracteres de CONJ1.

-s comprime caracteres repetidos en CONJ1 en una sola ocurrencia.

-ds primero borra según CONJ1 y después comprime según CONJ2.

El formato de CONJ1 y CONJ2 se parece al de las expresiones regulares, pero son sólo listasde caracteres. La mayoría de los caracteres se representan a sí mismos, pero existen lassiguientes abreviaturas:

\a Control-G,

\b Control-H,

\f Control-L,

\' Control-J,

\r Control-M,

\t Control-I,

\v Control-K,

\OOO caracter representado por dígitos octales

\\ barra inversa.

M-N intervalo de caracteres desde el M al N (M anterior al N)

0-9 equivale a 0123456789

La notación [:CLASE:] expande a los caracteres predefinidos en las clases:

alnum letras y números.

alpha letras.

blank espacio.

cntrl caracteres de control.

digit números.

graph caracteres imprimibles, excluído el espacio.

lower minúsculas

print caracteres imprimibles, incluído el espacio.

punct signos de puntuación.

space espacio

upper mayúsculas.

xdigit dígitos hexadecimales.

La traducción se realiza cambiando el primer caracter de CONJ1 por el primer caracter deCONJ2, el 2o. de CON1 por el 2o. de CONJ2, etc. Los caracteres no indicados en CONJ1pasan incambiados.

tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ

tr a-z A-Z

tr '[:lower:]' '[:upper:]'

convierten minúsculas en mayúsculas. tr -d '\000'

elimina caracteres nulos (octal 000). tr -cs '[a-zA-Z0-9]' '[\n*]'

separa las palabras una por línea. tr -s '\n'

comprime caracteres nueva línea en uno solo (elimina líneas en blanco).

uniq

uniq [OPCION]... [ENTRADA [SALIDA]]

muestra una única línea para una entrada ordenada, eliminando líneas repetidas sucesivas.Opcionalmente, puede mostrar solo líneas que aparecen una vez, o sólo líneas que aparecenvarias veces. La entrada debe estar ya ordenada; si no lo está, puede usars sort -u paralograr un efecto similar.

-f N saltear N campos antes de verificar unicidad.

-s N saltear N caracteres antes de verificar unicidad.

-c indicar junto a cada línea el número de veces que aparece.

-i ignorar mayúsculas y minúsculas al comparar.

-d mostrar sólo líneas repetidas.

-u mostrar sólo líneas únicas.

Los campos son cadenas de caracteres separadas por uno o más blancos (espacios otabuladores). Si se indican saltear campos y caracteres, los campos se saltean primero.

Referencias:

Linux Debian/GNU. Páginas man, info.

Víctor A. González Barbone vagonbar en fing edu uy

Instituto de Ingeniería Eléctrica - Facultad de Ingeniería - Montevideo, Uruguay.

���������������������� �����������������������������������������������

������������� ����������������������������� !�"��#� $%&�'(%) �*"+%��',%-,./ (01�. 2�0�� $,10) ,01�.+/��/-�0 3���4������ 5�.� 2�6���� $�.!,0) *�1�6+1�6"7-"16��6-�0 ������ !�"��#� $%&�'(%) �*"+%��',%-,./ 8� 9- 2�.."� $���:.�'�.) 0*,,;;;+<,6=�"�-1,= >�?4@A������������ !�"��#� $%&�'(%) �*"+%��',%-,./B"�;�. C,� D�==, $B"�;�.) '"�;�.+'<.,,,�-��6 C�.0"E� F-F $GHIGJIKGGL FG�MG)N"06."7�":, *,. O.��P(2 $QQQ-;.���,1-,./) 7�R, �"1��1"�� 866."7�6",�IS,�2,==�.1"��IT<�.�8�"'�K-G :� 1,==,�0 1.��6"U�VAAWXYY��@�A�Z@��[[��\]��Y_��@�\@\Yab��b\�Yc]dY

��������������������� ������� ���� ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� �������� !���������������������������������������������������������������������������������������������������������������������������������"#����������$���%��&'��(�����������)*�+ ,���&��-�.��)*���/�� ��� ���% ����������������������������������0������������ ������1��������2 ������� ,����,����'���������������������������������������������������������������0/�� ��� ����������������������������������������������������������������������������������������������������������������������������������34�-�.���&, ,��)5��������������������������������������������������������������������������������������������������������������������������67 '���� �����&���)�����������������������������������������������������������������������������������������������������������������������8+�������%��� ,�����9�%���������������%������&:�9�)�������������������������������������������������������������8+�9������,�;4�$4������������������������������������������������������������������������������������������������������������������<=+�9����������� ���������������������������������������������������������������������������������������������������������������������<=+�9������4�$4�������������������������������������������������������������������������������������������������������������������������<=/��,�������,�;4�$4����������������������������������������������������������������������������������������������������������������<</��,������������ �������������������������������������������������������������������������������������������������������������������<</��,�������4�$4�����������������������������������������������������������������������������������������������������������������������<<7 -� �9�' ���������������%������������������������������������������������������������������������������������������������<�

������������������ ������������������������������������������������������������������������ �������������������������������������������������������������������������� ����� ���!��"������������������#����������������������������������������������������������$���������!���������������������������������������������������������������%����������������%��$���� �������������������������������������������������������� ��������������&������������'����� ���������������������(������%�)))***+,������������������-����������������������������� ���������������'�������������������������������!�������������������������������������������������������������.������������������� ���������������� �����#��&/"�010������������������������������������������������������012�

������������������� ��������������� �������������������������������������������������������������������������� ���������� ���� �������������� ����������� ��������������� ��������������������� �������������������������������������������������� ���������������� � ������������ �������������������� ��� ������������� �������������� �������������������������������������������������� ��������������� ���!����������� ���������� ���������� ����������������������������������� ������������������������������������������������ ��������"�� ������������������� �������������������������������� ��������������������� ����� ��#����������������������������������� ���������$��������������������� �������������������$�������������� ��������������������������������������� ����������������������������������������� ������������ ������������ �������������������������������������������� ��������������� ��������������"����������� ����� �������������� ������������� ��������� ���������������������������������� �������������������� ������%�������������������������� ������������ ���������������������� ������������ ������������ �������������������������������������������������� ����&��������� �������� �������'&(�������������"��������������������"� ����� ����������� ��������� ���������"���������������������)*�&������������ ���������������������� ����������������������������������������������������������!������������������������������� �� �����������"���� ����+,-./0+���� ������������������ ��1�������������� ������� ��������������������� ���������� ���������������������������������� ������������"������� ������1 � ������� ��������"��������+,234� � ��5����������� ��6��������� ���������������� �� ���7������� ���� ������������� �������!������� ��������������������� ��� ������� �� �������� �������� ���������� ������� �������!�����������������������������������������������������"������������������������� ����������$����������������������������� ������� ������������ ������� �������� ��������������839.:2.+;-3<,=-:>�?�������� ��������"��������+,2=@,� � ��5����������� ��6���������������������� ����������������� ��������������������7������� ��� ������������� �������������� ��������������������������� ���A������������������������ ���������������� ���������������������������������� ������������������ �������� ���������������839.:2.+;-3<,=-:B� ������� ��������"��������+,2.--� � ��5����������� ��6���� ��"�A�������������������������� ��������������������������� ��������� �������������� ��������������������������������������� ��������������������������7������ ���� ����������� ������������� ��������������������������������������� ������� ������������� �� ��� �� ������ ����������������������� �������������������������������������� ����������� �������� ����� �� �������������� ������������������������ �������� �������������839.:2.+;-3<,=-:C������������ ����������������������� ����&��������� ������������������������ ���������������� �������������������������������������������"��������������������� ��������� ������������������������������������� ��������� ������������������������� ����������������� ���� �

���������������������� ������������������������� � ������������������������������ �������������������������������� ����� ������������������������ �������������� ���������������������������� �� ������������������� ��� ��� ����������� ��������� ���������������������������� ��������������������������������������������������� ������������������������������������������ ��������������������������������������� �� ��������������������������������������� ����� ��� ������ ��������!��"������ ��������������������� �������������������� ���������#��� �� ����������� ���������� �������������������������������$�������������������# ��� ��� ����� ������ � �������������� ���������� ����������������% ��������� �� ������������������ ����� ������������� ����& ��#�������������������������� ������� ����������� ����� �������������� ����������������� ������������������� ��������'���(������'�� ���������������������������)� �������� ��*!������������� ����������������������������������������������������������������+��,�������� �� ������� �������� ����� ����%���������� ���� ���� ����������������������������������� �������������� �������&� ������������ ����������������������� �������������������� ����#������������������ ����� ���������������������� ���������� ������������-��(������.!/�������������������������������� ������� ���������������������������������������0��������� �������������� �������������������������������������++��� �������� ����#������������ �� �������������- �1�.�������� ������������������0����������-��(������.!�������� ���������������� ��������� ���������������������������������� ���������� �����������������������������%���������������� ��������� ��#���������������������� �2 ��������������� �� ���� ������������� ����������������� �����3��������� ������������������ �����������2 ������� �������� �!4����5��� �� ����������� ������������ ������������������������� ����5������������������������ ��������� ����������������2������ ��#��������������� ������������ �������%������������������������� �����5������������������������������6������������3���������������������� ����� ���������������� �������� ������������ �������!

������������� �� ��� ���� ��������������������� �� �� ��� ���� �������������������� ��������������������������������� ���������������� � ������������������ ���������������� ���������� �������������� �� �� �������� ��������� ������������������� �� � � � ����� ��� ���������������� ������������ �� � �� ��� �!����������� ����������� ��������������� �����������"����� ������� �� �� ��� ��#������� � ��������������� ������������������� ��$��������������!��������� �� ������ ���������������� ����� �� ������ �������������������� ��������� ������$������������������� ����� ���������� ������% � �&����'������������������ ������%�����( �����'�(� �������� �� ���#���������������%� )��'*++,����������������������)��� ������ �������������������� ���������������������������������������� ������������������� �����������������)����������������������������� ���������������������������-������ ���� ������"�*�,��������������� ������������������� ���� �� ��� ��� �� ��� ���� ����� ����������������� �� ��������� �� ����� ����*���� ����� �� ��� ���������������������������++,���������������������� ���� ���������������������� �����������.� ����������� ����� ����/$�����������012�������������� �� ��������������������34(������� �� �����������������)�������������(�����������&�3�&��������5�������� �� ���#������ ������)������������������������������� �������

������������� ������������������� ��� ������������������ ������������� ��������������������������� ���� ������ ����������������� �������� ���� ������ ��������������!������ ��������������� ���� ������� ������������������������ ��� ������������ ������"�������� ��� ���������������������� ����������������""���� #�#�� ���$%��� ������������� �������������������������$%��� ���� ������ �������������$%��� �������� ���� ������ ���������������!�������&'��()��������� �� �� ������ ����� ���� ��� ����� �������� ��� ����� ���������������*���������������������������+����� ��� ���� �� ���,��������-�������� ������� ��������&������������������ �� ���,���� ����� ��.� ����� �*���������������� ���������������� ����������������������/������������� �� ������0�������*� ���� ��� ��������������������������� ��� ����������������1���2�345�������� ������� ������6���������������� ������ ����������������������������������������������� �������� ������������������.�����7����0���� �����������8��� ����� ���������-�������0� �����-�����%����9� ������6�������������� ��������������������(�����������������-���������������+� ��������� ������������� �� �.� ����������� �����(����7��������� ����������������� �7������������� 6��� ����� �� ��������� ��� ���� �����������+������������������������� �����-��.�� �� ��� �������������� �������$�6������������������� �� �.� ��� ��.�� �� ��� �������������� �����0������-�������������� ��� ������+��������6������4!��:� �7����0�����.�������������� �����������������1�����8��� �20��%����9� ������6��0 ��%�������*�� ����� ����,���� � (�� ��7����(

������������������ ����������������������������������������������������������������������������������������������������� ��������!"#$������%�������������������� ��������&#''��(�����������������������)������������������ ���������������������������*�������������������������������������������� ����������������� �������������������������������)������������������������������������+���������,��-������+�.����������������������-������+�����������������������/�������*�������������������������������� ����� ���������������� ������������0�� ����������� �%������������/��������������������������������������������������������� �%��(������1���������������������%������������)� ���������������������������0��/������������������������ �%���������� �%����������� ���������������+��������%��������������������� �%����+�������������������������������������������������������������������)������2������*�������������������������������/�������34� 52����������������� ���������� �%������������4� 6/���������2�����������������)���������������������7�����������������������������������������������(������/��������-���������� �%������8���������������������������0�����������������0���������7�� ��������������������������������/�����������0���������� �%����8�������*�����������%�������������������������������������������������������������������������������%������������� �%������������8�����3*����������+��/���������7����������������/�����1���������/���������������������*�����������/�������/�������������������������� �����������������������������������,��������������������������������� �����������������������7��������������������������������������������%������.��������������������������������-�������������������� �%������������������1���������/������������������/������������/������������������������������ ������*��������������������������������� ���������/������(������������������������������ ����/����������������������������������������������-����(�����-������/�������������������������� �%���9(5:;(�������������������������������������<�������=�����+��/�������������������� �%�������%������������������������������� ���������������������������������>������+������������� �%�������%�������������������������������������� ��������� +������?����������������������*�������������%����������������� �%�@ ��@��/��@�������3

����������������������� ������������������������������������������ ������������������������������������������������ ���������������������������������������������������������������� ����������������������������� ����������������������������������������������� ���!��"�������������#���������������������������������������������������$��������������������� ���������������������������������������������������������%������ ��&�����������%����������������������� �����������'�������������������������������������������������������(�����)���������*�����+��������%�����,��������-�����)�!���������������%�����������������������������������������(��,.�*��+.%��).-��..���������� ����������&������#/�����������������������0������&����������������������������� ��&���������������������������12�����������������(�����������)����+��12������*�����������+����+�� ����12�+������%�����������)����)�� ����12�����-�����������)����)���������)�� ����12�����3�� ����������444444�����������������5�� ���������� �#�����0��������������������������������������������������#�&��6 � �7��������

��������������� ���������������������������������������������������������������������������������������������������������������������������������������������� ��������������������������������������������������������������������������������� ����!����������������������������������������� ����������������������������������"�#��$�����"�����$%���"������&'(������������#��$���������������)� �������$�������������������������������������*���������������%������ ����������������������+����������������������������������$�������'(�����������������,�������)�*����������������������������������������������������������������������-�������������������*��������������������� ��������������� ����������������������.�������)�*��������������������������������������������/������������,� �-��������������������������0��������������������/���*�������������.��������������������1����0��������*�������������������������������������� ����������������������������������������

���������������� ���� ������������������������������ �!"��# �!"�$�!%�&�'���(�)*+�,�)���(�)*�,�*��-�"�%�.�/��)0� 1.�234�5��6������#,7"%��+�899�$��/ (:�9;<=>=;;89�������7?��������������������(7�)*�""�!%�,�����%�2���@A4��""%�.�&))������)0��)���6��6������#B�%��>+�899�$���/ (:��><>C8;=D<����5/�))���A)�����E�����"����7?��������:���������������/�76%�E7�6����5/�))���F��50��/ (:� 9999;CG9H0�#&7'7)���;+�8999$4���������)�I��?�4�J��K)*��L:MMKKKF7��?��J��KF��5M6��75���)M)N;=>CM7���9ODCO8C<CCCCM��P'�������:�KKKF"L�F��'&L7���)�� B:�*��L:MMKKK3�9<F�!5F��5M6�J�"�L��K��1)M�67M"36K3"��7?3"L��8�3�F*�5"�B��7�"�)�E��:�*��L:MMKKKF���'�7F��'M"L�35��7�")M�