Programación en BASH - Todo sobre redirección

3 - Todo sobre redirección

Tutorial creado por Mike G. Extraido de: http://www.insflug.org/COMOs/Bash-Prog-Intro-COMO/Bash-Prog-Intro-COMO.html
03 de Enero de 2007

3.1 Teoría y referencia rápida

Existen 3 descriptores de ficheros: stdin, stdout y stderr (std=estándar).

Básicamente, usted puede:

  1. redirigir stdout a un fichero
  2. redirigir stderr a un fichero
  3. redirigir stdout a stderr
  4. redirigir stderr a stdout
  5. redirigir stderr y stdout a un fichero
  6. redirigir stderr y stdout a stdout
  7. redirigir stderr y stdout a stderr
El número 1 'representa' a stdout, y 2 a stderr.

Una pequeña nota para ver todo esto: con el comando less puede visualizar stdout (que permanecerá en el búfer) y stderr, que se imprimirá en la pantalla, pero será borrado si intenta leer el búfer.

3.2 Ejemplo: stdout a un fichero

Esto hará que la salida de un programa se escriba en un fichero.

        ls -l > ls-l.txt
        
En este caso, se creará un fichero llamado 'ls-l.txt' que contendrá lo que se vería en la pantalla si escribiese el comando 'ls -l' y lo ejecutase.

3.3 Ejemplo: stderr a un fichero

Esto hará que la salida stderr de un programa se escriba en un fichero.

        grep da * 2> errores-de-grep.txt
        
En este caso, se creará un fichero llamado 'errores-de-grep.txt' que contendrá la parte stderr de la salida que daría el comando 'grep da *'.

3.4 Ejemplo: stdout a stderr

Esto hará que la salida stdout de un programa se escriba en el mismo descriptor de fichero que stderr.

        grep da * 1>&2 
        
En este caso, la parte stdout del comando se envía a stderr; puede observar eso de varias maneras.

3.5 Ejemplo: stderr a stdout

Esto hará que la salida stderr de un programa se escriba en el mismo descriptor de fichero que stdout.

        grep * 2>&1
        
En este caso, la parte stderr del comando se envía a stdout. Si hace una tubería con less, verá que las líneas que normalmente 'desaparecen' (al ser escritas en stderr), ahora permanecen (porque están en el stdout).

3.6 Ejemplo: stderr y stdout a un fichero

Esto colocará toda la salida de un programa en un fichero. A veces, esto es conveniente en las entradas del cron, si quiere que un comando se ejecute en absoluto silencio.

        rm -f $(find / -name core) &> /dev/null 
        
Esto (pensando en la entrada del cron) eliminará todo archivo llamado `core' en cualquier directorio. Tenga en cuenta que tiene que estar muy seguro de lo que hace un comando si le va a eliminar la salida.

5 opiniones

bajo

Creo que deberias elaborar algo nuevo y no solo copiar y pegar de un libro
Una pija

Lastima q copiaste y pegaste...
COpion

Lastima q copiaste y pegaste...
es un asco


n0 hay nd interesante..
he buscado por horas y nd encuentro.. deberían restringir estas páginas tontas..
BIEN

Esta muy bien explicado... me gustó.. encontré la respuesta que quería.

Tutoriales relacionados con 'Programación en BASH'

Este artículo pretende ayudarle a comenzar a programar shell scripts a un nivel básico/intermedio. No... Más »
Este documento describe el protocolo y los métodos a seguir para mantener y participar en... Más »
Si tuviera que buscar un adjetivo para calificar a Sendmail, pensaría en "excesivo". Excesivo puesto... Más »
El siguiente documento deriva del famoso feddi. Como que acompaña a los paquetes del FEddi+bt,... Más »
Debian es el nombre de una organización dedicada al desarrollo y mantenimiento de sistemas operativos... Más »

Autor y licencia de 'Programación en BASH'

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.