Programación shell-scripts 1 LA SHELL



Documentos relacionados
LINUX - Los archivos de órdenes I

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

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

LINUX - El intérprete de órdenes II

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

Creacion de Script. Que es un Script?

Objetivo: Introducción conceptual y aplicación básica de los lenguajes del lado del servidor.

PROGRAMACIÓN DE LA SHELL DE UNIX/LINUX

Apuntes de ACCESS. Apuntes de Access. Campos de Búsqueda:

El sistema operativo Linux

Curso PHP Módulo 1 R-Luis

Introducción a la Programación en MATLAB

Programación con bash

TEMA 1.- Conceptos Generales y Entorno de Trabajo Objetivo

1. Visualización de datos con Octave

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

RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA

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

Introducción a PHP. * No es necesario declarar previamente las variables.

Shell de Unix ProgPLN

OPERADORES LÓGICOS Y DE COMPARACIÓN EN PHP. PRIORIDADES. EJEMPLOS. EJERCICIOS RESUELTOS. (CU00818B)

Ejecución de procesos en forma remota

Programación: QBASIC

Objetivos de la práctica: - Practicar uso de ficheros: abrir, cerrar y tratamiento de información contenida en el fichero.

Herramientas computacionales para la matemática MATLAB: Scripts

TEMA 2 WINDOWS XP Lección 4 BLOC DE NOTAS

Problema 1 (3 puntos)

Taller de programación shell

Abelardo Pardo. Iria Estévez Ayres. Damaris Fuentes Lorenzo. Pablo Basanta Val. Pedro J. Muñoz Merino. Hugo A. Parada.

Capítulo 9. Archivos de sintaxis

Programación SHELL. Resumen de Programación en Shell. Álvaro Tomás Marín Vílchez

Conceptos Fundamentales sobre UNIX Laboratorio Funcionalidades de los Shells Korn y Bash (Tiempo estimado: 45 min.)

GUIA DE LABORATORIO 1(Tercera Parte) Sistemas operativos

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

Uso básico de la terminal

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

Práctica 1ª: Introducción a Matlab. 1er curso de Ingeniería Industrial: Ingeniería de Control

2_trabajar con calc I

CONSULTAS CON SQL. 3. Hacer clic sobre el botón Nuevo de la ventana de la base de datos. Aparecerá el siguiente cuadro de diálogo.

Preliminares. Tipos de variables y Expresiones

Administración de Infraestructuras. Tecnólogo en Informática

Se guardan en archivos con extencion c y los cabezales con extension h

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

CREACIÓN Y CONFIGURACIÓN DE WIKIS

Guardar y abrir documentos

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

Oficina Online. Manual del administrador

Estructuras de Datos y Algoritmos Tecnólogo en Informática

PROGRAMACIÓN DEL INTÉRPRETE DE COMANDOS DE UNIX/LINUX

TEMA 3. EL PROCESO DE COMPILACIÓN, DEL CÓDIGO FUENTE AL CÓDIGO MÁQUINA

Tema 7: Programación con Matlab

Instituto Tecnológico de Las América. Materia Sistemas operativos III. Temas. Facilitador José Doñe. Sustentante Robín Bienvenido Disla Ramirez

El Sistema Operativo Linux

Kaldeera Advanced Forms 2009 Guía del usuario

Definiciones. Tema 21_Módulos Menú 1

TEMA 20 EXP. WINDOWS PROC. DE TEXTOS (1ª PARTE)

Índice general de materias LECCIÓN 7 74

2.1.- EJEMPLO DE UN PROGRAMA FORTRAN

Creación de Scripts. Qué es un script? Como funciona un shell script en Linux?

SINAC - Sistema de Información Nacional de Agua de Consumo MENU PRINCIPAL. Copyright Ministerio de Sanidad y Consumo

Introducción a Matlab.

TEMA 3: EL LENGUAJE C: PRESENTACIÓN

GUÍA DE USUARIO DEL CORREO

MANUAL DE USUARIO DE LA HERAMIENTA CONFIGURACION DE PRESUPUESTOS PARA DISTRIBUIDORES

Usuarios, Grupos y Permisos en GNU/Linux

Operación de Microsoft Word

MANUAL DE USUARIO. SISTEMA DE INVENTARIO DE OPERACIONES ESTADÍSTICAS.

Práctica PLC1: Introducción a la programación del PLC Siemens 314IFM en el entorno Step-7

Conceptos Generales en Joomla

Ejemplos de conversión de reales a enteros

Trey-SAT Pag. 1. Manual de usuario

LINUX: Guiones Shell (Shell scripts)

Utilidades de ficheros: Texto, binarios y genéricas - Revision : 1,9

PL/SQL. Con PL/SQL vamos a poder programar las unidades de programa de la base de datos Oracle:

ESCUELA SUPERIOR DE INFORMATICA Prácticas de Estadística UNA SESIÓN EN SPSS

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

La plantilla propone aprovechar esta estructura en común y sólo modificar el contenido del área del documento que sea diferente.

1 ELEMENTOS BASICOS DEL LENGUAJE

Que es PHP? Que se puede hacer con PHP? Sintaxis del lenguaje. Variables. Operadores básicos. Condicionales. Ciclos.

Ejercicios - Persistencia en Android: ficheros y SQLite

Manual de uso de la plataforma para monitores. CENTRO DE APOYO TECNOLÓGICO A EMPRENDEDORES -bilib

ESTRUCTURAS CONDICIONALES EN PHP: SWITCH, CASE, BREAK. EJEMPLOS DE USO Y EJERCICIOS RESUELTOS. (CU00820B)

Seminario de introducción al uso del sistema operativo UNIX

Introducción a la Computación TFA

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

Centro de Capacitación en Informática

EDICION DE TEXTOS ALEXANDRA LUCAS TICO

Arranque de la aplicación

GUIA COMPLEMENTARIA PARA EL USUARIO DE AUTOAUDIT. Versión N 02 Fecha: 2011-Febrero Apartado: Archivos Anexos ARCHIVOS ANEXOS

EDITRAN/CL. Manual de Usuario e Instalación. Módulo de Cliente Departamental. Windows

Escudo Movistar Guía Rápida de Instalación Para Windows

PHP Básico. PHP para principiantes

SOLUCION EXAMEN junio 2006

1.- MENU DE CONTROL O MENU VENTANA: permite cerrar la ventana cambiarla de tamaño y pasar a otra ventana

TERMINAL DE COMANDOS (RED HAT, CENTOS Y FEDORA)

El Entorno Integrado de Desarrollo Dev-C++ (Ayuda básica para las primeras sesiones de prácticas)

INSTRUCTIVO DEL COMANDO MAKE

Transcripción:

Programación shell-scripts 1 LA SHELL Un gran número de utilidades y herramientas de administración están realizadas mediante ficheros de ordenes del interprete de comandos de Unix (Shell). A lo largo del la evolución de este S.O. han aparecido distintas versiones de Shell siendo la Cshell (csh) y Kshell (ksh), las más utilizadas junto a la Bourne shell (sh), la shell originaria. El sistema GNU/Linux utilizan por defecto la shell Bash, (Bourne-Again shell) desarrollada por FSF (Free Software Fundation). Este intérprete de comandos incluye la características tanto de la C-shell como K-shell La shell es el programa más del sistema que encargado de interpretar las órdenes que introduce el usuario, buscar el comando y controlar su ejecución. Esquema de ejecución de la Shell: MIENTRAS NO TERMINAR Leer línea de comando SI línea termina en & arrancar proceso comando SI NO arrancar proceso comando esperar terminación FIN SI FIN MIENTRAS $ comando (espera) $ comando & (sin espera) En 2º plano o background Por omisión cuando termina la shell terminan todos su procesos asociados, nohup permite que continúen mostrando el resultado en un fichero Manejo del historial de ordenes en bash: Movimiento en la línea de orden Flechas del cursor!! ultimo!cadena -- Ultimo que empiece por cadena Formatos de ordenes: $comando arg1 arg2 - Ejecutar varios comandos en una sola línea $comando ; comando ; - Ejecutar un comando que ocupa más de una línea $comando parametro1 \ Para que no interprete el salto resto de parámetros - Ejecutar uno o varios comandos en segundo plano $comando & $(comando; comando ) & - Ejecución condicionada $ comando1 && comando2 Si comando1 hace comando2 $ comando1 comando2 Si falla comando1 hace comando2 Caracteres especiales en bash En los parámetros se pueden utilizar caracteres comodines * Cualquier carácter. $cat *test*

Programación shell-scripts 2? Un carácter $ls facturas.200? [] Un conjunto de caracteres [1-8][a-b][aeiou] $ls [aa]* Caracteres de redirección Todo proceso tiene 3 ficheros abiertos stdin 0, stdout 1, stderr,2 > Redirección de la salida estándar < Redirección de la entrada estándar >> Añade a la salida estándar 1> Salida estándar 2> Salida estándar de errores 2>&1 Mezcla la salida estándar y la errores conecta la salida de un comando con la entrada del otro Ej.- $ who sort la salida de un comando es la entrado del otro Caracteres de control de proceso <ctrl.> C Termina el proceso activo <ctrl.> D Final de fichero o Fin de sesión <Ctrl.> Z Suspende la ejecución de proceso activo la orden $fg trabajo reanuda el trabajo la orden $jobs nos muestra los trabajos arrancados <ctrl.> S Detiene la salida por pantalla <ctrl.> Q Reanuda la salida por pantalla %1 : Primer tarea en segundo plano %xxx : Tarea en segundo plano con el comando xxx ALIAS - Versión resumida de una orden Mostar alias Definir alias ll="ls -l" alias l ="ls -F" Elminar unalias ll VARIABLES DE LA SHELL Definición de variables (Todos son texto) nombre=valor nombre=`comando` Toma la salida de ese comando Consultar su contenido $nombre o ${nombre} Mostrar todas las variables definidas $set

Programación shell-scripts 3 Elimina una variables $unset nombre Por convenio se suele definir en mayúsculas Variables de entorno. La shell tiene predefinidas un conjunto más o menos extenso de variables de entorno que definen valores de configuración. Estos valores pueden ser utilizados tanto por la shell como por todos los procesos que arrancados por ella. Variables de entorno más comunes: PATH - Indica el camino y el orden de búsqueda de los comandos externos. ej - PATH=/usr/bin:/usr/local/bin:/home/jalb/bin:.: HOME - Directorio de trabajo del usuario (PWD) LOGNAME - Nombre del usuario (USER) TERM - Tipo de terminal MAIL - Archivo de correos no leídos o guardados (buzón o mailbox) PS1 - Prompt, Indicador del sistema ej -PS1=[\u@\h \W]\$ Indica: usuario@host Directorio_Actual $ Ficheros de configuración del usuario.bash_profile Archivo de ordenes de inicialización de bash.bash_login Archivo que se ejecuta al conectarnos al sistema.bash_logout Archivo que se ejecuta antes de desconectarnos.bash_history Archivo Historial de orden.bashrc Archivo de configuración personal Ficheros de configuración generales (shell) /etc/profile /etc/bashrc EJECUCIÓN DE PROGRAMAS SHELL (ficheros de ordenes) Como ejecutar un programa shell? $ bash <fichero de ordenes> $. <fichero de ordenes> Pero si el fichero tiene permiso de ejecución ( chmod +x $<fichero de ordenes>) y está el PATH si no./<fichero de ordenes> La primera instrucción puede indicar una shell específica #! /bin/bash El simbolo # -> Indica un comentario Mostrar un mensaje: echo "Mensaje..." echo -n "Mensaje" -- No salta de línea Leer un dato: read variable

Programación shell-scripts 4 Parámetros: $0,$1...$n Parámetro 1,2, 3 El 0 es el nombre del programa $* Todos en una sola cadena $@ Todos los parámetros en varias cadenas) $# El número de parámetros shift -- Desplaza los parámetros $2 -> $1, $# --> $# - 1 Otros: $$ Es el PID $? Valor devuelto por el último comando en exit Si un comando devuelve 0 (No hay fallos) es un valor Falso exit 0 Literales y variables: pepe=hola pepe="hola como estas" pepe="hola $nombre" --Sustituye $nombre por su valor pepe='precio 100 $dolares' --No interpreta el $ pepe=`wc -l datos.dat` --Guarda el resultado de la orden INSTRUCCIONES DE CONTROL Alternativa simple if orden o condición then ordenes else ordenes fi Alternativa múltiple (select) case cadena in patron1) ordenes;; patron2) ordenes;; patrona patronb) ordenes;; *) ordenes en otro caso (default) esac Ciclo Para for var in Lista do ordenes done Ciclo Hasta until orden o condición do ordenes done Ciclo Mientras while orden o condición do ordenes done Evaluar una expresión numérica o lógica: expr resu='expr $1 + 15' let variable=expresión Evaluaciones lógicas y condiciones sobre ficheros mediante el comando test, [ ] Comprobaciones sobre fichero: [ -e fichero ] Si existe el fichero [ -d fichero ] Si es un directorio [ -r fichero ] si se puede leer -r,-w,-x

Programación shell-scripts 5 Comparaciones de cadenas cadena1 = cadena2 cadena1!= cadena2 cadena1 > cadena2 Comparaciones de números numero1 <operador> numero2 -eq -ne -lt ( =,!=, < ) -le -gt -ge (<=, >, >= ) Operadores lógicos: -o (OR ) a (AND )! (NOT) if [ -r fichero1 ] then echo No se puede leer el fichero1 fi

Programación shell-scripts 6 Definición de funciones Las funciones deben estar definidas antes de su llamada según el siguiente formato function NombreF { comandos; } La función se invoca con su nombre: NombreF Puede trabajar con parámetros de la misma manera que la shell $1 NombreF parametros PROGRAMAS ASOCIADOS Existen diversas herramientas muy utilizadas a la hora de elaborar shell-scritps complejas para facilitar el proceso de ficheros grep,egrep,fgrep comandos de búsqueda de patrones awk - Lenguaje de análisis y procesamiento de patrones bc - Lenguaje para cálculo matemático de precisión sed - Editor de texto en modo comando, admite ordenes simulares al vi. perl - Lenguaje de scripts más moderno y potente que shell, enfocado al procesamiento de fichero de texto aunque actualmente se utiliza para todo, desde acceso a bases de datos como para construir CGI. Ej.- # Muestra el contenido del fichero menos las líneas de la 3 a la 6 cat fichero sed 3,6d # Muestra la salida del comando ls en distinto orden ls -l awk '{ printf("%-20s Permisos: %s Usuario:%s \n",$9,$1,$3) }' <Consular los ejemplos y ejercicios del la web>

Programación shell-scripts 7 LENGUAJE AWK Es un lenguaje interpretado, similar al C, pero enfocado al procesamiento de patrones, desarrollado por Alfred V. Aho, Brian W.Kernighan, y Peter J. Weinberger (AWK). - Tiene variables con tipo: carácter, reales, enteros, cadenas y tablas - las variables son dinámicas, se crean el momento que se asigna un valor. Estructura de un programa awk patrón { instrucciones }... patrón { instrucciones } El awk lee líneas del fichero de entrada estándar, comprueba sí la línea cumple con el patrón en ese caso ejecuta las instrucciones señaladas escribiendo en la salida estándar. El programa termina cuando se encuentra el final de fichero Ej- $ cat fichero awk '\pepe\'{ printf $0 } Imprime todas las líneas donde aparezca el patrón "pepe"!ojo $0 es toda la línea no tiene que ver con lo parámetros de la shell Otras formas de ejecución: $ comando awk -f programa.awk Recibe la salida del comando y la procesa según indique el fichero programa.awk mostrando el resultado por pantalla $ awk -f programa.awk datos.dat > ficheroresu Lee el fichero datos.dat, lo procesa según programa.awk guardando la salida en ficheroresu CAMPOS Y REGISTROS Por omisión cada línea representa un registro y cada registro se separa por un o varios espacios en blanco o tabuladores Cada campo en el registro de entrada puede ser referenciado por su posición, $1,$2.. $0 es el registro completo. El valor de un campo puede ser modificados. $1= "Hola" Los campos no necesitan ser referenciados por constantes: n = 5 print $n Muestrea el campo 5

Programación shell-scripts 8

Programación shell-scripts 9 PATRONES /cadena/ Procesa si aparece la cadena /^cadena/ Procesa si aparece la cadena al principio de linea /cadena$/ Procesa si aparece al final del la linea /cadena[a-c]/ Procesa si aparece la cadena seguida de a b c /cadena./ Procesa si aparece la cadena seguida de cualquier caracter /cadena[srz] Procesa si aparece la cadena seguida de s r Z /caden1 caden2/ Procesa si aparece la cadena 1 o la cadena2 Los patrones se pueden unir con condiciones: /cade1/ /cade2/ /cade1/ && /cade2/ Condiciones >,<,<=,>=,==,!= Podemos preguntar si un campo y un patrón $2 < $1 $3 == "Juan" $2~/patron/ Si el campo 2 concuerda con el patrón PATRONES ESPECIALES: BEGIN - Patrón inicial se hace procesa las ordenes antes de leer nada END - Patrón final se procesa una vez hayamos leído el final de fichero ACCIONES La principal: la función: print (sintaxis similar a C) Tiene numerosas funciones para manejar cadenas, así como matemáticas. VARIABLES PREDEFINIDAS FILENAME Fichero que se está procesando FNR - Nº de línea que se esta procesando dentro del fichero actual FS - Separador de campos, por omisión se supone que es espacio RS - Separador de registros, por omisión, el salto de línea. NF - Número de campos. OFS - Separador de campos de salida. ORS - Separador de registros de salida. $n - Valor del campo n en la línea / registro actual. $0 - Línea o registro actual completo

Programación shell-scripts 10 Ejemplo: Editamos el archivo: fichero.awk #!/usr/bin/awk BEGIN { system("clear"); printf " LISTADO DE ARCHIVOS \n"; printf "--------------------------------------------------------\n"; printf " Nombre Tamaño Usuario Permisos \n"; printf "--------------------------------------------------------\n"; nf = 0; nbytes = 0; } $1!= "total"{ nf = nf +1 nbytes = nbytes + $5 printf "%3d %-20s% 8d } %-10s %s \n",nf,$8,$5,$3,$1; END { printf "---------------------------------------------------------\n"; printf " Total:%4d ficheros, %10d bytes.\n ",nf,nbytes; } Ejecutaríamos el programa awk recibiendo como entrada la salida del comando ls: $ls l awk f fichero.awk