Redirección, tuberías

y
concatenar comandos
en Bash

ADMINISTRACIÓN LINUX

ADMINISTRACIÓN LINUX

Redirección

Al abrir un archivo se asigna un integral (file descriptor) que se gestiona en una tabla (fdtable) que lleva el kernel.

  • Kernel conoce los archivos abiertos (por su descriptor)
  • Kernel conoce el/los proceso/s que gestiona/n cada descriptor

ADMINISTRACIÓN LINUX

File descriptor

ADMINISTRACIÓN LINUX

Al abrir un archivo fopen() existe una capa de abstracción para las llamadas al sistema denominada como stdio interface.

Funciones de C como fprintf(), fscanf(), fclose(), tienen funcionalidad extra que se conoce como stdin, stdout y stderr.

En UNIX se representa esta funcionalidad como file descriptors 0, 1 y 2.

stdio

vagrant@server:~$ ls -l /dev/std*
lrwxrwxrwx 1 root root 15 Oct 13 19:43 /dev/stderr -> /proc/self/fd/2
lrwxrwxrwx 1 root root 15 Oct 13 19:43 /dev/stdin -> /proc/self/fd/0
lrwxrwxrwx 1 root root 15 Oct 13 19:43 /dev/stdout -> /proc/self/fd/1

ADMINISTRACIÓN LINUX

Operators

Operator FD std
Output >     >> 1 or 2 pantalla
&>        1+2 pantalla
2>&1 Stderr > Stdin
Input < 0 teclado

ADMINISTRACIÓN LINUX

$ echo 'goot tay!' > output.txt
 
$ tr < output.txt t d
good day!

Stdout

Stdin

$ ( echo "linuxconfig"; ls -l; ) > output.txt

Stderr

$ echo "An error occurred, bye!" >&2

ADMINISTRACIÓN LINUX

Tuberías (pipes)

ADMINISTRACIÓN LINUX

Es posible hacer que el stdout de un comando sea el stdin de otro comando.

Se puede hacer múltiples veces, haciendo que los comandos sean filtros que "mejoran" la salida (stdout) cada vez.

 

Es posible desviar este flujo de datos con el comando tee  

Pipe

cmd
cmd
|

stdin

stdin

stdout

stdout

pipe

cmd
cmd
|

stdin

stdin

stdout

stdout

pipe

|

pipe

tee
archivo.txt

stdout

stdin

stdout

ADMINISTRACIÓN LINUX

xargs permite recibir una lista por stdin y pasarlo como parámetro a un comando.

Es útil para recibir el stream de un pipe y ejecutar comandos como echo, rm, mkdir o touch

xargs

ADMINISTRACIÓN LINUX

find
$ find [dónde empezar a buscar] [qué buscar] 
[-opciones] [que hacer con lo encontrado]
wc

tree

Comandos interesantes

ADMINISTRACIÓN LINUX

Contatenar comandos

ADMINISTRACIÓN LINUX

Variable especial:  $?

Valores de retorno

ADMINISTRACIÓN LINUX

cmd ;  cmd ; cmd


Comandos sucesivos

ADMINISTRACIÓN LINUX

cmd &&  cmd && cmd


Comandos si RetVal eq 0

ADMINISTRACIÓN LINUX

cmd ||  cmd  ||  cmd


Comandos si RetVal ne 0

Sobre esta presentación

Atribución 4.0 Internacional (CC BY 4.0)

https://creativecommons.org/licenses/by/4.0/deed.es

ADMINISTRACIÓN LINUX