3. Todo sobre redirección
3.1 Teoría y referencia rápida
Existen 3 descriptores de ficheros: stdin, stdout y stderr (std=estándar).
Básicamente, usted puede:
- redirigir stdout a un fichero
- redirigir stderr a un fichero
- redirigir stdout a stderr
- redirigir stderr a stdout
- redirigir stderr y stdout a un fichero
- redirigir stderr y stdout a stdout
- redirigir stderr y stdout 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.
Página siguiente Página anterior Índice general