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 Enero 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. ""

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.