Curso de Linux - Redirecciones y tuberías

13 - Redirecciones y tuberías

[editar]
Curso gratis creado por Anónimo.
22 de Febrero de 2006
Redirecciones

Los comandos de Linux tienen una entrada estándar (número 0) y dos salidas estándar (número 1 para la salida normal del comando, y número 2 para la salida de los mensajes de error que se puedan producir en su ejecución). Por defecto tanto la entrada como las salidas estándar de los comandos son la propia terminal, a no ser que por la propia naturaleza del comando se den en él los nombres de algunos ficheros que hagan el papel de entrada y de salida. Por ejemplo, en el comando

cp file1 file2

file1 es la entrada y file2 es la salida; aquí no intervienen las entradas y salidas estándar. Sin embargo, cuando utilizamos por ejemplo el comando ls (listado de directorio), la salida de este comando se dirige hacia la terminal. Si queremos que la salida de este comando se dirija a un fichero llamado file, podríamos escribir,

ls >file

el (>) es uno de los llamados operadores de redirección y dirige la salida estándar hacia el fichero indicado a continuación; si este fichero no existe, se crea en ese momento. Otros operadores de redirección son el operador (<) que redirige la entrada estándar desde un determinado fichero, y el operador (>>) que redirige la salida estándar hacia otro fichero, pero añadiendo dicha salida al final de ese fichero, sin sobreescribir el contenido original. Por ejemplo, si cada vez que entramos en el sistema ejecutamos el comando,

date >>archivo tendremos un fichero llamado archivo que contiene información sobre todas las veces que hemos entrado en el sistema. Otro ejemplo, para añadir al fichero file2 al final de file1 y al conjunto llamarle file3, sería

cat file1 file2 >file3 o, si quisiéramos que el fichero resultante fuera el mismo file1,

cat file2 >>file1

Un ejemplo en redirección a la entrada podría ser el siguiente,

mail juan que envía al usuario juan el contenido del fichero carta.



Tuberías

Siguiendo con los ejemplos anteriores, si quisiéramos enviar a juan una lista de nuestros ficheros podríamos utilizar los comandos,

ls >fichero

mail juan

rm fichero

Es decir que hemos conectado la salida estándar de ls con la entrada estándar de mail, a través de un fichero transitorio filelist. Linux permite hacer esta operación directamente, sin pasar por el fichero de almacenamiento transitorio: esto se hace mediante el concepto de tubería (pipe), que consiste en empalmar la salida estándar de un comando con la entrada estándar de otro. Para el ejemplo anterior esto se hace en la forma,

ls | mail juan

Con el operador de tubería (|) se pueden empalmar tantos comandos como se desee.

Bifurcación o T (comando tee)

A veces interesa que la salida de un comando, además de redirigirse a un determinado fichero, se bifurque también hacia la terminal, con objeto de observar inmediatamente el resultado. Esto se consigue con el operador tee, que podría emplearse de la siguiente forma:

ls | tee file

la salida de ls se bifurca hacia la terminal y hacia file.

Si quisiéramos que la salida de este comando se añadiera al final de file, deberíamos utilizar la opción -a,

ls | tee -a file

Redirección de la salida de errores

Los mensajes de error se dirigen a la salida número 2, que normalmente es también la terminal. A veces, por ejemplo cuando se quiere ejecutar un comando en background (ejecutar un comando en background es lanzar su ejecución y recuperar el control de la terminal sin esperar a que termine, lo cual se hace añadiendo el carácter & al final del comando), interesa evitar que los mensajes de error aparezcan en la pantalla, pues en ella habremos empezado a hacer otra cosa.

Supongamos por ejemplo que queremos compilar y montar en background un conjunto de ficheros, dirigiendo los listados a un fichero llamado listados, y los mensajes de error a un fichero llamado errores. Lo haríamos en la forma,

gcc prueba.c 2>errores

con lo cual la salida 2 (errores) se redirige hacia el fichero errores. Para redirigir la salida estándar de errores al mismo fichero que la salida estándar se emplea un comando como:

program resultados.r 2>&1
[editar]

40 opiniones

Muy bueno

esta muy bueno pero le falta con acceso a paginas web
Redireccion y tuberias.

Esta muy bueno el articulo porque es bien conciso y es facil de entender, un ejemplo de ello es que pude encontrar una respuesta acertada a una duda sobre el significado del redireccionameinto, en con solo echarle una ojeada. Felicidades al autor y a este medio por publicarlo.
Excelente.

Muchisimas gracias me sirvio de mucho en realidad encontre todo lo que necesitaba esta muy claro todo lo relacionada con la estructura del sistema de ficheros en gnu/linux.
Incompleto.

La verdad yo buscaba otra cosa pero igual y si le añades lo demas pues estaria mejor o bueno al menos es lo que yo digo bueno espero y haya sido correcta mi opinion, saludos a los que trabajan en esto y pasensela chido.
Aprendiendo.

Solamente he usado arch, y me ha parecido bastante bueno. Es rapido, seguro y aunque le faltan algunos detallitos a la versión de 64 bits me agrada mucho, por es quiero aprender mas sobre linux y asi llegar a ser un linuxero profesional.
1 2 3 4 5 6 7 ... 8 | siguiente >

Cursos gratis relacionados con 'Curso de Linux'

Completo curso de Linux, un sistema operativo gratuito y de libre distribución inspirado en el... Más »
Completo curso básico de Linux. Todo lo que necesitas para iniciarte en el fascinante mundo... Más »
El objetivo de este curso es aprender a programar en el lenguaje Ada, desde sus... Más »
Este es un curso tremendamente completo, guiado y con ejemplos y prácticas pensadas para convertirlo... Más »
Práctico y completo curso de hacking.

Autor y licencia de 'Curso de Linux'


Curso gratis de Anónimo. Extraido de: CopyLeft
Este contenido ha sido recopilado por el equipo de Wikilearning. Todo el contenido recopilado se ha obtenido respetando y comunicando en nuestro site la licencia de cada fuente.
Wikilearning tiene permiso expreso por escrito de los autores para publicar los contenidos que ha extraído de otras webs, incluyendo su uso comercial.