Filtros

17 junio, 2015
admin
Comentarios desactivados

Las tuberías “ | ” no están limitadas a dos ordenes. Se pueden construir tuberías de cualquier longitud, sin más que asociar la salida standard de una orden a la entrada standard de la siguiente.
El sistema LINUX incluye muchas ordenes destinadas a ser utilizadas de este modo. Estas ordenes se denominan con frecuencia filtros, ya que transfieren su entrada a su salida, modificándola durante su paso a través del programa (orden). Los cambios particulares efectuados por una orden de filtrado dependen del tipo de orden.

Los filtros leen el fichero de entrada y escriben el resultado de su operación sobre la salida estándar.
Cada orden de gestión de información o filtro realiza unos cambios propios sobre la información del fichero de entrada, que dependen del programa específico utilizado.
En general, los filtros nunca modifican el fichero de entrada, simplemente escriben el resultado en la salida estándar. Si se desea que el resultado se almacene en otro fichero deberá redireccionarse esta salida.
Existe gran variedad de filtros, desde los más sencillos que operan ligeras modificaciones, hasta los más potentes que llevan a cabo operaciones complejas de manipulación de información, próximas a las manipulaciones de los editores de texto o de las bases de datos.

Resumiendo: Los filtros son ordenes destinadas a filtrar y/o modificar parte de la entrada en la salida standard.

Tuberías o pipes

Los tubos permiten conectar la salida de una orden con la entrada de otra.
Se utiliza el símbolo |
Le estamos diciendo al shell que tome la salida estándar de un proceso y la utilice como entrada estándar de otro proceso.
$who | wc -l

El tubo es equivalente a crear un archivo temporal intermedio:

$who > temporal
$wc -l < temporal
$rm temporal

La ejecución de las ordenes que componen la tubería es concurrente.
Pueden combinarse con las redirecciones. Hay que ir con cuidado.
$cat < arch1 | grep ‘abc’ | wc -l > arch2

La orden tee permite bifurca la salida estándar en dos, de forma que una la entubamos a otra orden y la otra la guardamos en un archivo.

$who | tee archivo | wc -l

Notas:
¿Existe diferencia entre > y | ? El operador > debe ir seguido siempre de un archivo, y el operador | debe ir seguido de un proceso.

Operadores  ;  &  `  ( )


Operador ; Para utilizar varias ordenes en una misma línea, separándolas con el carácter “;”. La ejecución es secuencial. Hasta que no termine la ejecución de la orden a la izquierda de ; no se lanzará la ejecución de la orden a la derecha del operador ;

Ejemplo:
$ls -la ; echo “Hola” ; clear
$cat archivo ; who ; ls


En este caso las órdenes no están interconectadas como sucede con los filtros, por lo que se trata de órdenes totalmente independientes.

Operador & Indica ejecución en modo subordinado. La ejecución es simultánea.
$ls & sleep 5
$sleep 5 & ls
$sleep 5 & ls & who &

Operador grave ` Sustituye el comando encerrado entre las comillas graves por la salida generada por él.

$mail `cat lista` < carta

Operador (  ) Si encerramos parte de la línea de comandos entre paréntesis el shell crea un subshell que interpretará esa parte de línea y lanzará los procesos implicados. Comparar la ejecución de:
$sleep 5 ; pwd &
$(sleep 5 ; pwd) &

Los paréntesis también son útiles cuando hacemos redirecciones. Ejemplos:
$sort | grep abc | wc -l < archivo
$sort < archivo | grep abc | wc -l
$(sort | grep abc | wc -l) < archivo

La 1ª es incorrecta ya que wc tiene redirigida su entrada dos veces. En este caso la tubería se pierde y solo contaría las líneas de archivo.

La 2ª y 3ª hacen lo mismo: ordenan archivo, buscan líneas que contengan el patrón abc y las cuenta.

Grupo de comandos.
Si se quiere redirigir la entrada (<) o salida (>) a todos los comandos como un grupo, se puede convertir la línea de comandos como un grupo de comandos.
Un grupo de comandos es cualquier número de ordenes incluidas entre llaves “{}”, dejando un espacio en blanco después de la llave de apertura y otro antes de cerrar la llave.

Ejemplo:
${ clear; ls -la | more } > archivo

CONTENIDO PATROCINADO POR

FPla Informatica

Diseño web y Marketing digital
Disponga de una página web o un comercio electrónico de alta calidad a precios muy competitivos.
ACCEDER A FPLA INFORMATICA
close-link