Inmersión Linux: de 0 a 100 en 30 Horas Tema 4: Shell Scripting. J. Félix Ontañón

Documentos relacionados
BASH Scripting. Contenidos. BASH: Bourne-Again SHell. Hola mundo!

Shell Script Sistemas Operativos III - ITS EMT - CETP

bash Scripting 31 de mayo de 2007

Programación shell-scripts 1 LA SHELL

Taller de programación shell

Sistemas Operativos sesión 13: shell-scripting

Linux 101 Explorando la línea de comandos

Programación shell en Unix/Linux ksh, bash, sh (con ejercicios corregidos) (4ª edición)

Tema 7:Línea de ordenes del sistema operativo.

El entorno de programación UNIX. CI-2400 Programación Avanzada en Sistemas de Tipo UNIX Prof. Braulio José Solano Rojas ECCI, UCR

CAR. Responsable : María del Carmen Heras Sánchez. Asesores Técnicos : Daniel Mendoza Camacho Yessica Vidal Quintanar.

Sistemas Operativos. Bourne Again Shell. Dr. Wenceslao Palma M.

GNU/Linux desde la línea de comandos. Pablo Garaizar Sagarminaga (txipi) Alvaro Uría Avellanal (Fermat)

Que es el Shell? Kernel. Other programs. csh. bash. X window

Programando con el intérprete de órdenes (shell) de UNIX

Programación shell en Unix/Linux sh, ksh, bash (con ejercicios corregidos) (3ª edición)

LINUX - El intérprete de órdenes I

SEMANA N 9 NOMBRE EXPERIENCIA: Funciones, variables y arreglos en BASH UNIDAD DE APRENDIZAJE: Introducción a los SCRIPTS

Nombre:... Fecha: / 12 /2010

Facultad de Ingeniería Universidad de Buenos Aires Sistemas Operativos Lic. Ing. Osvaldo Clúa Lic. Adrián Muccio.

Introducción a Linux. El regreso a los años 70: la consola (I)

Interfaz de línea de comandos (CLI)

Computer Networks I 1. LÍNEAS DE COMANDO EN LINUX PARA PRÁCTICAS DE REDES I con Raspberry Pi 2

UNIX. Curso de Modelado Molecular I INTRODUCCIÓN

El sistema operativo Linux

Linux Principios básicos de uso del sistema [4ª edición]

LINUX - Los archivos de órdenes I

PREGUNTAS Y RESPUESTAS RELATIVAS AL USO DE COMANDOS BÁSICOS EN LINUX

PROGRAMACIÓN DEL SHELL

LINUX - El intérprete de órdenes II

El shell de GNU/Linux

Tema: Uso de Bash en Linux.

Introducción a GNU/Linux 20/08/2015

PROGRAMACIÓ E SHELL DE LI UX.

Laboratorio de Sistemas Operativos. Ingenierías Técnicas en Informática de Sistemas y Gestión 2006/2007

Es la estructura que permite ejecutar los comandos solamente si se cumple una determinada condición. La sintaxis más usual:

PROGRAMACIÓN DE LA SHELL DE UNIX/LINUX

Creación De Scripts Ejecutables

Introducción a Python. Cecilia Manzino

Anexo: Lenguajes de Scripting

1. Cómo asignar una IP a mi ordenador? 2. Cómo hago para ver los archivos del directorio anterior? 3. Cómo sé en qué directorio estoy? 4.

Programación en Shell Bash

Mª DOLORES CARBALLAR FALCÓN L

Sistemas Operativos. Práctica 1. del shell bash de Unix Curso 2005/2006

SILLABUS CURSO : LINUX

Shell scripting en Linux

Práctica 1: Intérprete de mandatos. Sistemas Operativos Área de Arquitectura y Tecnología de Computadores

Fundamentos PHP. El término puntuación nos referimos a la sintaxis usada en PHP para la terminación de una línea de código (;)

Introducción. Ejemplo 1: Variables. Ejemplo 2: Perl (Practical Extraction Report Language).

Introducción a Scripts. Cecilia Curlango Rosas

Unidad 5. Gestión remota GNU/Linux. Implantación y administración remota y centralizada de Sistemas Operativos. Manuel Morán Vaquero

$0 Representa al parámetro cero o nombre del programa $1 Representa al parámetro uno $2 Representa al parámetro dos

Nociones de informática. Qué es una computadora? GNU/Linux. Lo mínimo que hay que saber para empezar a trabajar con una computadora del aula

Tema: Uso de Bash en Linux Parte II.

Curso de verano. Biología Computacional: Análisis masivo de datos ómicos

UNIDAD DIDACTICA 3 REDIRECCIONAMIENTO Y TUBERIAS

LINUX: Guiones Shell (Shell scripts)

Programación con bash

TRABAJANDO CON ARCHIVOS Y DIRECTORIOS. Sistemas Operativos 3 Wandirys Lappost Díaz

Programando Scripts en Bourne Shell

INTRODUCCIÓN A LA SHELL DE UNIX/LINUX

El intérprete de comandos

Instituto Tecnológico de Las Américas (ITLA)

Contenido 1. INTRODUCCIÓN A LOS SISTEMAS OPERATIVOS PROCESOS Prólogo...

Para: Asunto: Practica 1, Evaluación 4, Redes 2 sección 03. Cuerpo del msj: Su nombre completo y número de carnet

Linux. Comandos básicos. Gustavo C. Distel D.C.I.C. U.N.S.

CURSO: SISTEMA OPERATIVO LINUX, ADMINISTRACIÓN Y CONFIGURACIÓN


Sesión 1. Comandos básicos. Curso 09/10. Fernando Rincón Escuela Superior de Informática Universidad de Castilla-La Mancha

Un pequeño manual de Shells

1. Por qué decimos que "Linux" es solamente el kernel del sistema operativo que utilizamos?

Introducción al Sistema Operativo Unix

Bloque III. Herramientas

El directorio principal se denomina raíz y se expresa con la barra invertida \ es el directorio padre

Uso básico del shell.

Shell Scripting II II

Las características principales de la shell son las siguientes:

UNIVERSIDAD DON BOSCO FACULTAD DE ESTUDIOS TECNOLÓGICOS ESCUELA DE COMPUTACIÓN

Resumen de comandos usuales de Unix y uso básico del shell bash

DESCRIPCIÓN ESPECÍFICA NÚCLEO: COMERCIO Y SERVICIOS SUBSECTOR: INFORMÁTICA

Estructuras de Control. Cecilia Curlango Rosas

Introducción a UNIX. LABORATORIO DE SISTEMAS DE OPERACIÓN I (ci 3825) Prof. Yudith Cardinale

P1. Comandos básicos de Unix, editor de textos (joe) y procesos en C.

Introducción a GNU/Linux

donde <directorio> es el nombre del directorio al que queremos ingresar.

Shell de Unix ProgPLN

Introducción a BASH. Francisco Alonso Sarría

Introducción a Linux

Introducción a Linux. II.

Administración de Servidores y Redes LINUX

PROGRAMACIÓN EN JAVA

Química computacional: Introducción a

Shell scripting en Linux. Introducción

PROGRAMA FORMATIVO. Administración de Sistemas Solaris y Oracle Linux con Shellscript

Prácticas de Fundamentos del Software

El Sistema Operativo Linux

Taller de programación shell

Taller de Sistemas Operativos I Red Hat Academy. Sesión 07a El intérprete BASH y escritura de scripts en GNU/Linux

66.69 CRIPTOGRAFÍA Y SEGURIDAD INFORMÁTICA

Bloque II. Herramientas

Transcripción:

Inmersión Linux: de 0 a 100 en 30 Horas Tema 4: Shell Scripting J. Félix Ontañón <felixonta@gmail.com>

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

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.

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 Rutina de servicio

Breve historia sh: Bourne shell. Shell por defecto en Unix desde 1977 csh: C shell. Es una shell dirigida a programadores. Integra la sintaxis del lenguaje C. Principios de los 80. ksh: Korn shell. Integra elementos de sh y csh. Creada en los 80 bash: Bourne again shell. Creada para el proyecto Gnu. Evolución de ksh. Ampliamente utilizada en el mundo Linux.

Comandos básicos La potencia del shell scripting reside en la combinación de los comandos del sistema sumada a las built in features de la shell. ls cd mkdir rm cat echo cp mv find grep wc ln who uptime ps test Lista el contenido de un directorio Nota: Cambia de directorio Para información Crea un directorio detallada sobre Borra ficheros y directorios un comando Muestra el contenido de un fichero tecléese Imprime cadenas de caracteres por pantalla man comando 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 s en ejecución Realiza comparaciones lógicas con cadenas, enteros y ficheros

Tuberías y redirecciones Entrada estándar, salida estándar y salida de error Cada abre tres archivos estándar: entrada estándar (stdin), salida estándar (stdout) y error estándar (stderr). stdin: Lugar desde donde los s reciben la entrada. Por defecto el teclado. stdout: Lugar por donde los s envían la salida. Por defecto pantalla. stdout: Lugar por donde los s envían los mensajes de error. Por defecto la pantalla. stdin stdout stderr

Redirecciones Tuberías y redirecciones Desde la shell podemos desviar la salida estándar o de error de un a un archivo. También podemos usar un archivo como entrada estándar de una aplicación stdin stdin stderr stdout stdout stderr $ ls -a > mis_ficheros.txt $ make 2> errores_compilando.txt stdin stderr stdin stderr stderr stdout $ make > salida.txt 2> errores.txt $ wc -l < fichero

Tuberías y redirecciones Tuberías También podemos canalizar la salida de un como entrada de otro. De este modo podríamos decir que conectamos comandos. Este es el concepto de tubería. stdin A B stdin A B C stdout stderr $ find. grep informes stdout stderr $ find. grep informes wc -l stderr stdin A B C stdout $ find. 2> errores grep informes wc -l > num_informes.txt

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

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 Caminos de búsqueda de ejecutables Idioma de nuestra sesión de shell $PWD Ruta actual $HOME Directorio home del usuario (carpeta personal) $HOSTNAME Nombre de la máquina $PS1 Formato del prompt $? Código de retorno del comando anterior $RANDOM Entero aleatorio 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

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

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

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

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 done 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.........

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}'

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

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 Obra distribuida bajo licencia Creative Commons Reconocimiento No comercial http://creativecommons.org/licenses/by nc/2.5/es/