Semana 9 entradas salidas estandar y pipes

0 %
100 %
Information about Semana 9 entradas salidas estandar y pipes

Published on March 12, 2014

Author: victdiazm

Source: slideshare.net

Linux 1 Linux RHC030 Modulo 7. Standard I/O y tuberias (Pipes) Relator : Cristian Leiva

2© 2007 Linux. Todos los derechos reservados. Unidad 7 – Sistemas de Archivos Linux  Entrada estándar y salida estándar  Error estándar  Tuberías

3© 2007 Linux. Todos los derechos reservados.  Conceptos Claves  Los programas basados en la terminal tienden a leer información desde una fuente y a escribir la información en un destino.  La fuente desde donde se leen los programas se conoce como una entrada estándar (stdin, del inglés standard in) y suele estar conectada al teclado de la terminal.  El destino al que los programas escriben se conoce como una salida estándar (stdout, del inglés standard out) y suele estar conectada a la pantalla de la terminal.  Cuando se utiliza la shell bash, la stdout puede redirigirse mediante > o >> y la stdin puede redirigirse mediante <. Entrada estándar y salida estándar

4© 2007 Linux. Todos los derechos reservados. Tipos de Programas  Programas gráficos –Los programas gráficos están diseñados para ejecutarse en el entorno gráfico X. –Expect the user to be using a mouse, popup menus and buttons, for user input –Esperan que el usuario utilize el mouse y los componentes gráficos comunes tales como menús emergentes y botones para la entrada de datos –Ejemplo – Mozilla Web Browser  Programas de pantalla –Los programas de pantalla esperan utilizar una consola de texto. –Apropiados para terminales y consolas virtuales –Ejemplo – vi y nano  Programas de terminal –Reunen entradas y salidas de pantalla en un flujo –suelen llamarse simplemente comandos.

5© 2007 Linux. Todos los derechos reservados. Entrada estándar (stdin) y salida estándar (stdout)  Los programas de terminal suelen leer información como un flujo desde una sola fuente tal como el teclado de una terminal (stdin)  Generalmente, escriben información como un flujo a un solo destino como por ejemplo una pantalla (stdout)  Generalmente, stdin y stdout están conectadas a la terminal que ejecuta el comando.  Se considera conveniente redirigir (stdin) desde (stdout) hacia los archivos.

6© 2007 Linux. Todos los derechos reservados. Escritura de una salida a un archivo  La shell bash usa > para redirigir un flujo de stdout de proceso a un archivo. [elvis@station elvis]$ ps aux > sluggish.txt [elvis@station elvis]$ [elvis@station elvis]$ head sluggish.txt USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.0 1380 76 ? S Jun02 0:04 init [ root 2 0.0 0.0 0 0 ? SW Jun02 0:00 [keventd] root 3 0.0 0.0 0 0 ? SW Jun02 0:00 [kapmd]

7© 2007 Linux. Todos los derechos reservados. Agregando una salida a un archivo  Para agregar una salida de un comando a un archivo, en lugar de sobrescribirlo, bash usa >>. [elvis@station elvis]$ date > sluggish.txt [elvis@station elvis]$ ps aux >> sluggish.txt [elvis@station elvis]$ head sluggish.txt Tue Jun 3 16:57:23 EDT 2003 USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.0 1380 76 ? S Jun02 0:04 init [ root 2 0.0 0.0 0 0 ? SW Jun02 0:00 [keventd] root 3 0.0 0.0 0 0 ? SW Jun02 0:00 [kapmd]

8© 2007 Linux. Todos los derechos reservados. Redirección de stdin  bash usa < para hacer que lean entradas desde alguna parte diferente al teclado. [elvis]$ mail -s "Computer is sluggish" root@localhost@localdomain Hey root... I'm sending a list of processes that were running in a separate email. Thanks! --elvis . Cc: [elvis]$ mail -s "ps output" root@localhost@localdomain < sluggish.txt

9© 2007 Linux. Todos los derechos reservados. Archivos abiertos y descriptores de archivos  Con el fin de leer o escribir información en un archivo un proceso debe abrir el archivo.  Los procesos de Linux (y Unix) mantienen el registro de los archivos que están abiertos mediante la asignación de un número entero a cada uno.  El número entero se conoce como un descriptor de archivos.

10© 2007 Linux. Todos los derechos reservados. Archivos abiertos y descriptores de archivos  Cada proceso tiene un subdirectorio asociado bajo /proc llamado como su PID (ID del proceso). –El subdirectorio del proceso a su vez tiene un subdirectorio llamado fd (del inglés file descriptor). –Dentro del subdirectorio /proc/pid/fd, existe un enlace simbólico para cada archivo abierto por el proceso. –El nombre del enlace simbólico es el número entero del descriptor de archivo abierto y el enlace simbólico apunta al archivo mismo.

11© 2007 Linux. Todos los derechos reservados. Ejemplos stdin / stdout [elvis@station elvis]$ cat /etc/termcap [1]+ Stopped cat /etc/termcap [elvis@station elvis]$ [elvis@station elvis]$ ps PID TTY TIME CMD 1368 pts/1 00:00:00 bash 1910 pts/1 00:00:00 cat 1911 pts/1 00:00:00 ps [elvis@station elvis]$ ls -l /proc/1910/fd total 0 lrwx------ 1 elvis elvis 64 Sep 13 06:42 0 -> /dev/tty1 lrwx------ 1 elvis elvis 64 Sep 13 06:42 1 -> /dev/tty1 lrwx------ 1 elvis elvis 64 Sep 13 06:42 2 -> /dev/tty1 lr-x------ 1 elvis elvis 64 Sep 13 06:42 3 -> /etc/termcap

12© 2007 Linux. Todos los derechos reservados. Descriptores de Archivos  Como protocolo de Linux (y Unix), cada proceso hereda tres archivos abiertos tras el inicio. –Primero, descriptor de archivo 0, es la entrada estándar. –Segundo, descriptor de archivo 1, es la salida estándar. –Tercero, descriptor de archivo 2, es el error estándar. Flujo Descriptor Abreviació n Standard In 0 stdin Standard Out 1 stdout Standard Error 2 stderr

13© 2007 Linux. Todos los derechos reservados. Descriptores de Archivos <>

14© 2007 Linux. Todos los derechos reservados. Redireccionamiento [elvis@station elvis]$ cat /etc/termcap > /tmp/foo [1]+ Stopped cat /etc/termcap >/tmp/foo [elvis@station elvis]$ [elvis@station elvis]$ ps PID TTY TIME CMD 1368 pts/1 00:00:00 bash 1910 pts/1 00:00:00 cat 1911 pts/1 00:00:00 ps [elvis@station elvis]$ ls -l /proc/1910/fd total 0 lrwx------ 1 elvis elvis 64 Sep 13 06:42 0 -> /dev/tty1 lrwx------ 1 elvis elvis 64 Sep 13 06:42 1 -> /tmp/foo lrwx------ 1 elvis elvis 64 Sep 13 06:42 2 -> /dev/tty1 lr-x------ 1 elvis elvis 64 Sep 13 06:42 3 -> /etc/termcap

15© 2007 Linux. Todos los derechos reservados.  Conceptos Claves  Los programas Unix reportan condiciones de error a un destino llamado error estándar (stderr).  Usualmente, stderr está conectado a una pantalla de terminal y los mensajes de error se encuentran entremezclados con las salidas estándar.  Cuando se utiliza la shell bash, el flujo de stderr puede redirigirse a un archivo mediante 2>.  Al utilizar bash, el flujo de stderr puede combinarse con el flujo de stdout mediante 2>&1 o >& Error estándar

16© 2007 Linux. Todos los derechos reservados. Error estándar (stderr)  En la siguiente secuencia, elvis está utilizando el comando head -1 para generar una lista de las primeras líneas de todos los archivos en el directorio /etc/rc.d.  [elvis@station elvis]$ head -1 /etc/rc.d/*  ==> /etc/rc.d/init.d <==  head: /etc/rc.d/init.d: Is a directory  ==> /etc/rc.d/rc <==  #! /bin/bash  ==> /etc/rc.d/rc0.d <==  head: /etc/rc.d/rc0.d: Is a directory  ==> /etc/rc.d/rc1.d <==  head: /etc/rc.d/rc1.d: Is a directory  ==> /etc/rc.d/rc2.d <==  head: /etc/rc.d/rc2.d: Is a directory  ==> /etc/rc.d/rc3.d <==  head: /etc/rc.d/rc3.d: Is a directory  ==> /etc/rc.d/rc4.d <==  head: /etc/rc.d/rc4.d: Is a directory  ==> /etc/rc.d/rc5.d <==  head: /etc/rc.d/rc5.d: Is a directory  ==> /etc/rc.d/rc6.d <==  head: /etc/rc.d/rc6.d: Is a directory  ==> /etc/rc.d/rc.local <==  #!/bin/sh  ==> /etc/rc.d/rc.sysinit <==  #!/bin/bash  ==> /etc/rc.d/rc.sysinit.rpmsave <==  #!/bin/bash

17© 2007 Linux. Todos los derechos reservados. Ejemplo de Error estándar (stderr)  [elvis@station elvis]$ head -1 /etc/rc.d/* > rcsummary.out  head: /etc/rc.d/init.d: Is a directory  head: /etc/rc.d/rc0.d: Is a directory  head: /etc/rc.d/rc1.d: Is a directory  head: /etc/rc.d/rc2.d: Is a directory  head: /etc/rc.d/rc3.d: Is a directory  head: /etc/rc.d/rc4.d: Is a directory  head: /etc/rc.d/rc5.d: Is a directory  head: /etc/rc.d/rc6.d: Is a directory

18© 2007 Linux. Todos los derechos reservados. Error estándar (stderr)  Segundo flujo de salida –usado para reportar condiciones de error  Aunque no es obvio desde el principio, los comando realmente estan enviando salida a dos flujos independientes. –(stdout) –(stderr) [elvis]$ head -1 /etc/rc.d/* > rcsummary.out 2> rcsummary.err [elvis]$

19© 2007 Linux. Todos los derechos reservados. Combinación de stdout y stderr  Usando 2>&1 para combinar stdout y stderr se introdujo en la shell Unix original, la shell Bourne (sh). Dado que bash está diseñado para ser compatible con sintaxis anteriores sh también soporta esta sintaxis. Sin embargo, la sintaxis no es conveniente.  Para simplificar las cosas, bash usa >& para combinar stdin y stdout como en el siguiente ejemplo. [elvis@station elvis]$ head -1 /etc/rc.d/* >& rcsummary.both

20© 2007 Linux. Todos los derechos reservados. Redirección de stdin, stdout y stderr en bash

21© 2007 Linux. Todos los derechos reservados.  Conceptos Claves  El flujo de stdout desde un proceso puede estar conectado al flujo de stdin de otro proceso mediante lo que Unix llama una "tubería".  Varios de los comandos en Unix están diseñados para operar como un filtro, leer la entrada desde stdin y enviar la salida a stdout.  bash usa "|" para crear una tubería entre dos comandos. Tuberías

22© 2007 Linux. Todos los derechos reservados. Tubería (Pipes)  Pipe o tubería es una de las formas más comunes y eficaces para redirigir una combinación de la salida (salida estándar) de un comando la cual es "entubada" directamente dentro de la entrada (entrada estándar) de otro comando.  Con el fin de crear una tubería por medio de bash, los dos comandos se unen con una barra vertical |

23© 2007 Linux. Todos los derechos reservados. Ejemplo Tuberia (Pipe)  Usando el comando find para listar los archivos alfabeticamente [prince]$ find /etc -size +100k 2>/dev/null | sort /etc/aep/aeptarg.bin /etc/lynx.cfg.ja /etc/makedev.d/cciss /etc/squid/squid.conf /etc/squid/squid.conf.default /etc/termcap [prince]$

24© 2007 Linux. Todos los derechos reservados. Filtro de salida con grep  El comando grep se utiliza para buscar y extraer líneas que contengan una cadena de texto específico.  Ejemplo: Se trata de hallar un directorio llamado templates que se creó hace unos meses. Utiliza el comando locate para encontrarlo. [prince]$ locate templates | grep prince / home/prince/.kde/share/apps/quanta/templa tes /home/prince/proj/templates [prince]$  [prince@station prince]$ locate templates  /etc/openldap/ldaptemplates.conf  /usr/share/doc/libxslt-1.0.27/html/libxslt- templates.html  /usr/share/doc/libxslt-1.0.27/templates.gif  /usr/share/doc/docbook-style-xsl- 1.58.1/docsrc/templates.xml  /usr/share/man/man5/ldaptemplates.conf.5.gz  /usr/share/man/man3/ldap_free_templates.3.gz  /usr/share/man/man3/ldap_init_templates_buf.3.gz  /usr/share/man/man3/ldap_init_templates.3.gz  ... Con el fin de reducir la información a archivos más importantes, prince toma la stdout desde el comando locate y crea una tubería para la stdin del comando grep, "buscando" la palabra "prince".

25© 2007 Linux. Todos los derechos reservados.

Add a comment

Related presentations

Related pages

Semana 9 entradas salidas estandar y pipes - Documents

entradas y salidas 1. ENTRADAS Y SALIDAS Contabilidad y Finanzas 2. ENTRADAS Representan el dinero que la empresa recibe de alguna persona natural o ...
Read more

Semana 9 entradas salidas estandar y pipes - Documents

Flujo de Caja Es una herramienta de control y planificación de los ingresos y gastos que posee la Empresa. Sólo registra las entradas y salidas de efectivo.
Read more

Semana 9 - Standard IO and Pipes - Documents

Semana 9 standard io and pipes guia de ejercicios resuelta 1. ... Semana 9 entradas salidas estandar y pipes 1. Linux 1 Linux RHC030 Modulo 7.
Read more

Semana 9 - Standard IO and Pipes - Documents

1 Standard IO and Pipe Capítulo 1 Entrada estándar y salida estándar ... Share Semana 9 - Standard IO and Pipes. ... entremezclados con las salidas ...
Read more

Flu Project: Los Pipes! (C Boys)

... hoy hablamos de pipes, ... bucle en el cual repetirá el proceso 9 ... y ejecutar ciertos comandos obteniendo las salidas o entradas en ...
Read more

Comandos cal y ncal | Linux, C/C++, Apuntes, etc…

Entradas y salidas formateadas. ... Entrada y salida estandar. ... Muestra el calendario y el número de la semana (ncal).
Read more

Manual de Programación en el Lenguaje C (página 3 ...

... (tipo y nombre de argumentos) ... durante la semana se realizan diferentes ventas de los repuestos. ... las posiciones van de 0 a 9 ...
Read more