Inicio wiki
Aula Virtual
 Administración de Sistemas Operativos
Inicio ASO Aula Virtual

Vistas
  •   Entrada y salida de datos
De ASO

E/S por consola

Como ya hemos visto antes, la salida de datos se realiza con el comando echo y la entrada de datos, además de poder realizarla con el paso de parámetros se realiza con el comando read. A continuación se muestra un ejemplo:

#!/bin/bash
echo -n "Introduce el valor de la variable: "
#el parámetro -n se utiliza para evitar el salto de línea
read numero
echo "El valor introducido es: "$numero

Además, la entrada y salida de datos se puede realizar a través de ficheros o del resultado de la ejecución de un comando, pero eso lo veremos más adelante

Redirección de la E/S

Cuando se ejecuta un programa en Linux se abre automáticamente tres archivos (flujos) de E/S para ellos. Estos son: la entrada estándar, la salida estándar y el error estándar. Aunque parezca confuso todos los sistemas UNIX utilizan este sistema, basado en el manejo de archivos. Por defecto la salida estándar está conectada a la pantalla, la entrada de estándar al teclado, y el error estándar a la pantalla. Es posible reasignar estos destinos antes de ejecutar el programa, en lo que se conoce como redirección de E/S. Supongamos que queremos crear una lista de archivos de configuración (*.conf) del directorio /etc. Una forma sencilla de hacer esto sería:

ls /etc/*.conf > ListaArchivos.txt

o lo que es lo mismo

ls /etc/* | grep .conf >ListaArchivos.txt

En ambos casos, se realiza un listado de los archivos de la carpeta /etc cuya extensión sea *.conf. El carácter > es el que indica la redirección de salida; esto ocasiona que el shell redireccione la salida estándar a el archivo ListaArchivos.txt. Si por el contrario quiero que un determinado utilice el contenido de un fichero utilizo el carácter "<". Por ejemplo grep host <ListaArchivos.txt muestra las líneas de texto del fichero ListaArchivos.txt que contienen la palabra host.

Filtrado de textos

Para empezar debemos conocer los comandos que nos permiten mostrar el contenido de un fichero. Los comandos más utilizados son: less y more. Por ejemplo, para mostrar el contenido del fichero /etc/passwd podemos ejecutar:

less /etc/passwd

Para filtrar la salida podemos hacerlo de las siguientes formas:

  • Muestra las líneas que cumplen una determinada condición (grep)
  • Muestra las n primeras líneas (head) o las n últimas líneas (tail).
  • Muestra una determinada columna (cut)
  • Además, podemos ordenar la salida utilizando el comando sort.

A continuación vamos a ver cada uno de los comandos:

Grep

El comando grep nos permite filtrar la salida para que se muestren las líneas que cumplen una determinada condición. La sintaxis es:

grep [expresión regular o palabra]

Por ejemplo, si queremos mostrar las líneas del fichero /etc/passwd que contienen la palabra root ejecutaremos:

less /etc/passwd | grep root

head y tail

El comando head muestra las primeras n líneas de un fichero mientras que el comando tail muestra las últimas n últimas líneas del fichero. Ambos comandos tienen la misma sintaxis:

head -n num_lineas
tail -n num_lineas

Por ejemplo, si queremos mostrar las primeras 5 líneas del fichero /etc/passwd ejecutaremos:

less /etc/passwd | head -n 5

Y para ver las últimas 5 líneas ejecutaremos:

less /etc/passwd | tail -n 5

cut

El comando cut permite obtener de una salida unas determinadas columnas de datos. Su sintaxis es: cut –d “delimitador” -f filas donde delimitador es el carácter que separa los datos entre filas y filas son los números de filas que queremos mostrar. Podemos mostrar una fila (p.e. ¬-f2) o varias filas (p.e. -f2,3). Por ejemplo, para obtener el nombre de todos los usuarios del sistema deberemos obtener la primera fila del fichero /etc/passwd cuyo delimitador es el carácter “:”. Por lo tanto, ejecutaremos:

less /etc/passwd | cut -d ":" -f1

sort

El comando sort permite ordenar una salida de datos. Siguiente el ejemplo anterior podemos ordenar los nombres de usuario del equipo ejecutando:

less /etc/passwd | cut -d ":" -f1 | sort

El caso de estar ordenando valores numéricos debemos poner el operador –n. Por ejemplo, si queremos ordenar los identificadores de los usuarios del sistema deberemos ejecutar:

less /etc/passwd | cut -d ":" -f3 | sort -n