PDF de programación - Prácticas de Sistemas Operativos I - Práctica 2: Introducción a UNIX (II)

Imágen de pdf Prácticas de Sistemas Operativos I -  Práctica 2: Introducción a UNIX (II)

Prácticas de Sistemas Operativos I - Práctica 2: Introducción a UNIX (II)gráfica de visualizaciones

Actualizado el 24 de Noviembre del 2018 (Publicado el 24 de Enero del 2017)
1.773 visualizaciones desde el 24 de Enero del 2017
91,4 KB
17 paginas
Creado hace 22a (10/10/2001)
Prácticas de Sistemas Operativos I

Sistemas Operativos I
Manual de prácticas

Grupo de Sistemas Operativos

(DSIC/DISCA)

Práctica 2: Introducción a UNIX (II)

Página 1

Prácticas de Sistemas Operativos I

PRÁCTICA 2: INTRODUCCIÓN A UNIX II

INTRODUCCIÓN

D

espués de estudiar algunas órdenes básicas junto con el manejo de ficheros y directorios en
la práctica 1, continuamos con el aprendizaje de órdenes útiles para el trabajo con sistemas
UNIX. Concretamente se van a estudiar órdenes para la redirección de la E/S, la gestión de
procesos y las copias de seguridad.

REDIRECCIÓN DE E/S
Cuando se ejecuta un programa en UNIX, el proceso resultante, usualmente espera una entrada de
datos y normalmente produce alguna salida de resultados:
• En el modo de trabajo interactivo, el usuario introduce los datos desde teclado, y observa la salida

• En el modo de operación por lotes (no interactivo), tanto las entradas como las salidas se realizan

en pantalla.

sobre ficheros.

La solución que UNIX (y la mayoría de los sistemas operativos) adopta es tratar los dispositivos como
ficheros: para cada dispositivo conectado al sistema existe un fichero (o varios) al cual el usuario se
refiere cuando desea acceder al dispositivo.

En UNIX, existen tres ficheros estándar que se refieren a la E/S por defecto que usan los procesos.

• Entrada estándar: (stdin) Representa al dispositivo del cual un programa espera leer su entrada.
• Salida estándar: (stdout) Representa al dispositivo sobre el cual un programa espera escribir su

• Salida de diagnóstico: (stderr) Representa al dispositivo sobre el cual un programa escribirá los

salida.

mensajes de error.

En general, si un programa espera una entrada y no se especifica ningún nombre de fichero, la entrada
estándar para este programa se toma como el teclado de la terminal del usuario. Normalmente, el
resultado de la ejecución de un programa se lanza sobre la salida estándar que coincide con la pantalla
de la terminal del usuario. La salida de diagnóstico coincide por omisión, con la salida estándar.

Observe el resultado de la ejecución de las siguientes órdenes:

$ cat /etc/passwd
...
$ cat
Hola, procura no \\
aporrear el teclado.\\
<Crtl>-d
...

Página 2

Prácticas de Sistemas Operativos I

La segunda ejecución de cat repetirá los mensajes escritos en la entrada estándar, al no haberse
especificado ningún fichero.

REDIRECCIÓN DE LA SALIDA ESTÁNDAR

Si un nombre de fichero está precedido por el símbolo >, la salida estándar de un programa se redirige
hacia el fichero. Comprobar ...

$ ls -l > dir.dat
$ cat dir.dat
...

Si el fichero especificado no existía antes de la orden, se crea y si ya existía, se reemplazará su
contenido. Comprobar ...

$ ls -l > salida.dat
$ cat salida.dat
$ who > salida.dat
$ cat salida.dat
...

Según esto, podemos usar este método para crear un fichero vacío. Así:

$ > vacio

Para crear un fichero con un determinado contenido, podemos usar la orden cat redirigida:

$ cat > texto
cat es una orden útil para
generar ficheros nuevos.
<Crtl>d
$ cat texto
...

Si queremos que la salida de un programa se añada al contenido actual de un fichero, usaremos el
símbolo >>. Por ejemplo...

$ ls -l > salida.dat
$ cat salida.dat
$ echo Ultima linea >> salida.dat
$ cat salida.dat

Si queremos que la salida de un programa se “pierda”, es decir, no aparezca ni en la pantalla ni se
almacene en ningún fichero, podemos usar el dispositivo /dev/null, así:

$ ls -l > /dev/null

Página 3

Prácticas de Sistemas Operativos I

REDIRECCIÓN DE LA ENTRADA ESTÁNDAR

Al igual que se puede redirigir la salida estándar, se puede hacer lo propio con la entrada estándar.
Para ello usaremos el símbolo <.

$ tail -3 < salida.dat

La orden tail filtra su entrada, dejando pasar únicamente las últimas líneas (en este ejemplo las tres
últimas líneas). Como la entrada estándar está redirigida al fichero salida.dat, y la salida estándar
por defecto está asociada a la pantalla, el resultado de la orden será equivalente al siguiente mandato:

$ tail -5 salida.dat

La doble redirección de entrada
se interpreta como sigue:
• El intérprete de órdenes lee de la entrada estándar hasta una línea que sea la palabra word, o el fin

<< word

de fichero.

• El documento resultante se convierte en la entrada estándar.

Es interesante comprobar cómo la orden cat puede usarse para crear un archivo nuevo, tecleándolo
en la entrada estándar y controlando su final por la aparición de determinada cadena de caracteres.

Veamos:

$ cat << ”final_archivo” > texto.txt
>La orden cat es simple
>pero bien usada, puede
>servirnos como editor de textos
>de emergencia (si no hay otro disponible)
>final_archivo
$ cat texto.txt
...

NOTA.- el símbolo > que aparece al principio de cada nueva línea mientras editamos el texto indica
que el sistema sigue esperando datos

SALIDA DE DIAGNÓSTICO

De la misma manera que podemos redirigir la salida estándar, es posible almacenar la salida de error
en un fichero1, usando 2>.

$ cat dir.dat noexisto.dat > sal.dat 2> err.dat
$ cat sal.dat
...
$ cat err.dat
...


1 noexisto.dat se considera un archivo inexistente.

Página 4

Prácticas de Sistemas Operativos I

Como se puede suponer, UNIX se refiere a los dispositivos de salida usando los números
correspondientes delante de símbolo >. Si no se especifica ningún número delante de > UNIX toma 1
por omisión. Compruebe que la ejecución de la siguiente orden es equivalente a la anterior.

$ cat dir.dat noexisto.dat 1> sal.dat 2> err.dat
...

Si se quiere lanzar la salida de error hacia el mismo fichero que se lanza la salida estándar, se usa la
nomenclatura 2>&1. También se puede usar 1>&2 para añadir la salida estándar a la salida de error.
Veamos un ejemplo con la orden time que ejecuta una orden (en este caso wc –l que cuenta líneas),
que se le pasa como parámetro, y despliega en la salida de error una contabilidad de tiempos sobre su
ejecución2 .

$ time wc -l /etc/passwd
...
$ /bin/time3 wc -l /etc/passwd > num_users
...
$ cat num_users
...
$ /bin/time wc -l noexisto.dat > num_users 2>&1
$ cat num_users
...

TUBERÍAS
UNIX también permite usar la salida estándar de un proceso como la entrada estándar de otro, tal y
como si colocáramos una tubería que los uniera. A una secuencia de órdenes enlazadas de este modo,
se le llama tubería (pipeline). Para conectar dos procesos con una tubería, usaremos el símbolo |

$ who | sort
...

Ahora, la salida estándar de ls se usa como entrada estándar de sort que es un ejemplo de filtro
que permite ordenar la información (en un apartado posterior se describe éste y otros ejemplos más de
filtros). Es intuitivo pensar que las tuberías nos permiten construir procesos que operen en un “flujo”
de datos. Con el estudio de los “filtros” de UNIX esta posibilidad se convierte en un recurso muy
apreciado. Se pueden conectar varios procesos en una misma orden:

$ ls -l | sort | more
...

El ejemplo anterior conecta la salida de ls-l (contenido detallado del directorio actual) hacia sort,
que ordena las líneas resultantes y las envía a more, encargado de mostrar el resultado pantalla a
pantalla (tras cada pantalla espera a que el usuario pulse una tecla).


2 Es necesario que el usuario se asegure de invocar a time con su ruta de acceso completa o bien que el intérprete de
órdenes tiene su camino de búsqueda asignado (probar con “which time”).
3 Compruebe previamente si la orden time se encuentra en ese directorio o en /usr/bin. Para ello observe el
resultado de “which time”.

Página 5

Prácticas de Sistemas Operativos I

En ocasiones interesa bifurcar el flujo de datos para que una determinada salida sirva como entrada a
un fichero y simultáneamente se dirija hacia su salida. La posibilidad que UNIX ofrece es el uso de la
orden tee (inserción de una T):

$ ls -l | tee dir.dat | sort
...
$ cat dir.dat
...
En el ejemplo anterior, la salida del ls –l la ha dejado tee en el fichero dir.dat y a su vez se ha
pasado como entrada para que fuera procesada por sort. Normalmente, tee se aplica para bifurcar
aquellas salidas que ha costado bastante producir y que deben ser procesadas varias veces mediante
mandatos distintos.
FILTROS BÁSICOS

A continuación se describen algunas órdenes que resultan útiles para el trabajo con ficheros y que se
combinan con el uso de los mecanismos de redirección y tuberías. Estos filtros utilizan algunos
ficheros de ejemplo para actuar sobre ellos. Inicialmente tales ficheros no se encuentran en su
directorio de trabajo. Para copiarlos, utilice la siguiente orden:

$ cd
$ cp –R /practicas/asignaturas/so1/pr2/* .

Veamos cuáles son los filtros más importantes:

SORT

El mandato clasifica un fichero de texto. La sintaxis es:

sort [opciones] nombre...

Clasificación por defecto. Ordenación alfabética a partir del primer carácter de la línea

$ sort gente
Bill Williams
Charlie Smith
Hank Parker
Henry Morgan
Jack Austen
Jane Bailey
Maryann Clark
Sally Smith
Steve Daniels
Sylvia Dawson

100
122
114
112
120
121
101
113
111
110

Las líneas se dividen en campos delimitados por blancos. La clasificación puede realizarse
utilizando números de campo, con la opción –k desde,hasta:
- A partir del segundo campo
-Sólo el segundo campo

$ sort –k2 gente
Jack Austen
Jane Bailey

120
121

$ sort –k2,2 gente
Jack Austen
Jane Bailey

120
121

Página 6

Prácticas de Sistemas Operativos I

Maryann Clark
Steve Daniels
Sylvia Dawson
Henry Morgan
Hank Parker
Sally Smith
Charlie Smith
Bill Williams

101
111
110
112
114
113
122
100

Maryann Clark
Steve Daniels
Sylvia Dawson
Henry Morgan
Hank Parker
Charlie Smith
Sally Smith
Bill Williams

101
111
110
112
114
122
113
100

En el primer ejemplo se ordena por apellido y luego por número, y en el segundo sólo por ap
  • Links de descarga
http://lwp-l.com/pdf2117

Comentarios de: Prácticas de Sistemas Operativos I - Práctica 2: Introducción a UNIX (II) (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad