Existen 3 descriptores de ficheros: stdin, stdout y stderr (std=estándar).
Básicamente, usted puede:
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.
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.
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 *'.
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.
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).
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.