Entrada, salida y salida de errores estándar
Todos los programas en los sistemas UNIX poseen al menos tres flujos de información (ficheros) que el propio sistema operativo abre y se los asigna en el momento en el que se ejecuta dicho programa. Estos ficheros son los denominados: 'entrada estándar', 'salida estándar' y 'salida de errores estándar'. Como sus propios nombres indican, el flujo 'entrada estándar' es un flujo de entrada, es decir, sirve para que los comandos lean datos de él; los otros dos, son de salida, y por lo tanto, sirven para que los comandos escriban sobre ellos.
Hasta ahora se ha dicho que el comando tal escribe en la pantalla tal cosa; en realidad los comandos no escriben en la pantalla, sino que mandan la información de salida al flujo de la 'salida estándar', es decir, escriben sobre la 'salida estándar', lo que pasa es que el sistema operativo, por defecto conecta internamente la 'salida estándar' con el dispositivo de pantalla, y es por esto que vemos la información de salida de los comandos por la pantalla. Pero los sistemas UNIX poseen operadores para que el usuario pueda redireccionar la 'salida estándar' de un comando a otro sitio y, entonces ya no veríamos la salida de ese comando por la pantalla.
Por otro lado, el sistema operativo, por defecto, conecta internamente la 'entrada estándar' de los comandos al dispositivo de teclado, y al dispositivo de pantalla la 'salida de errores estándar'. Ojo, el que los dos flujos de salida estén conectados al mismo dispositivo, no significa que sean la misma cosa, siguen siendo dos flujos de datos de salida distintos, como si fueran dos tuberías de agua distintas que vierten sobre el mismo depósito.
La mayoría de los comandos, si no se les dice otra cosa, cuando tienen que escribir un dato (date la fecha, stat la información de un fichero, etc.) lo hacen sobre la 'salida estándar', que ya sabemos que está conectada a la pantalla, por eso decimos que el comando tal muestra por la pantalla tal información, pero ahora sabemos que no es exactamente así.
También, cuando los comandos tienen que mostrar un mensaje de error, lo mandan por la 'salida de errores estándar', y por defecto nos saldrá por la pantalla. Pero ya sabemos que ha llegado a la pantalla por una tubería distinta a la que utiliza la información de salida normal del comando.
Por último, casi todos los comandos que necesitan leer datos para trabajar con ellos, suelen cogerlos de los ficheros indicados en sus argumentos, pero si un comando no llevara especificado ningún fichero, por defecto, lee los datos de la 'entrada estándar', que sabemos que en principio está enchufada al teclado. Se suele decir que a tal comando si no se le especifica ningún fichero, este lee del teclado. Sabemos ahora realmente lo que sucede.
Mas adelante, veremos cómo utilizar operadores tales como >, <, 2>, etc., para conectar los flujos de datos estándar a otros sitios distintos de la pantalla y del teclado, normalmente ficheros; los comandos ya no escribirán sobre la pantalla sino sobre un fichero, y no leerán del teclado sino de un fichero, pero hay algo aún más interesante, podremos conectar la salida de un comando con la entrada de otro.
Licencia: licencia de software libre GPL