PDF de programación - Tema 4: Shell Scripting - Inmersión Linux: de 0 a 100 en 30 horas

Imágen de pdf Tema 4: Shell Scripting - Inmersión Linux: de 0 a 100 en 30 horas

Tema 4: Shell Scripting - Inmersión Linux: de 0 a 100 en 30 horasgráfica de visualizaciones

Publicado el 2 de Abril del 2018
498 visualizaciones desde el 2 de Abril del 2018
701,0 KB
19 paginas
Creado hace 16a (01/08/2007)
Inmersión Linux: de 0 a 100 en 30 Horas

Tema 4: Shell Scripting

 

 

J. Félix Ontañón <[email protected]>

Indice

Indice
● Espacio de usuario y espacio de kernel
● ¿Qué es una shell?
● Breve historia
● Comandos básicos
● Tuberías y redirecciones
● Variables bash y variables de entorno
● Sentencias de control
● Scripts
● Funciones
● Comandos avanzados

 

Inmersión Linux: De 0 a 100 en 30 Horas

 

Espacio de usuario y espacio de kernel

Espacio de kernel

El kernel se ocupan de gestionar los recursos de hardware de la máquina de una 
forma eficiente y sencilla, ofreciendo al usuario una interfaz de programación simple y 
uniforme. Toda subrutina que forma parte del kernel tales como los módulos o drivers 
se consideran que están en el espacio del kernel.

Espacio usuario

Los programas que utiliza el usuario final, tales como las "shell", residen en el espacio 
de usuario. Estas aplicaciones necesitan interaccionar con el hardware del sistema, 
pero no lo hacen directamente, sino a través de las funciones que soporta el kernel.

 

Inmersión Linux: De 0 a 100 en 30 Horas

 

¿Qué es una shell?

● Intérprete de comandos. Interfaz modo­texto al S.O.
● Se comunica con las rutinas de servicio del núcleo a 
través de la librería estándar de C GlibC.
● Potente lenguaje de scripting, según qué shell.

Espacio de usuario

Espacio de kernel

¿?

Shell

GlibC

API

Manejador 
de llamadas
al sistema

 

Inmersión Linux: De 0 a 100 en 30 Horas

 

Rutina

de

servicio

Breve historia

● sh: 

● csh: 

● ksh: 

● bash:

Bourne shell. Shell por defecto en Unix desde 1977

C shell. Es una shell dirigida a programadores. 
Integra la sintaxis del lenguaje C. Principios de los 80.

Korn shell. Integra elementos de sh y csh. Creada en los 80

Bourne­again shell. Creada para el proyecto Gnu.
Evolución de ksh. Ampliamente utilizada en el mundo Linux.

 

Inmersión Linux: De 0 a 100 en 30 Horas

 

La potencia del shell scripting reside en la combinación de los comandos del sistema 
sumada a las built­in features de la shell.

Comandos básicos

ls
cd
mkdir
rm
cat
echo
cp
mv 
find
grep
wc
ln
who
uptime
ps
test

Nota:
Para información 
detallada sobre 
un comando 
tecléese
man comando

Lista el contenido de un directorio
Cambia de directorio
Crea un directorio
Borra ficheros y directorios
Muestra el contenido de un fichero
Imprime cadenas de caracteres por pantalla
Copia ficheros y directorios
Mueve ficheros y directorios
Busca nombres de ficheros
Busca cadenas de texto que siguen un patrón
Cuenta líneas, palabras y letras
Crea enlaces duros y simbólicos
Muestra información sobre los usuarios en el sistema
Muestra información interesante sobre el sistema
Muestra información sobre los procesos en ejecución
Realiza comparaciones lógicas con cadenas, enteros y ficheros

 

Inmersión Linux: De 0 a 100 en 30 Horas

 

Tuberías y redirecciones

Entrada estándar, salida estándar y salida de error
Cada proceso abre tres “archivos” estándar: entrada estándar (stdin), salida estándar 
(stdout) y error estándar (stderr). 

● stdin: 

Lugar desde donde los procesos reciben la entrada. 

   Por defecto el teclado.

● stdout:  Lugar por donde los procesos envían la salida. 

   Por defecto pantalla.

● stdout:  Lugar por donde los procesos envían los mensajes de error.

   Por defecto la pantalla.

stdin

stdout
stderr

proceso

 

Inmersión Linux: De 0 a 100 en 30 Horas

 

Redirecciones

Desde la shell podemos desviar la salida estándar o de error de un proceso a un 
archivo. También podemos usar un archivo como entrada estándar de una aplicación

Tuberías y redirecciones

stdin

proceso

stderr

stdout

stdin

proceso

stdout

stderr

$ ls -a > mis_ficheros.txt

$ make 2> errores_compilando.txt

stderr

stdin

proceso

stderr

stdin

proceso

stderr

stdout

$ make > salida.txt 2> errores.txt

$ wc -l < fichero

 

Inmersión Linux: De 0 a 100 en 30 Horas

 

Tuberías y redirecciones

Tuberías

También podemos canalizar la salida de un proceso como entrada de otro proceso. De 
este modo podríamos decir que “conectamos” comandos. Este es el concepto de 
tubería.

stdin

proceso

A

proceso

B

stdout

stderr

$ find . | grep informes

stdin

proceso

A

proceso

B

proceso

C

stdout

stderr

$ find . | grep informes | wc -l

stdin

proceso

A

stdout

proceso

B

proceso

C

stderr

$ find . 2> errores | grep informes | wc -l > num_informes.txt

 

Inmersión Linux: De 0 a 100 en 30 Horas

 

Variables bash y variables de entorno

Variables en bash
● Pueden crearse variables y arrays de variables.
● Consideraremos a bash como lenguaje débilemente tipado.
● Podemos asignar la salida de un comando a una variable.

yo@mipc:~$ una_variable="Hola Mundo"
yo@mipc:~$ echo $una_variable
Hola Mundo
yo@mipc:~$ una_variable=$(whoami)
yo@mipc:~$ echo $una_variable
yo
yo@mipc:~$ un_array=( hola adios si no)
yo@mipc:~$ echo ${un_array[1]}
adios

 

Inmersión Linux: De 0 a 100 en 30 Horas

 

Variables bash y variables de entorno

Variables de entorno

Contamos con un conjunto de variables definidas cuando iniciamos una sesión de 
shell, algunas definidas por el S.O y otras por las aplicaciones lanzadas y otras 
asignadas en nuestro fichero de configuración de shell.

$PATH
$LANG

$PWD
$HOME
$HOSTNAME
$PS1
$?

Caminos de búsqueda de ejecutables
Idioma de nuestra sesión de shell

Ruta actual
Directorio home del usuario (carpeta personal)
Nombre de la máquina
Formato del prompt
Código de retorno del comando anterior

$RANDOM

Entero aleatorio

 

Inmersión Linux: De 0 a 100 en 30 Horas

 

Nota:
Podemos ver 
todas las 
variables de 
entorno definidas 
ejecutando el 
comando set

Sentencias de control

Estructuras condicionales

Con estructuras condicionales nos referimos a sentencias del tipo if then else o
switch case. Este tipo de estructuras son built­in functions de bash.

yo@mipc:~/$ T1="eso"
yo@mipc:~/$ T2="aquello"
yo@mipc:~/$ if [ $T1 = $T2 ]; then echo igual; else echo distinto; fi

yo@mipc:~/$ uno=1
yo@mipc:~/$ dos=2
yo@mipc:~/$ if [ $uno -lt $dos ]
> then echo menor
> else echo mayor
> fi
menor

yo@mipc:~/$ case $(wc -l fichero) in
> 2 ) echo "dos líneas"; break;;
> 3 ) echo "tres líneas" ; break;;
> * ) echo “no lo se”;;
> esac
dos líneas

 

Inmersión Linux: De 0 a 100 en 30 Horas

 

Sentencias de control

Bucles I

Contamos con los bucles tipo: for, while, until. 
El bucle for es algo particular en bash porque opera sobre series de “palabras”

yo@mipc:~/$ echo -n "Mis amigos son:"; for i in Maria Pedro Juan;
do echo -n " $i"; done; echo
Mis amigos son: Maria Pedro Juan

yo@mipc:~/$ for i in $(seq 1 4)
> do
> echo $i- $RANDOM
> done
1- 23242
2- 23123
3- 232
4- 2312

yo@mipc:~/$ array=( a b c )
yo@mipc:~/$ for i in ${array[*]}
> do
> echo $i
> done
a
b
c

 

Inmersión Linux: De 0 a 100 en 30 Horas

 

Sentencias de control

Bucles II

yo@mipc:~/$ CONTADOR=0
yo@mipc:~/$ while [ CONTADOR -lt 10 ]; do
> echo -n $CONTADOR; done
> let CONTADOR=$CONTADOR+1
> done
0123456789

yo@mipc:~/$ CONTADOR=0
yo@mipc:~/$ until [ CONTADOR -gt 9 ]; do
> echo -n $CONTADOR
> let CONTADOR=$CONTADOR+1
> done
0123456789

 

Inmersión Linux: De 0 a 100 en 30 Horas

 

Scripts

En informática, un script es un guión o conjunto de instrucciones. Permiten la 
automatización de tareas creando pequeñas utilidades. Es muy utilizado para la 
administración de sistemas UNIX. Son ejecutados por un intérprete de línea de 
comandos y usualmente son archivos de texto.

Wikipedia

$ chmod +x 

#!/bin/bash

for i in $(seq 1 10)
do
echo Saludo nº $i
done

script
bash

 

Inmersión Linux: De 0 a 100 en 30 Horas

 

Funciones

Podemos organizar en código en funciones. Las peculiaridades al respecto son el 
nombre de los argumentos que recibe una función. Éstos se llaman $1 $2 $3 y así 
sucesivamente.

#!/bin/bash

function dos_parametros {

echo son $1 y $2

}

function archivo {

echo mi archivo es: $1

}

dos_parametros este $1
for i in $(ls); do
archivo $PWD/$i

yo@mipc:~/$ chmod +x mi_script.sh
yo@mipc:~/$ ./mi_script.sh aquel
son este y aquel
mi archivo es: /home/yo/Audio
mi archivo es: /home/yo/Desktop
mi archivo es: /home/yo/mi_script.sh
mi archivo es: /home/yo/Documentos
mi archivo es: /home/yo/informe.txt
...
...
...

done

 

Inmersión Linux: De 0 a 100 en 30 Horas

 

Comandos avanzados

awk

Usaremos awk como comando para el tratamiento de texto. awk es capaz de realizar 
búsquedas por líneas que cumplan ciertos criterios (o expresiones regulares) y aplicar 
procesamiento a los campos de las líneas que validan los criterios.

yo@mipc:~/$ cat personas | awk '/Maria/ {print $3}' | sort | uniq
Abogado
Profesora
yo@mipc:~/$ awk '.*a.*u.*' {print $1,$2}' personas
Felipe Marquez
Jose Lopez
Manuel Dominguez
yo@mipc:~/$ who | awk '// {print $1}'
yo
yo@mipc:~/$ ps -A | awk '// {print $NF}'

 

Inmersión Linux: De 0 a 100 en 30 Horas

 

Comandos avanzados

sed

sed es otra potente herramienta de tratamiento de texto. Permite cortar líneas y 
realizar sustituciones de palabras que cumplan criterios (o expresiones regulares) a 
partir de un flujo de datos.

yo@mipc:~/$ cat personas | grep Pepe | sed 's/[a,e,o,u]/i/g'
Pipi Sinchiz Fliristi
yo@mipc:~/$ sed 2, 5d personas
Maria Perez Abogado
Maria García Profesora
Manuel Dominguez Ejecutivo
yo@mipc:~/$ cat /var/log/auth.log | grep Failed | awk '// {print
$9,$1,$2,$3}' | sed 's/^/POSIBLE INTRUSO /g' > INTRUSOS.txt

 

Inmersión Linux: De 0 a 100 en 30 Horas

 

Para mas documentación

Bibliografía

http://es.wikipedia.org/wiki/Bash
http://es.tldp.org/COMO­INSFLUG/COMOs/Bash­Prog­Intro­COMO/Bash­Prog­Intro­COMO.html
http://www.freeos.com/guides/lsst/
http://docs.hp.com/es/5187­2217/ch03s03.html

 

Inmersión Linux: De 0 a 100 en 30 Horas

 

Obra distribuida bajo licencia Creative Commons Reconocimiento – No comercial
http://creativecommons.org/licenses/by­nc/2.5/es/
  • Links de descarga
http://lwp-l.com/pdf10114

Comentarios de: Tema 4: Shell Scripting - Inmersión Linux: de 0 a 100 en 30 horas (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad