Tutorial 3: Redireccionamiento y tuberías

Autor: Irving Hernández Uribe;  Editor: Dr. Erik Zamora Gómez

Hasta ahora se ha trabajado con los comandos fundamentales que permiten la manipulación de directorios y archivos. En el tutorial anterior, se explicó cómo crear y concatenar el contenido de archivos, también se mostró cómo cambiar la ruta de alguno de ellos, eliminarlos del sistema o renombrarlos, finalmente se trabajó con el contenido de los archivos usando los comandos que permitieran navegar en él. En esta ocasión, se introducirán dos nuevos e importantes conceptos, los cuales hacen referencia a las entradas y salidas estándar, así como el uso de “pipes” o tuberías, las cuales nos permitirán trabajar con el flujo de información que es intercambiada entre los usuarios y el sistema.

Tema 3.1.- ¿Qué son las Entradas y Salidas estándar?

Al trabajar con el flujo de información en UNIX se cuenta con tres canales básicos que permiten el intercambio de datos entre los usuarios y el propio sistema; a los canales que tienen como objetivo recopilar la información para ser utilizada por algún programa se les denomina de Entrada, a los encargados de mostrar esa información al usuario con ayuda de algún dispositivo, por ejemplo la pantalla, se les denomina de Salida, y aquellos que se encargan de indicar cuando algo dentro del proceso resultó imposible de realizar o no se llevó a cabo correctamente se les denomina de Error.

Existen diversos elementos (tanto físicos como digitales) que pueden estar asociados a los canales de entradas y de salidas, sin embargo, los tres canales básicos cuentan con uno estándar. La palabra “estándar” hace referencia a un concepto de “establecido por defecto”, es decir, todo aquello que siempre es de la misma forma a menos de que se especifique algo diferente, teniendo que los elementos estándar de entradas y salidas son:

t5

En el tutorial anterior se utilizó el comando “wc” para contar las líneas, palabras y letras que se introducían por la entrada estándar para mostrarlas en la salida estándar, en otras palabras el teclado y la pantalla.

Tema 3.2.- ¿Qué es el redireccionamiento?

A pesar de que los canales de entrada y de salida en los sistemas de UNIX cuentan con elementos estándar, es posible utilizar una gran variedad de ellos para la adquisición y representación de la información, sin limitarse únicamente al teclado y la pantalla del ordenador.

El concepto de redireccionamiento consiste en indicarle al sistema que utilice elementos diferentes a los estándar ya sea para las entradas o las salidas de datos, lo cual se logra por medio de algunos comandos como los que se explican en los siguientes apartados.

d1

Tema 3.3.- ¿Cómo redireccionar salidas?

Uso del símbolo “>”:

El símbolo “>” permite el redireccionamiento sencillo hacia una salida especifica (según el comando que se utilice) , por ejemplo, en el tutorial anterior se utilizó el comando “cat” para la creación de archivos de texto, sin embargo, la acción que realmente se llevó a cabo fue la de redireccionar la salida de dicho comando, teniendo como resultado, la creación de un archivo de texto (guardado con un  nombre y ruta definidos por el usuario) en lugar de simplemente mostrar el texto en pantalla. Para realizar esto se utiliza la siguiente estructura general.

: [Comando de entrada] > [Nombre de ruta / Nombre de archivo]

De esta forma funciona el redireccionamiento que se puede aplicar a los comandos que se verán posteriormente, y para ejemplificarlo con el comando “cat” se hará una lista con los planetas existentes en nuestro sistema solar, dándole el nombre de “Planetas” a este archivo y ubicándolo en el directorio de “unix_ejemplos”, con el siguiente código:

%: cat > ~/unix_ejemplos/Planetas

A continuación se podrá escribir normalmente como si se tratara de un editor de texto (separando cada elemento de la lista al usar la tecla [Enter]), y una vez terminada la lista se debe presionar la combinación de teclas [Control] + [d], con lo cual el archivo se guardará de forma automática y se podrá ingresar una nueva instrucción.

3_1

Uso del símbolo “>>” (Anexar):

En el tutorial anterior también se describió el uso del comando “cat” en combinación con el símbolo doble “>>” el cual permite modificar un archivo ya existente. En este caso, su verdadera función es la de redireccionar la entrada de un comando o función a una salida especificada por el usuario, siendo ésta una creada anteriormente, y a la que se AÑADIRÁ contenido adicional, basándose en la siguiente estructura.

: [Comando de entrada] >> [Nombre de ruta y archivo ya existentes]

Para ejemplificar lo anterior se añadirán a la lista “Planetas” los 4 planetas pertenecientes a nuestro sistema solar que se han descubierto por la comunidad científica en los últimos años, los cuales son Ceres, Haumea, Makemake y Eris, y para ello se utilizará la siguiente codificación empleando el comando “cat” y el redireccionamiento para anexar contenido:

 %: cat >> ~/unix_ejemplos/Planetas

Después de escribir los nombres de los nuevos planetas en forma de lista se podrá abrir el mismo archivo para comprobar que contiene los planetas anteriores más los que han sido anexados.

3_3

Direccionamiento de múltiples entradas a una sola salida:

Existe otra manera de unir dos listas para generar una sola, este método corresponde al redireccionamiento de múltiples salidas a una sola entrada, el cual no se limita únicamente a la creación de listas pero se puede ejemplificar muy bien por medio de ellas.

En primer lugar, se generarán tres listas diferentes usando el comando “cat” y el símbolo “>” para redireccionar el texto a tres archivos denominados “Aves”, “Peces” y “Mamíferos” donde se colocarán animales pertenecientes a estas categorías usando la codificación mostrada en los apartados anteriores:

3_4

Una vez que se tengan las tres listas, éstas se unirán en una sola denominada “Animales” al redireccionar cada archivo (como entrada) hacia uno nuevo (como salida), y para ello se utilizará la siguiente estructura la cual utiliza el comando “cat”, todas las entradas que se deseen concatenar, el símbolo de redireccionamiento “>” y el nombre de la salida:

: cat [NombreArchivo1] [NombreArchivo2] [NombreArchivo3] … > [NombreArchivoSalida]

En este caso, el código específico que se deberá de escribir es el siguiente:

 %: cat Aves Peces Mamiferos > Animales 

  • NOTA: El código anterior puede ser utilizado únicamente si el usuario se encuentra ubicado en el mismo directorio en el que se encuentran los archivos de “Aves”, “Peces” y “Mamíferos” mismo en el que se creará el nuevo archivo “Animales”, sin embargo, es posible utilizar la ruta de todos los archivos para obtenerlos de su ubicación inicial y posicionar el nuevo en otra dirección, por ejemplo:

%: cat ~/unix_ejemplos/Aves ~/unix_ejemplos/Peces ~/unix_ejemplos/Mamiferos > ~/Animales 

3_5

Tema 3.4.- ¿Cómo redireccionar entradas?

Uso del símbolo “<”:

El proceso de redireccionamiento de entradas es muy similar al relativo a las salidas y consiste, de manera análoga, en la elección del usuario de la entrada que desea utilizar para el funcionamiento de algún comando, ligándolo por medio del símbolo “<“.

Para ejemplificarlo se utilizará el comando “sort” (Ordenar) el cual permite generar un nuevo archivo ordenado de manera alfabética o numérica tomando como base un archivo ya existente con una lista por ejemplo.

En este caso, se ordenará de manera alfabética la lista completa de animales que se creó en el apartado anterior al redireccionar la entrada del comando “sort”, lo cual es tan simple como escribir el siguiente código:

 %: sort < ~/unix_ejemplos/Animales

Lo anterior mostrará en pantalla la lista ordenada como se presenta a continuación:

3_6

Tema 3.5.- Uso conjunto de redireccionamientos (Entradas y salidas):

El uso conjunto de redireccionamientos se utiliza comúnmente en combinación con algunos comandos de Unix, y permite ahorrar tiempo y recursos de codificación al redireccionar tanto la entrada como la salida que trabajarán con el comando en la misma línea en lugar de utilizar dos o más pasos para obtener el mismo resultado.

Lo anterior se logra mediante la siguiente expresión general que utiliza al mismo tiempo los símbolos “<“ y “>”:

: [Comando] < [Elemento(s) de entrada] > [Elemento(s) de salida]

En este caso, se creará como ejemplo un nuevo archivo que contenga la lista de animales ordenada alfabéticamente y se colocará en el directorio principal a partir de la generada en el apartado anterior, para ello se debe escribir:

 %: sort < ~/unix_ejemplos/Animales > Ordenado

3_7

Tema 3.6.- Uso de Tuberías

El redireccionamiento conjunto de entradas y salidas permite realizar dos acciones en una sola línea de código, haciendo que no sea necesario ejecutar un comando dos veces y tomar la salida del primero para colocarlo como entrada del segundo antes de obtener la salida final; dicho método es bastante útil, sin embargo, NO es posible utilizarlo con más de un comando al mismo tiempo, y para dar solución a este inconveniente existen las tuberías.

Al igual que en los populares juegos de Super Mario Bros®, donde el personaje principal utiliza las tuberías para transportarse de un mundo a otro, recolectando estrellas, monedas e items, para finalmente llegar a la salida del nivel por medio de la tubería final, en Unix las tuberías funcionan de manera muy similar, en este caso, nos permiten ingresar un elemento de entrada el cual podrá ser conectado con varios comandos o procesos de manera secuencial antes de obtenerse la salida final.

Gracias a las tuberías varias aplicaciones del sistema pueden interactuar entre sí, convirtiendo a estos elementos en una forma práctica de redireccionar la salida estándar de un programa hacia la entrada estándar de otro, y para ello, se utiliza el símbolo “|” (pipe o tubería) siguiendo la estructura que se muestra a continuación:

: [Comando1] [Elementos y/o Opciones] | [Comando2] [Elementos y/o Opciones] | [Comando3] [Elementos y/o Opciones] | [Comando4] [Elementos y/o Opciones] | …

d2

Como ejemplo del uso de las tuberías se combinarán los comandos “cat” y “sort”, para ello se creó una nueva lista denominada “Plantas”, y se intentará generar una nueva que ordene alfabéticamente los elementos contenidos tanto en “Animales” como en “Plantas”, (En un solo paso). Se escribe entonces el siguiente código:

%: cat ~/unix_ejemplos/Animales ~/unix_ejemplos/Plantas | sort

3_8

Al ejemplo anterior se le puede aumentar un poco la complejidad, y con el objetivo de demostrar como las tuberías pueden ser combinadas también con los redireccionamientos tanto de entradas como de salidas (al inicio y al final de la instrucción respectivamente) se creará un archivo llamado “Tuberías_ejemplo” que contenga los elementos de las listas de “Animales” y de “Plantas”, considerando solamente aquellos que incluyan la letra “L” y ordenándolos alfabéticamente, para lo cual se usarán conjuntamente los comandos “cat”, “grep” y “sort” conectados por tuberías, así como el símbolo “>”:

%: cat ~/unix_ejemplos/Animales ~/unix_ejemplos/Plantas | grep l | sort > Tuberias_ejemplo

  • NOTA: El comando “cat” utiliza dos archivos ya existentes como entradas, por otro lado el comando “grep” utiliza la opción “l” y el comando “sort” redirecciona su salida hacia un nuevo archivo denominado “Tuberías_ejemplo” (Cada proceso trabaja de manera individual pero la salida del anterior se utiliza como la entrada del siguiente).

3_9

Utilizando la información contenida en este y los tutoriales anteriores el usuario ya puede comenzar a desarrollar aplicaciones básicas pero bastante útiles que manejen directorios, archivos, entradas y salidas estándar, redireccionamientos, entre algunas cosas más, y para complementar la información que se tiene hasta el momento, en el siguiente tutorial se desarrollarán tres temas referentes al manejo de elementos del sistema y las opciones de ayuda al usuario, en este caso, se explicará la normativa de nombres y extensiones para archivos y directorios, el uso de comodines y la ayuda del sistema tanto on-line como off-line.

⇐ Tutorial Anterior                                                                          Tutorial Siguiente ⇒

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s