Documente Academic
Documente Profesional
Documente Cultură
ndice
8. Pipes, redireccin y REGEX
9. Scripting bsico
Objetivos
Tuberas (pipes) y redirecciones
POSIX parcial
Redirecciones en la
lnea de comandos
< /path/to/file
> /path/to/file
>> /path/to/file
2> /path/to/file
2>> /path/to/file
&> /path/to/file
&>> /path/to/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 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
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
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.
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
El comando find
nombre
tamao
fecha
propiedad
Ejemplo
Significado
-maxdepth
-maxdepth 1
-grupo
-grupo trabajadores
-iname
-iname hosts
-mmin
-mmin -10
-tipo
-type f
-user
-user bob
El comando less
Clave
Barra espaciadora
Entrar
Salida
Ayuda
head o tail
El comando Sort
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:
El comando cut
El comando grep
Propsito
--color
-v
Coincidencias inversas
-c
Contador coincidencias
-n
-l
-i
-w
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
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
Editores de texto
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
vi
Comandos ms habituales en modo insertar
Cdigo
Funcin
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
1G
Shift+G
vi
Comandos ms habituales en modo comando
Cdigo
Funcin
dw
2dw
Eliminar 2 palabras
xxx
12x
6X
4u
dd
2dd
yw
vi
Comandos ms habituales en modo comando
Cdigo
Funcin
(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
cw
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
Variables
Almacenamiento temporal de datos en memoria
Asignacin (sin $):
FOO=Hello"
CWD=`pwd`
BAR=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
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
PUE - Proyecto Universidad Empresa, SL. Avda. Diagonal, 98-100 - Distrito 22@ Barcelona (Espaa, 08019) Tel: 932060249 Fax: 932060646