Está en la página 1de 9

ANEXO I

Redireccin 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 un modo de trabajo interactivo, el usuario espera interaccionar con el sistema
usando los dispositivos que se inventaron para tal efecto: los terminales.

La solucin que Unix adopta es simple, los dispositivos se tratan como ficheros. Por 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 estndar que se refieren a la E/S por defecto que usan los procesos.

Entrada estndar (stdin): Representa al dispositivo del cual un programa espera leer su entrada.
Salida estndar (stdout): Representa al dispositivo sobre el cual un programa espera recibir su salida.
Salida de diagnstico (stderr): Representa al dispositivo sobre el cual un programa escribir los mensajes de
error.

En general, si un programa espera una entrada y no se especifica ningn nombre de fichero, la entrada estndar para
este programa se toma como el teclado de la terminal del usuario. Normalmente, el resultado de la ejecucin de un
programa se lanza sobre la salida estndar que coincide con la pantalla del terminal del usuario.

Observemos el resultado de la ejecucin de las siguientes rdenes:


$ cat /etc/motd

$ cat
Hola a todos \\
La segunda ejecucin de cat repetir los mensajes escritos en la entrada estndar al no haberse especificado ningn
fichero.

Redireccin de la salida estndar.

Si un nombre de fichero est precedido por el smbolo >, la salida estndar de un programa se redirige hacia el fichero.
Comprobar

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

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

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

Segn esto, podemos usar este mtodo para crear un fichero vaco, 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
<Ctrl.>-d

Si queremos que la salida de un programa se aada al contenido actual de un fichero, usaremos el smbolo >>.
Ejemplo:

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

Si queremos que la salida de un programa se pierda, es decir, no aparezca ni en la pantalla, ni se almacene en ningn
fichero, podemos usar el dispositivo /dev/null, de la siguiente forma:

$ ls -l > /dev/null

Redireccin de la Entrada Estndar.

Al igual que se puede redirigir la salida estndar, se puede hacer lo propio con la entrada estndar. Para esto usaremos
el smbolo <.

$ tail -5 < salida.dat

En este caso, el proceso asociado a la orden tail no acta sobre un fichero especfico, sino que se aplica a la entrada
estndar. Como la entrada estndar est redirigida al fichero salida.dat, y la salida estndar por defecto est asociada a
la pantalla, el resultado de la orden ser el equivalente a la siguiente orden:

$ tail -5 salida.dat

La doble redireccin de entrada << texto se interpreta como sigue: el intrprete de rdenes lee de la entrada estndar
hasta una lnea que sea la palabra texto, o el fin de fichero.

Es interesante comprobar cmo la orden cat podemos usarla para crear un archivo nuevo, teclendolo en la entrada
estndar y controlando su final por la aparicin de determinada cadena de caracteres.
Ejemplo:

$ cat << final_archivo > texto.txt


La podemos usar como editor de textos de emergencia
Alejandro, maria, carlos, liliana, juan, estela, alberto, Noem,
O bien \^D (Control D para terminar) o en este caso

final archivo
Salida de Diagnstico.

De la misma forma que podemos redirigir la salida estndar, es posible almacenar la salida de error en un fichero,
usando 2>.

$ cat dir.dat noexiste.dat > salida.dat 2> error.dat


$ cat salida.txt

Como podemos suponer, Unix se refiere a los dispositivos de salida usando los nmeros correspondientes delante del
smbolo >. Si no se especifica ningn nmero delante de > Unix toma 1 por omisin.

Ejemplo Comprobar que la siguiente orden es equivalente a la anterior.

$ cat dir.dat noexiste.dat > salida.dat 2> error.dat

Si se quiere lanzar la salida de error hacia el mismo fichero que se lanza de la salida estndar, se usar la nomenclatura
2 >&1. Tambin se podr usar 1 >&2 para aadir la salida estndar a la salida error. Veamos un ejemplo con la orden
time que ejecuta una orden (en este caso wc -l que sirve para contar lneas), que se le pasa como parmetro, y
despliega en la salida una contabilidad de tiempos sobre su ejecucin.

$ time wc -l /etc/passwd

$ /bin/time wc -l /etc/passwd > num_users

$ cat num_users

Tuberas.

Unix tambin permite usar la salida estndar de un proceso como la entrada estndar de otro, tal y como si
colocramos una tubera que los uniera. A una secuencia de rdenes enlazadas de este modo, se le llama tubera
(pipeline). Para conectar dos procesos con una tubera, usaremos el smbolo |
$ who | sort

Ahora, la salida estndar de ls se usa como entrada estndar de sort que es un ejemplo de filtro que permite ordenar la
informacin.
Para construir una Tubera completa, es necesario poder bifurcar el flujo de datos mediante la insercin de una T.
La posibilidad que UNIX ofrece es el uso de la orden tee, que permite almacenar su entrada en un fichero y dirigirla
hacia su salida.

$ ls -l | tee dir.dat | sort

FILTROS BSICOS
A continuacin vamos a describir algunas rdenes que resultan tiles para el trabajo con ficheros y que se uso de los
mecanismos de redireccin y tuberas.

sort

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

sort [opciones] nombre

Clasificacin por defecto. Ordenacin alfabtica a partir del primer carcter de la lnea, donde la clasificacin puede
realizarse utilizando nmeros de campo:
split

El mandato split divide un fichero de texto en partes. La sintaxis es de la forma:

split [-lneas] nombre [prefijo]

Divisin por defecto. Crea ficheros xaa, xab,xac,xad con 1000 lneas aproximadamente.

$ wc -l /etc/termcap

$ split /etc/termcap
$ ls -l x???

Podemos tambin indicarle el nmero de lneas a incluir en cada uno de los ficheros:

$ rm x???
$ split ? /etc/termcap

$ split /etc/termcap ?
$ ls ?

O bien indicando el nombre de cada uno de los ficheros que se crean

wc

La orden wc cuenta el nmero de lneas (-l), palabras (-w) y caracteres (-c) de un fichero de texto. La sintaxis es la
siguiente:

wc [opciones] nombre .

$ wc direcciones

$ wc -l direcciones

$ wc -lc direcciones

tr

Esta orden permite cambiar o traducir los caracteres procedentes de la entrada de acuerdo a reglas que se especifican.
El formato general es:

tr [opciones] cadena_1 cadena_2

Para cambiar un carcter por otro: cambio del separador entre campos de un archivo con otro, por ejemplo (el
tabulador).

Para cambiar un conjunto de caracteres: poner maysculas todos los caracteres que aparecen en un archivo.

Eliminar los caracteres de control de fin de lnea que pueden aparecer al utilizar archivos en formato de texto MSDOS:

cut

El mandato cut recorta columnas o campos de un fichero. La sintaxis es la siguiente:

cut [opciones] nombre

Cortando columnas. Opcin -c, o bien cortando filas. Opcin -f. Por defecto, cut asume que los campos se encuentran
separados por tabuladores.

paste

El mandato une las lneas de varios ficheros. Sintaxis:


paste [opciones] nombre

grep

La orden grep permite realizar bsquedas de lneas que contengan texto que identifique a un objetivo o patrn que se
especifica. Se pueden utilizar para extraer informacin de los archivos, buscar lneas que se relacionen con un
elemento particular y para localizar archivos que contengan una palabra clave particular.

Los patrones a buscar se pueden realizar con metacaracteres, tanto en las expresiones como en la lista de nombres de
ficheros. El formato general de la orden es el siguiente:

grep [opciones] expresin [fichero]

Si queremos buscar ms de una palabra clave separadas por espacios en blanco, o se utilizan caracteres comodn, es
necesario encerrar la expresin entre comillas.

Algunas de las opciones de esta orden son:


-i La bsqueda no es sensible a maysculas/minsculas.
-n Muestra el nmero de lnea donde se ha encontrado la coincidencia.
-l Muestra los nombres de los ficheros pero no las lneas.
-v Muestran las lneas donde no se produce la coincidencia.

También podría gustarte