Redirección de la entrada/salida
Hasta ahora hemos introducido ordenes tecleándolas en el terminal y la salida de las ordenes se ha visualizado también en el terminal.
En realidad, la mayoría de las ordenes toman la entrada desde cualquier canal de entrada y escriben su salida sobre un canal de salida. Es decir, las ordenes se implementan de tal modo que leen una secuencia de caracteres como entrada y producen una secuencia de caracteres como salida. Estas secuencias de caracteres de entrada y salida se denominan flujos, ya que no hay realmente una estructura interna en las cadenas de caracteres. La orden tan solo ve una larga secuencia de caracteres como entrada.
El canal de entrada para una orden se denomina entrada estándar y el canal de salida se denomina salida estándar.
La entrada de una orden por defecto proviene del teclado del terminal y la salida va a la pantalla del terminal. Sin embargo se puede redirigir la entrada y la salida estándar a un fichero.
En Linux existen 3 archivos estándar que se refieren a la E/S por defecto que utilizan los programas.

Linux permite cambiar las asignaciones por defecto de estos archivos stdin, stdout y stderr mediante las redirecciones de E/S.
Los operadores de redirección son:
- < redirección de entrada.
- > redirección de salida.
- >> redirección y adición de salida.
$cat < arch1
el resultado del listado largo se guardará en arch2
$ls –l > arch2
$ls > tmp
redirecciona el contenido de arch1 añadiéndose al contenido de arch2
$cat arch1 >> arch2
$ls >> tmp
La E/S estándar y la redirección de canales están entre las características más generales y poderosas del sistema Linux y tienen algunas implicaciones importantes.
La mayoría de las ordenes están diseñadas para trabajar como simples flujos de bytes como entrada y salida, para hacer la redirección tan potente como sea posible. Casi todos los ficheros son sencillos flujos de bytes, sin la estructura interna que puede verse en sistemas de ficheros orientados a registros. El significado de un fichero viene determinado únicamente por la aplicación o por el usuario que utiliza el fichero, y no está forzado por ninguna propiedad del sistema. Puesto que la mayoría de las ordenes utilizan entrada y salida estándar, hay modos consistentes y fiables de utilizar la E/S. En la mayoría de los casos, generalmente se pueden intercambiar los dispositivos de teclado, los ficheros y los dispositivos hardware en las ordenes.
Hay ordenes que permiten mezclar ficheros y entrada estándar en la misma orden.
Redirección de la salida de error:
La mayoría de las ordenes utilizan el canal de error estándar para mostrar los mensajes de error o la salida inusual que no debería aparecer en el canal de salida estándar.
Se puede redirigir el error estándar utilizando el operador 2> o 2>> dependiendo si se desea crear un nuevo fichero o añadir datos a un fichero existente.
Esta notación se debe a que los canales de E/S estándar son números asignados. Estos números son utilizados principalmente por programadores al desarrollar software, pero en este caso el número 2 ha surgido en el acceso al shell a nivel de usuario.
Ejemplo:
$cat arch1 2> error
$cat arch1 arch2 > salida 2> error
$cat arch1 arch2 > salida 2> salida
Nota: Redireccionar la salida de error a /dev/null es la forma de “quitar” el código de la salida de error, ya que la mandamos al dispositivo nulo.
$cat arch1 arch2 > salida 2> /dev/null