En UNIX la forma de realizar redirecciones es fuertemente dependiente de la shell utilizada; sin embargo, para estos primeros pasos se pueden destacar las características comunes a todas ellas que son, a la vez, las más utilizadas. En principio, se podría señalar que cada proceso UNIX tiene asociadas 3 vías de entrada/salida (E/S) estándares:
Una salida estándar (STDOUT) que por defecto se encuentra conectada al terminal (pantalla) asociado al proceso
Una entrada estándar (STDIN), que por defecto se encuentra asociada al mismo terminal (en este caso, al teclado)
Una salida de error (STDERR), que por defecto se encuentra conectada con la STDOUT
Estos puntos E/S pueden ser redirigidos de una manera en apariencia similar al DOS: así escribiendo
> nombre_fichero
tras el nombre de un comando, que producirá la redirección de su salida a un fichero. De manera análoga se actuará con la entrada escribiendo
< nombre_fichero
También es posible realizar redirecciones de la salida de error, que se estudiarán en el tema dedicado a shells.
El listado 1 ha sido generado mediante la instrucción:
ls -lF /etc > lsetc.txt
Este ejemplo ilustra también la opción -F del comando ls, que hará que aparezca:
un carácter / junto al nombre de los directorios
un * junto al nombre de los ejecutables
un @ junto a los enlaces simbólicos.
El comando ls en linux, además mostrará de distinto color cada tipo de fichero, según se indique en el /etc/DIR_COLORS.
En el capítulo anterior se veía como el comando cat podía mostrar el contenido de un fichero:
cat fichero
Del mismo modo, se podría haber redirigido la salida para copiar el fichero:
cat fichero1 > fichero2
Otro ejemplo de utilización sería no indicar el parámetro de entrada, con lo que el comando leería de la STDIN (teclado). Esto es algo que se puede realizar con un tipo especial de comandos UNIX llamados filtros que se estudiará más adelante. Así, por ejemplo:
cat > notas
copiaría todo lo que se tecleara al fichero notas (para indicar al comando que se ha finalizado habría que teclear CTRL + D). Equivaldría a un copy con: notas en DOS.
Una forma muy potente de comunicación entre procesos es el llamado pipe. Como se señalaba en el capítulo de introducción, un usuario puede ejecutar varios procesos e interconectarlos a través de pipes o tuberías, simbolizados por el carácter ¦ (ASCII 124). A través de un pipe, se realiza una llamada al sistema que interconecta la STDOUT de un comando con la STDIN del siguiente. Ambos procesos se ejecutarán concurrentemente, es decir, en paralelo. No hay que confundir un pipe UNIX con el mecanismo del DOS que utiliza el mismo símbolo, donde no existe concurrencia de procesos sino paso de información a través de ficheros temporales.
Como ejemplo útil, se podría teclear
ls ¦ sort ¦ more
que produciría una salida en pantalla y paginada del contenido del directorio actual ordenado alfabéticamente.