redirecciones.png

Las redirecciones en Linux son una parte importante dentro del uso de la terminal y para la ejecución de scripts, ya que permiten al usuario redirigir información de los comandos introducidos hacia un fichero, redireccionar errores hacia otro fichero, etc. En entradas anteriores ya use las redirecciones para la ejecución de scripts.

Redirecciones en Linux de salida

El carácter > redirecciona el contenido que nos muestra la pantalla del resultado de algún comando introducido en la terminal. En caso de redireccionar a un fichero ya existente con contenido, se borrará todo el contenido anterior del fichero, ya que lo que hace este comando es insertar la redirección.
Por ejemplo, vamos a guardar y mostrar en un fichero, la base de datos de los usuarios del sistema Linux. Hay formas más fáciles de hacerlo pero usando las redirecciones sería así:

Lo que he hecho ha sido, hacer una visualización del fichero /etc/passwd con cat para redireccionarlo a un fichero llamado usuarios que se encuentra dentro de nuestra carpeta de usuario del sistema. Ya en en el siguiente comando lo que hago es una visualización del fichero creado.

Para añadir contenido en las redirecciones y respetar si hay contenido anterior en un fichero se usan los carácteres >>. Por ejemplo, aprovechando el fichero anterior creado y que nos sirve para el siguiente ejemplo:

Aquí he añadido la fecha de hoy al fichero creado anteriormente.

Redirecciones en Linux de entrada

Hay comandos en Linux que necesitan datos para su funcionamiento y no tiene porqué siempre recibirlos de un teclado, se pueden redireccionar desde un fichero. En este caso voy a usar el comando cut, que sirve para seleccionar información. En el siguiente ejemplo usaré el fichero anteriormente creado de usuario para seleccionar información y ver así como funcionan las redirecciones en Linux de entrada:

Aquí se mostrará en pantalla el nombre de los usuarios ya que he seleccionado la información de la base de datos usuarios del sistema que he guardado en el fichero usuarios con el comando cut -f 1 -d ":" y lo que hace es seleccionar el primer campo que es el que pertenece al usuario y delimitarlo con los : .

Se pueden combinar ambas las redirecciones vistas:

El shell de Linux busca siempre en este orden cuando hacemos redirecciones < , >, >>, haciendo efectivas redirecciones como las de el anterior ejemplo.

Documento en línea, la redirección < <

Esta redirección es una tanto especial, ya que permite al usuario interactuar en la terminal introduciendo un texto hasta una parte final, que es una cadena indicada por nosotros y de ahí redireccionar a un comando, en este ejemplo lo redirecciono a un filtro:

Canal de entrada, canal de salida y canal especial

En Linux, el teclado es una canal de entrada y la pantalla por dónde se visualiza la información es un canal de salida. Así que estos canales de salida se pueden redireccionar hacia ficheros. Los errores que se puedan producir en la ejecución de comandos son un canal especial.

Canal de entrada estándar

El canal de entrada en Linux equivale a stdin 0 y es el introducido por el usuario.

Canal de salida estándar

Este canal equivale a stdout 1. Esta canal estándar es el resultado de la ejecución sin errores y sería lo que hemos estado haciendo en los ejemplos anterior y no hace falta expresarlo por que Linux lo toma por defecto, pero lo explico mejor en este ejemplo para que veas de donde proviene:

Canal de error estándar

El canal de error equivale a stderr 2 nos puede servir para redireccionar el error y registrarlo en un fichero. Ejemplo:

A simple vista no parece muy útil, pero si lo es para la creación de scripts.

Se puede combinar el canal de salida (stdout 1) con el canal de error (stderr 2) con >& para redireccionar a un fichero tanto la salida como los errores que puedan ocurrir en la ejecución de los comandos. Ejemplo:

Con esta forma de redireccionar consigo que los errores (2) vayan hacia la salida estándar (1). El resultado de salida se redirigirá hacia el fichero prueba. Conteniendo así este fichero los errores como las salidas.

¿Qué es /dev/null?

Pues se trata de un archivo especial que sirve para redireccionar información que no se quiere, digamos que es como un “contenedor“. Resulta muy útil para la realización de scripts y descartar así información que no nos sea de especial interés ya sean errores de salida o simplemente la salida estándar. Su sintaxis es así:

Puede parecer un poco enrevesado todo esto, pero con estos sencillos ejemplos se ve como funcionan las redirecciones para luego llevarlas a un nivel más avanzados en la ejecución de scripts y ver ahí su completa funcionalidad.

 

Fuente: basklinux

¿Quién está en línea?

Hay 32052 invitados y ningún miembro en línea