Redirecciones Tuberias Filtros

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 5

Miguel Yucra

mikeylangel@gmail.com

REDIRECCIONES
En los sistemas GNU/LINUX y UNIX los dispositivos como los discos duros y sus particiones, el
terminal de pantalla, el teclado, el ratón o incluso la tarjeta de audio están mapeados en el
sistema de archivos.

Esta característica permite a los programas interactuar con los dispositivos de la misma manera
que los archivos, simplificando su interfase de acceso.
Los dispositivos que mapean las operaciones de E/S hacia un archivo poseen un archivo de
dispositivo (device archivo) que es un objeto especial del sistema de archivos que proporciona
la interfase con el dispositivo.

Un programa que lea el archivo de dispositivo del terminal, leerá los caracteres introducidos por
teclado.

La Entrada Salida estándar es la capacidad del intérprete de comandos o shell para controlar y
dirigir:
- La entrada de datos de los programas
- La salida de información útil
- La salida de información de errores.

Entrada estándar (stdin)


El descriptor de archivo STDIN está asociado a la entrada de texto. Por defecto está asociado
al teclado.

Salida estándar (stdout)


El descriptor de archivo STDOUT se corresponde con la salida de texto normal de los programas.
Por defecto está asociado al terminal de pantalla.

Error estándar (stderr)


El descriptor de archivo STDERR también es una salida de texto, pero se usa exclusivamente
para mostrar los errores generados por los programas. Por defecto también está asociado al
terminal de pantalla.

Tuberías
Desde el punto de vista de un programa no hay diferencia entre leer texto guardado en un archivo
o introducido mediante el teclado.
Escribir un texto en un archivo o en la pantalla del terminal también son operaciones equivalentes.
Extendiendo esta idea es también posible enlazar la salida de un programa con la entrada de
otro.
Esta operación se puede realizar mediante una tubería que une dos comandos en uno solo. Por
ejemplo:

$ls –l | more

La tubería redirecciona la salida del comando ls –l hacia el filtro more (paginador), que permite
visualizar la información pantalla a pantalla.

1
Miguel Yucra
mikeylangel@gmail.com

Redirección
El descriptor stdout de los programas está asociado por defecto a la pantalla del terminal. Pero
de la misma manera que es posible redireccionar la salida de un comando a la entrada de otro,
también es posible redireccionar cualquiera de los tres descriptores a un archivo.

comando < archivo


El contenido de archivo se utilizará como entrada de la orden
de comando
comando > archivo
La salida estándar de la orden comando se guardará en
archivo. Si existe, archivo se sobrescribirá.
La salida estándar de la orden comando se guardará en
comando >> archivo archivo. La
información se escribirá al final del archivo.
comando 2> archivo
Los errores de la orden comando se guardarán en archivo. Si
el archivo existe se sobrescribirá.
comando 2>> archivo
Los errores de la orden comando se guardarán en archivo. La
información se escribirá al final del archivo.
comando[filtro]|[filtro]
Redirecciona la salida del comando o filtro hacia la entrada
del filtro.

Ejemplos de redireccionamiento

$ ls –lR > archivo

La salida estándar de la orden ls –lR (listado de archivos y subdirectorios que contiene el


directorio actual de forma recursiva) se guarda en el archive archivo.

$mkdir directorio 2> error

Si al crear el directorio directorio se produce algún error (por ejemplo el directorio ya existe o el
usuario no tiene permisos de escritura) el mensaje del error se guardará en el archivo error.

$cp –vf /tmp/* /home/usuario > copiados 2> error

La lista de todos los archivos copiados (atención a la opción –v de la orden cp) se guardará en
el archivo copiados. Los errores que se produzcan en la ejecución de la orden se almacenarán
en el archivo error.

$cp –vf /tmp/* /home/alumno >> copiados

La lista de todos los archivos copiados se escribirá en el archivo copiados.


Si el archivo copiados ya existe la lista se escribirá al final del archivo, manteniendo la información
previa.

$wc –l < copiados

Cuenta el número de líneas del archivo copiados.

2
Miguel Yucra
mikeylangel@gmail.com

$cd /root/setup 2> null

Redirecciona la salida de error hacia el dispositivo nulo. El mensaje de error no se escribirá en


ninguna parte.

$ls –l | grep vmlinux

Redirecciona la salida de la orden ls hacia la orden grep, que mostrará únicamente las líneas
que contienen la palabra vmlinux.

more
Sintaxis:
more archivo
El comando more es un paginador de archivos que permite ver el contenido del archivo archivo
pantalla a pantalla. Al mostrar una pantalla completa la visualización del documento se detiene
hasta que el usuario indica que quiere ver otra pantalla más con la tecla SPACE. La tecla Q/q
permite salir del programa.

less
Sintaxis:
less archivo
El comando less es un paginador de archivos más potente que la orden more. Permite
desplazarse hacia delante y atrás en los archivos.

grep
Sintaxis:
grep [options] regex archivos
Busca en los archivos especifica dos las líneas que contienen una coincidencia con la expresión
proporcionada en regex. Por defecto mostrará las líneas que contienen una coincidencia y
ocultará las que no tengan ninguna coincidencia.

Opciones:
-c Muestra el número de líneas que contienen la expresión, no muestra el contenido de las líneas.
-i No hace diferencias entre mayúsculas y minúsculas al comparar la expresión.
-v Muestra todas las líneas que NO tienen ninguna coincidencia y oculta las que contienen alguna
coincidencia.

$ ls –AlR /* | grep –ic .gif

La tubería redirecciona la salida del comando ls –AlR /* (listar en formato largo todos los
archivos del sistema incluido los ocultos) al comando grep. El comando grep mostrará el número
de coincidencias con la expresión .gif independientemente si este escrito en minúsculas o
mayúsculas.

$ ls –AlR /root/* | grep –iv root

El comando grep mostrará todos los archivos del directorio /root que no pertenecen al usuario o
grupo root.

3
Miguel Yucra
mikeylangel@gmail.com

sort
Sintaxis:
sort [options] archivo

Ordena los registros o líneas de uno o más archivos y lo muestra por la salida estándar (pantalla).
La ordenación se puede hacer por el primer carácter, por el primer campo de la línea o por un
campo distinto al primero en el caso de archivos estructurados.
Opciones:
-n Ordena los campos numéricos por su valor numérico.
-r Realiza una ordenación inversa (de mayor a menor).
-k número Indica la columna en la que vamos hacer la ordenación.
-t Indica el delimitador de campos que encontraremos diferente de espacio en blanco (separador
por defecto de las columnas)
-u Suprime todas las líneas repetidas después de la ordenación.
-o Indica el archivo de salida en lugar de la salida estándar

$ sort archivo

Se realizaría la ordenación y el resultado se mostraría por pantalla.


sort archivo > archivo_ordenado
Obtener el resultado de la ordenación en un archivo,

$ sort archivo1 archivo2 > archivo3

PRACTICA

1. Listar todos los archivos del sistema mediante el formato largo y filtrar mediante la orden
grep aquellos que contienen la palabra http independientemente si están escritos en
mayúsculas o minúsculas.
2. Obtener un listado de los archivos del directorio /etc, ordenado por tamaño de archivo. Indica
cual es la columna de la salida del comando ls que debemos ordenar mediante la opción –k
del comando sort (utilizar la tubería ls | sort )
3. Obtener un listado por pantalla de los archivos del directorio /etc, ordenado de mayor a menor
por tamaño de archivo.
4. Obtener un listado de los archivos del directorio actual, ordenado por nombre del archivo.
5. Desde tu directorio personal, crea el árbol de directorio Usuarios/Administradores/Red_local
con una sola instrucción.
6. Crea un archivo de texto llamado “usuarios” en el directorio Red_local y complétalo con el
siguiente contenido:
Admin, Pass: 1234
Perez, Pass: 1325
Villacampa, Pass: stucom
Javi, Pass: bcn
Laia, Pass: gracia
7. Lista el contenido de tu carpeta de usuario y añádelo al final del archivo Usuarios.
8. Con el comando sort ordena el archivo usuarios. Repite el proceso volcando el resultado en
el archivo SortedUsers. Mediante el comando cat visualiza el archivo SortedUsers

4
Miguel Yucra
mikeylangel@gmail.com

9. Con el comando sort ordena el archivo usuarios según el campo password. Vuelca el
resultado en el archivo SortedPass.
Mediante el comando cat visualiza el archivo SortedPass.
10. Mediante la orden grep contar el número de líneas que contienen el patrón “pass” en el
archivo usuarios.
11. Renombrar el archivo usuarios a users
12. Crea un archivo de texto llamado admins en el directorio Red_local y complétalo con el
siguiente contenido:
Local PASS: 1234
Xavi Sánchez
Laia Sonsola
Remoto1, PASS: 1325
Remoto2, PASS: stucom
13. Filtra todas las líneas que contienen el patrón pass de los archivos admins y users. Vuelca
el contenido en un archivo pass.
14. Crear el directorio test en tu directorio personal.
15. Crear otra vez el directorio test en tu directorio personal y redirecciona la salida de error al
archivo error.txt. Con la orden more visualizar el contenido del archivo error.txt.
16. Buscar el número de archivos con terminación .gif en todo el sistema (utilizar la orden grep)

También podría gustarte