Redirección de la entrada/salida

17 junio, 2015
admin
Comentarios desactivados

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.

tablaentradasalida

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.
Para redirigir la entrada estándar, haciendo que provenga de un fichero en lugar del terminal, se utiliza el símbolo <.
Ejemplo:
visualiza el contenido de arch1
$cat < arch1
El carácter > indica al shell que redirija la salida estándar a un fichero. En este caso si el fichero no existe se creará y si existe su contenido anterior se vaciará.
Ejemplo:

el resultado del listado largo se guardará en arch2

$ls –l > arch2
el resultado del listado se guardará en tmp
$ls > tmp
Utilizaremos el carácter >> para redirigir añadiendo a la salida.
Ejemplo:

redirecciona el contenido de arch1 añadiéndose al contenido de arch2

$cat arch1 >> arch2
el resultado del listado se añade al final de tmp.
$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
CONTENIDO PATROCINADO POR

FPla Informatica

Diseño web y Marketing digital
Disponga de una página web o un comercio electrónico de alta calidad a precios muy competitivos.
ACCEDER A FPLA INFORMATICA