Está en la página 1de 95

Formacin Instructores Linux Essentials

Cisco Networking Academy

Sergi Pons: Responsable Tcnico CNA y LPI


PUE (PROYECTO UNIVERSIDAD EMPRESA)
rea de Proyectos de Educacin

ndice
8. Pipes, redireccin y REGEX
9. Scripting bsico

Mdulo 8 Tuberas (PIPES), redirecciones y REGEX

Objetivos
Tuberas (pipes) y redirecciones
POSIX parcial

Redirecciones en la
lnea de comandos

Tuberas (pipes) en lnea de comandos


La barra vertical (|) se puede utilizar entre dos
comandos para enviar la salida del primer
como entrada del segundo:
ls /etc | head

La salida de ls /etc se enva a head como


entrada.

Tuberas (pipes) en lnea de comandos


Mltiples comandos se pueden combinar para
formar tuberas. El orden en que se agregan los
comandos afecta a la salida:

I/O en las redirecciones


Tres Entradas/Salidas (I/O) asociadas con las
redirecciones:
Entrada estndar (STDIN) se proporciona normalmente por
el usuario a travs del teclado.
Salida estndar (STDOUT) es la salida producida por el
comando cuando se opera correctamente. STDOUT
aparece normalmente en la misma ventana dnde se
ejecuta el comando.
Error estndar (STDERR) es la salida producida por el
comando cuando se ha producido un error. STDOUT
aparece normalmente en la misma ventana dnde se
ejecuta el comando.

I/O Smbolos de redireccin


Resumen de redireccin es posible con el terminal
bash:

< /path/to/file
> /path/to/file
>> /path/to/file
2> /path/to/file
2>> /path/to/file
&> /path/to/file
&>> /path/to/file

(Redirigir STDIN desde file)


(Redirigir STDOUT y crear o sobrescribiendo file)
(Redirigir STDOUT y aadir en file)
(Redirigir STDERR y crear o sobrescribiendo file)
(Redirigir STDERR y aadir en file)
(Redirigir STDERR and STDOUT sobrescribiendo file)
(Redirigir STDERR and STDOUT y aadir en file)

El dispositivo nulo
El dispositivo nulo se representa por /dev/null.
(Tambin conocido como el " Bit Bucket ")
Este archivo es muy til en redirecciones de entradas
y salidas.
Este archivo sirve para dos propsitos:
cualquier salida redirigido a /dev/null se descarta.
/dev/null se puede utilizar como entrada para
proporcionar valores nulos.

STDIN, STDOUT y STDERR

STDIN o 0
Entrada estndar (STDIN) normalmente es proporcionada por
el teclado, pero se puede redirigir con el smbolo <.
STDIN puede ser ledo para ser procesado por programas.
Puede informar a los programas que detiene el suministro de
datos por teclado a travs de STDIN pulsando CTRL-D.
El comando tr lee los datos de STDIN y traduce de un
conjunto de caracteres a otro.
Con CTRL-D se puede detener la traduccin realizada por el
comando tr. Veamos un ejemplo

STDIN desde teclado


En el siguiente ejemplo, el comando tr traduce de
minsculas a maysculas despus de que el usuario
ha escrito el comando y pulsa Enter.
Despus de escribir "alpha, presionar Enter para
realizar la traduccin. Para finalizar, escribir CTRL-D.

Redirigir STDIN desde un archivo


El comando tr traduce de minsculas a maysculas
con STDIN redirigido desde el archivo /etc/hosts:

STDOUT o 1
Salida estndar (STDOUT) es el resultado del
comando cuando opera correctamente.
Por lo general se mostrar en la misma ventana en la
que se ejecuta el comando.
El comando echo se utiliza para imprimir los
mensajes procedentes de STDOUT.

Redireccin STDOUT
En el siguiente ejemplo, se ejecuta el comando
echo Linux 1 y la salida aparece en STDOUT.
Entonces, el comando echo Linux 1> a.txt
redirige la salida al archivo a.txt.
Finalmente, el comando cat a.txt enva el
contenido del archivo a STDOUT

Aadir redireccin STDOUT


Si usamos > para redirigir STDOUT, o crea el archivo o
lo sobrescribe en el caso que ya exista.
El uso de >> para la redireccin de STDOUT, o bien
crear un nuevo archivo o aade la informacin al
final del mismo:

STDERR o 2
Error estndar (STDERR) es el resultado de un
comando despus de que haya ocurrido un error.
Se enva normalmente a la consola / terminal donde
se ejecuta el comando.
ls /fake es un comando que producir un error
que se emitir a STDERR porque el archivo /fake no
existe.

Redireccin STDERR
ls /fake 2> /tmp/err.msg enviar el
mensaje de error a STDERR que luego es redirigido al
archivo /tmp/err.msg
El comando cat /tmp/err.msg enva el
contenido del archivo a STDOUT:

Eliminar STDERR
ls /fake 2> /dev/null enva STDERR al
dispositivo nulo (/Dev/null) , donde por defecto,
se eliminar el mensaje de error.
El comando cat /dev/null muestra que no hay
ninguna salida visible.

Trabajar con STDERR y STDOUT


El comando find busca en el sistema de archivos.
Enva la salida a STDOUT cuando localiza correctamente
un archivo que coincida con sus criterios.
Enva la salida a STDERR cuando no puede acceder a un
directorio.
El comando find se utiliza para demostrar la
reorientacin tanto STDOUT y STDERR en las siguientes
diapositivas.
Ms detalles sobre el comando find aparece ms
adelante en este captulo.

STDERR y STDOUT Ejemplo


El siguiente ejemplo demuestra que el comando
find realiza una bsqueda de forma recursiva en el
directorio /etc/pki para los archivos que
coinciden con "* .crt".
Aparecen 2 lneas de STDERR y 2 lneas de STDOUT:

Aislamiento de STDERR
En el siguiente ejemplo, la salida STDOUT se redirige
al archivo /dev/null, por lo que solo se enva a la
ventana del terminal la salida STDERR

Aislamiento de STDOUT
En el siguiente ejemplo, la salida STDERR est ahora
redirigida al archivo /dev/null, por lo que se solo
se enva a la ventana del terminal la salida STDOUT

Redirigir mltiples flujos separados


En el siguiente ejemplo, la salida de STDERR se enva
al archivo crt.err y la salida STDOUT se enva al
archivo crt.txt:

Redirigir mltiples flujos combinados


En este ejemplo, tanto STDOUT y STERR se redirigen
en el mismo archivo, crt.all:

El comando find

Buscar con el comando find


El sistema de ficheros tiene cientos de directorios
con miles de archivos. Esto puede hacer que no sea
fcil localizar un archivo en concreto.
El comando find es una potente herramienta para
poder buscar archivos segn diferentes parmetros,
incluyendo:

nombre
tamao
fecha
propiedad

Sintaxis del comando find


El comando find tiene la siguiente sintaxis:
find [start_dir] [search_op] [criterios] [resultado]

Si el directorio de inicio (start_dir) no se especifica,


se asume que corresponde al directorio actual.
Las opciones de bsqueda (search_op) especifica
cmo se realizar la bsqueda. Por ejemplo, utilice la
opcin -name para buscar por el nombre.

Sintaxis del comando find


Los criterios de bsqueda (criterios) son los datos
que se utilizarn con la opcin de bsqueda. Por lo
tanto, si la opcin de bsqueda fue -name, entonces
los criterios de bsqueda sera el nombre del archivo
a encontrar.
La opcin de resultado (resultado) por defecto es
-print, que mostrar en la salida los nombres de
los archivos que se encuentren. Otras opciones de
resultado pueden realizar acciones en los archivos
que se encuentran.

Bsqueda por nombre de archivo


Considere el siguiente comando:
find /etc/pki -name "* .crt"
Realiza bsqueda recursiva del directorio /etc/pki
Muestra los nombres de los archivos que coinciden
con "* .crt"

Mostrar detalles del archivo


La opcin -ls crear una salida similar a la del
comando ls -l (Mostrar ambos)
Las columnas de la salida son: inode, bloques
utilizados, permisos, contador de enlaces, usuario
propietario, grupo propietario, tamao, fecha/hora
de modificacin y el nombre del archivo.

Bsqueda por tamao del archivo


La opcin -size puede ser utilizado para buscar por
su tamao.
Para unidades grandes utilizar K, M, G, etc.
Usar + 1M significa ms de un megabyte.
Utilizar -1M significa menos de un megabyte.

Opciones tiles del comando find


Opcin

Ejemplo

Significado

-maxdepth

-maxdepth 1

Slo busca en el directorio especificado y


sus subdirectorios inmediatos

-grupo

-grupo trabajadores

Encuentra todos los archivos propiedad del


grupo trabajadores

-iname

-iname hosts

Bsqueda del nombre de archivo insensible


(no case sensitive)

-mmin

-mmin -10

Encuentra todos los archivos modificados


en los ltimos diez minutos o menos

-tipo

-type f

Buscar slo archivos regulares

-user

-user bob

Encuentra todos los archivos propiedad del


usuario bob

El comando less

Visualizacin de archivos con el comando less


El comando less es un paginador diseado para
mostrar slo una pgina de datos a la vez.
El comando more es un paginador que tiene menos
funciones que el comando less.
Ambos comandos permiten al usuario moverse hacia
atrs y adelante con los comandos de movimiento
para ver una pgina a la vez.

La pantalla de ayuda en less


Una vez en el programa less, al pulsar la tecla "h"
se mostrar la pantalla de ayuda:

menos comandos de movimiento


Como se ve en la pantalla de ayuda, el comando
less tiene muchos comandos de movimiento. Los
comandos ms comunes son:
Movimiento

Clave

Ventana hacia adelante

Barra espaciadora

Ventana hacia atrs

Lnea hacia adelante

Entrar

Salida

Ayuda

Comandos de bsqueda en less


Tipo / para buscar desde el cursor al final del archivo.
Tipo ? para buscar desde el cursor al inicio del
archivo.
Escriba el patrn a buscar y pulse Intro.
Si hay ms de una coincidencia encontrada, pulse n
para ir a la siguiente o N para ir a la coincidencia
anterior.

head o tail

Filtrado con head


El comando head muestra por defecto las diez
primeras lneas de un archivo.
La opcin -n permite especificar el nmero de lneas
que se mostrar.

Head con lneas negativas


Normalmente, el comando head muestra el nmero de
lneas que se especifican desde el principio del archivo.
Si usamos -n con un valor negativo, indica cuntas lneas
no se mostrarn des del final del archivo .
Este ejemplo muestra todas las lneas de /etc/passwd
excepto las ltimas 32.

Filtrado con tail


El comando tail muestra por defecto las diez
ltimas lneas de un archivo.
La opcin -n permite especificar el nmero de lneas
que se mostrarn:

Tail con lneas positivas


Si la opcin -n especifica el nmero de lneas con un
prefijo de signo ms (+), el comando tail interpreta
que mostrar a partir de ese nmero de lnea
contando desde el principio del archivo:

Siguiendo con tail


El comando tail es capaz de monitorear los cambios en un
archivo e imprimirlos a medida que ocurren mediante el uso
de la opcin -f.
Los administradores de sistemas a menudo revisan los
archivos de registro (logs) con el fin de solucionar los
problemas del sistema.
El usuario debe utilizar CTRL-C para finalizar el comando
tail con la opcin -f

El comando Sort

Ordenar archivos o entradas


El comando sort reorganiza las lneas de salida de
acuerdo con uno o ms campos especificados para la
clasificacin.
Los campos estn separados por espacios en blanco,
aunque con la opcin -t, se puede especificar otro
delimitador.
La clasificacin por defecto est en orden ascendente,
pero puede utilizar la opcin -r para invertir la
clasificacin de un campo.
Por defecto se ordena siguiendo el diccionario, pero se
puede utilizar la opcin -n para que sea de tipo numrico.

Ejemplo con el comando sort


En el siguiente ejemplo, el archivo /etc/passwd
se ordena con un : como delimitador, por el cuarto
campo numrico (opcin k) y luego el tercer campo
numricamente a la inversa:

Estadsticas de los archivos

Estadsticas de los archivos con el comando wc


El comando wc muestra como salidas tres estadsticas
de cada archivo que se dan como un argumento.
De forma predeterminada, wc muestra el nmero de
lneas, palabras y bytes contenidos en cada archivo.
Si se proporciona ms de un archivo, entonces tambin
calcula los totales de todos los archivos.
Para ver las estadsticas individuales, especifique -l
para las lneas, -w para las palabras o -c para losbytes.

Ejemplo de comando wc
Para analizar el nmero de lneas, palabras y bytes en
los archivos /etc/passwd y /etc/passwd-, se
puede ejecutar el comando wc de la siguiente
manera:

Utilizar wc con tuberas (pipes)


El comando wc se utiliza a menudo con las tuberas
de modo que la salida de un comando pueda ser
analizado.
Usar wc -l como la orden final en la tubera,
contar cuantas lneas se han producido a la salida.
Por ejemplo, para determinar el nmero de archivos
y directorios en el directorio /etc, puede ejecutar:

El comando cut

Filtrar con el comando cut


Si desea extraer columnas de texto, el comando cut
proporciona dos tcnicas simples:
Por delimitador, donde el espacio en blanco es el valor
predeterminado. La opcin -d permite que se
especifiquen otros delimitadores y la opcin-f se utiliza
para indicar qu campos hay que extraer.
Por posicin de carcter, utilizando la opcin -c con la
rango de columnas para extraer.

Ejemplo del comando cut


El archivo /etc/passwd est delimitado por dos
puntos con los siguientes campos:
usuario:contrasea:UID:GID:GECOS:directorio:Shell

Para extraer la primera, quinta y sptima columna a


travs del comando cut:
cut -d: -f1,5-7 /etc/passwd

El comando grep

Filtrado con el comando grep


El comando grep se puede utilizar para filtrar la
entrada estndar o en el contenido de un archivo, en
las lneas donde coincidan con un patrn especfico.
Si quieres ver donde aparece un patrn o una
palabra dentro de un archivo, se puede utilizar el
comando grep para ese propsito.

Opciones ms comunes de grep


Opcin

Propsito

--color

Colorea las coincidencias encontradas

-v

Coincidencias inversas

-c

Contador coincidencias

-n

Nmero de lneas coincidentes

-l

Listar archivos coincidentes

-i

Coincidencias insensibles (no case sensitive)

-w

Coincidencias con una palabra de patrn

Expresiones regulares bsicas

Expresiones regulares bsicas


Expresiones regulares sencillas (BRE) son capaces de
utilizar el comando grep sin la necesidad de
especificar ninguna opcin (a diferencia de las
expresiones regulares extendidas).
Las expresiones regulares ms simples son slo
caracteres alfabticos o numricos que responden a
s mismos.
La barra invertida \ puede ser utilizada para evitar el
significado de los metacaracteres regulares,
incluyendo la propia barra invertida.

BRE El . de ejemplo
El . (Punto) coincide exactamente con un carcter.
El ejemplo siguiente muestra el comando grep que
busca coincidencias con la "a" seguida de dos
caracteres.
Los resultados muestran que coincida 'abc'.

BRE: El [] de ejemplo
Los [] (corchetes) se utilizan para que coincida
exactamente un carcter.
Los caracteres pueden ser listados o como un rango.
Si el primer carcter que aparece es el ^, el significado
es justo el contrario.

BRE: El * de ejemplo
El * (asterisco) coincidir con cero o ms caracteres
iguales al anterior.
Coincidir con "a *" no es muy til, ya que podra
coincidir con cero as (busca en cada lnea).
Coincidir con "abcd *" sera ms til, ya que se
necesita un "abc" seguido de cero o ms d's.

BRE: El ^ de ejemplo
Si el carcter ^ aparece al principio del patrn,
significa que el patrn debe aparecer al principio de
la lnea.
Si el carcter ^ no est al comienzo del patrn,
significa que coincide con s mismo.

BRE: El $ de ejemplo
Si el carcter $ (signo de dlar) figura al final del
patrn, significa que el patrn debe aparecer al final
de la lnea.
Si el carcter $ no est al final del patrn, significa
que coincide con s mismo.

BRE: Combinando ^ y $
Combinando tanto los carcter ^ y $ permite dos
coincidencias especiales:
'^ $' Corresponde a una lnea en blanco.
'^patron$ corresponde con una lnea que slo tiene el
patron especificado

Expresiones regulares extendidas

Expresiones regulares extendidas


El uso de expresiones regulares extendidas (ERE)
requiere la opcin -E cuando se utilice el comando
grep.
Las expresiones regulares extendidas se pueden
combinar con las expresiones regulares bsicas.
Los siguientes son caracteres ERE: ?, +, y |

ERE: El + de ejemplo
El carcter + (ms), busca coincidencias con uno o
ms de los carcter anteriores.
Buscar coincidencias con "a+" es til porque puede
coincidir con una o ms de una, asegurando slo
lneas que tienen por lo menos una "a".

ERE: El ? de ejemplo
El carcter ? (Signo de interrogacin) busca
coincidencias opcionalmente con el carcter anterior.
El carcter ? es til para hacer coincidir con carcter
que slo aparecen de vez en cuando en una palabra.
El siguiente ejemplo ilustra esto:

ERE: el | ejemplo
El carcter | (barra vertical) actuar como un operador
"or" entre dos expresiones regulares.
Este operador es til para buscar coincidencias con
mltiples patrones:

El comando xargs
El comando xargs ayuda a ejecutar tuberas (pipes)
complejas de manera ms eficiente
Se trata de la construccin del comandos ms larga
posible con tantos argumentos como sea posible
Se trata de evitar la ejecucin de la orden cada vez
por cada argumento

Mdulo 9 Scripting bsico


Objetivos
Edicin de Texto Bsico
Scripting Shell bsico

Editores de texto

Script como secuencia de comandos


Si se puede escribir en la lnea de comandos,
se puede escribir en un Script
Se puede realizar Scripts basado en pruebas o
crear bucles se sentencias
(tambin disponibles en CLI)
Los scripts realizan tareas repetitivas y
aportan la automatizacin del trabajo, para
que sea ms competitivo

Editores
Los scripts son archivos de texto
LibreOffice agrega formato, por lo que es
inutilizable para crear Scripts
nano y vi / vim son editores populares
Nano es mucho ms fcil de usar

vi
2 modos
Comando: permite guardar, buscar, etc.
Para guardar:

:w
:q
:wq = :x
:q!
:wq!
ZZ
:e!

Se guarda el archivo
salimos del editor vi
combinacin de las 2 anteriores
Salir sin guardar los cambios
Guarda archivo de solo lectura si se puede
Guarda y cierra el documento. No necesita :
No guarda los cambios y recarga el archivo

Insertar: se puede aadir texto al documento


Se accede des del modo comando introduciendo i. Con I
(mayscula) iniciamos al inicio de la lnea y con A al final.
Volvemos a modo comando introduciendo Esc

vi
Comandos ms habituales en modo insertar
Cdigo

Funcin

Mover el cursor una lnea abajo (mismo que flecha abajo)

Mover el cursor una lnea arriba (mismo que flecha arriba)

Mover el cursor una posicin derecha (mismo que flecha derecha)

Mover el cursor una posicin izquierda (mismo que flecha izquierda)

Mover el cursor al inicio de la siguiente palabra

Mover el cursor al final de la palabra

Mover el cursor al principio de la palabra anterior

vi
Comandos ms habituales en modo comando
Cdigo
$
0 (zero)

Funcin
Mover el cursor al final de la lnea actual (mismo que la tecla Fin)
Mover el cursor al inicio de la lnea actual (mismo que la tecla Inicio)

3G

Ir a la tercera lnea del documento (nG se desplaza a la lnea n)

1G

Ir a la primera lnea del documento

Shift+G

Ir a la ltima lnea del documento

vi
Comandos ms habituales en modo comando
Cdigo

Funcin

dw

Eliminar la palabra (delete word)

2dw

Eliminar 2 palabras

xxx

Eliminar 3 caracteres a la derecha del cursor(depender de la cantidad de x)

12x

Eliminar 12 caracteres a la derecha del cursor

6X

Eliminar 6 caracteres a la izquierda del cursor

Deshacer la ltima operacin

4u

Deshacer las 4 ltimas operaciones

dd

Eliminar la lnea actual

2dd

Eliminar 2 lneas: la actual y la siguiente

yw

Copiar la palabra actual

Pegar el ltimo texto copiado o borrado

vi
Comandos ms habituales en modo comando
Cdigo

Funcin

Borrar des de la posicin actual hasta el final de lnea

Ajuntar 2 lneas: la actual y la siguiente

L minscula mueve un espacio

Cambia la letra de mayscula a minscula

(o minscula) Abrir una lnea en blanco justo por debajo de la lnea actual

(o mayscula) Abrir una lnea en blanco justo por encima de la lnea actual

Buscar una palabra en las lneas siguientes

Buscar una palabra en las lneas anteriores

cw

Substituye la palabra localizada por la palabra que se escriba

nano
Escritura normal. Se pueden usar las teclas de
flecha para moverse en el texto
La mayora de los comandos son Control +
otro carcter
Leyenda de los comandos habituales en la
parte inferior de la pantalla. Por ejemplo:
^X para salir
^W encontrar
^G para obtener ayuda en cualquier lugar

Scripting (Shebang)

#!
#! indica inicio Script (Shebang = hash + Bang)
Indica al ncleo (kernel) qu Shell utiliza para
ejecutar el script
Debe estar en la primera lnea
#! /Bin/sh
#! /usr/Bin/ruby

Permite ejecutar el script con ./script sin


importar la Shell que utilice el usuario

Trabajar con Variables

Variables
Almacenamiento temporal de datos en memoria
Asignacin (sin $):
FOO=Hello"
CWD=`pwd`
BAR=Hello $NAME"

Usar variables (necesita $):


$FOO
echo Hello $NAME

Variables especiales
$1 .. $9 son los argumentos de los Scripts
./test.sh hello there # $1="hello" $2=there"
$? es la salida del ltimo comando que se ha
ejecutado
utilizar "exit 1" para salir de su propio Script
con el cdigo de error 1

Trabajar con Condicionales

Condicionales
if something; then
do this
fi

if something; then
do this
if something else; then
do that
else
try this
fi

# Devuelve un cdigo de
salida. Si es 0, entonces
do this" ser ejecutado
hasta fi
# La sintaxis alternativa,
permite mltiples
pruebas e incluso una
opcin por defecto

Tests
test -f /tmp/foo
# prueba si el archivo existe
test! -f /tmp/foo # Prueba si el archivo NO existe
test $A -eq 1
# si $A=1 (numrico)
test "$B"="Hola" # comparacin de cadena
test $A -lt 10
# $A <10?
alternativamente, [ es igual que el test:
if test -f /tmp/foo;
# funciona
if [ -f /tmp/foo];
# Mejor sintaxis

Case
case "$GREETING" in
hello|hi)
echo "hello yourself"
;;
goodbye)
echo "nice to have met you"
echo "I hope to see you again"
;;
*)
echo "I didn't understand that"
esac

Loops

El bucle for
Opera sobre un conjunto fijo de elementos o
siguiendo una condicin
NAMES=Alice Bob Charlie
for N in $NAMES; do
echo Hello $N
done
for FILE in *; do
ls l $FILE
done

While para bucles


Testea las condiciones del bucle cada vez
while [ ! f /tmp/foo ]; do
try_to_make_foo
# makes /tmp/foo on
success
sleep 1 # wait 1 sec
done
Se utiliza cuando no se conoce el nmero de
bucles o en bucles cambiantes

RESRVESE EL 13 DE ABRIL PARA ASISTIR AL EVENTO DE REFERENCIA


EN FORMACIN Y CERTIFICACIN OFICIAL TIC!
Inscripcin e informacin en www.pue.es/pueday2016
#PUEDAY16

Gracias por vuestra atencin

Sergi Pons: Responsable Tcnico CNA y LPI


PUE (PROYECTO UNIVERSIDAD EMPRESA)
rea de Proyectos de Educacin

PUE - Proyecto Universidad Empresa, SL. Avda. Diagonal, 98-100 - Distrito 22@ Barcelona (Espaa, 08019) Tel: 932060249 Fax: 932060646

También podría gustarte