La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Programación Aplicada

Presentaciones similares


Presentación del tema: "Programación Aplicada"— Transcripción de la presentación:

1 Programación Aplicada
Clase 6: Introducción al BASH Nombre unidad de aprendizaje: Introducción a los SCRIPTS

2 Objetivos Objetivos de la clase
Identifica sistemas de archivos y comandos del sistema operativo para inclusión en programas realizados en el ambiente de programación del intérprete de comandos Bash. Identifica las tareas de administración que serán programadas en Bash.

3 Desarrollo ¿Qué es el BASH?
El BASH es un interprete de comandos o SHELL desarrollado para el proyecto “GNU operating system”. El BASH es el SHELL por defecto en la mayoría de las distribuciones de GNU/LINUX disponibles en la actualidad. Desarrollar

4 Desarrollo ¿Qué es el BASH?
El nombre BASH es un acrónimo de bourne-again shell (otro shell bourne) — haciendo un juego de palabras (born-again significa renacimiento) sobre el BOURNE SHELL (sh), que fue uno de los primeros intérpretes de comandos importantes de UNIX. El BASH Potencia la interactividad, soportando edición en línea de comandos, capacidad de completar automáticamente un comando, etc. También soporta prompts configurables. Desarrollar

5 Desarrollo ¿Qué es el BASH?
El BASH de GNU/LINUX es tanto un intérprete de comandos o SHELL, como un lenguaje de programación de alto nivel. Como intérprete de comandos, procesa las órdenes introducidas en respuesta a su indicación. Utilizado como lenguaje de programación, el BASH procesa grupos de órdenes almacenados en archivos llamados SCRIPTS. Desarrollar

6 Desarrollo ¿Qué es el BASH?
El BASH es ampliamente compatible con el BOURNE SHELL sh e incorpora algunas características del KORN SHELL ksh y el C SHELL csh. El BASH está llamado a ser la implementación de la “IEEE POSIX Shell and Tools” proyecto incluido en el estándar de la especificación IEEE POSIX (IEEE Standard ). Desarrollar

7 Desarrollo ¿Qué es el BASH?
El BASH de GNU/LINUX es tanto un intérprete de comandos o SHELL, como un lenguaje de programación de alto nivel. Como intérprete de comandos, procesa las órdenes introducidas en respuesta a su indicación. Utilizado como lenguaje de programación, el BASH procesa grupos de órdenes almacenados en archivos llamados SCRIPTS. Desarrollar

8 Desarrollo ¿Qué es un SHELL?
El SHELL es el intérprete de comandos de un sistema UNIX/LINUX. El SHELL es una interfaz que nos proporciona utilidades de trabajo y permite establecer una relación con el kernel (o núcleo) del sistema operativo. Es decir, el SHELL reconoce una serie de órdenes o comandos, los interpreta y lanza los procesos necesarios para su realización. Desarrollar

9 Desarrollo ¿Qué es un SHELL?
En la siguiente figura se muestra la típica visión del SHELL en el sistema: Desarrollar

10 Desarrollo ¿Qué es un SHELL?
En definitiva, el SHELL es un programa que nos permite interactuar con el sistema operativo. La “línea de comandos” es la entrada del usuario para el SHELL. El SHELL examina la línea de comandos, verifica que lo que se ha escrito es correcto, determina si se ha digitado el nombre de un programa (ya sea binario o compilado), y de ser así envía dicho programa al núcleo (kernel) para su ejecución. Desarrollar

11 Desarrollo Los SHELLS de LINUX
Además de BASH, en GNU/LINUX hay varios tipos de SHELLS, cada una con sus características propias, entre los más conocidos podemos nombrar: KORN SHELL (ksh) – Desarrollado por David Korn de los Laboratorios AT&T Bell en el comienzo de la década del 80. C SHELL (csh) – Desarrollado por Bill Joy en la Universidad de Berkeley, California. Desarrollar

12 Desarrollo Historia del BASH
Hacia 1978 el intérprete BOURNE SHELL era el intérprete distribuido con el UNIX Versión 7. Stephen Bourne, por entonces investigador de los Laboratorios Bell, escribió el intérprete BOURNE SHELL original . El BASH "Nació" oficialmente el domingo 10 de enero de Brian Fox fue quien programó las primeras versiones de BASH para LINUX y continuó actualizándolo hasta 1993. Desarrollar

13 Desarrollo Historia del BASH
A principios de 1989, Chet Ramey empezó a ayudar a Brian y fue el responsable de muchos arreglos en el código y nuevas características. Chet Ramey es ahora el mantenedor oficial del SHELL BASH siendo la última versión la 3.2. Desarrollar

14 Características de BASH
Desarrollo Características de BASH BASH incluye, entre otras, las siguientes características: Edición y completación de comandos. Histórico de comandos. Control de procesos. Funciones SHELL y alias. Manipulación de arreglos. Operaciones aritméticas. Desarrollar

15 Características de BASH
Desarrollo Características de BASH Capacidades de E/S expandidas. Facilidades de ayuda. Prompts personalizados. Seguridad. Modo POSIX. Timing de comandos, etc. Desarrollar

16 Archivos de arranque del BASH
Desarrollo Archivos de arranque del BASH Cuando el BASH es invocado de manera interactiva, primero lee y ejecuta comandos desde el archivo /etc/profile, si es que existe. Una vez leído este archivo, BASH ejecuta comandos del primer archivo que exista y que BASH pueda leer de entre los siguientes archivos: ~/.bash_profile, ~/.bash_login, y ~/.profile, en ese orden. Desarrollar

17 Archivos de arranque del BASH
Desarrollo Archivos de arranque del BASH Cuando salimos de una “sesión de login”, BASH lee y ejecuta comandos desde el archivo ~/.bash_logout, si es que este archivo existe. Desarrollar

18 Ayudas interactivas de BASH
Desarrollo Ayudas interactivas de BASH Para recibir información del usuario, BASH y otros programas emplean las librerías readline e history. readline brinda facilidades para escribir comandos con un teclado e history almacena los últimos comandos que el usuario haya dado para facilitar su reutilización. Algunas de las posibilidades que estas librerías ofrecen son: Desarrollar

19 Ayudas interactivas de BASH
Desarrollo Ayudas interactivas de BASH Flechas o Control-p, Control-n - Para "navegar“ sobre la historia de comandos. Completación con <TAB> - Se puede emplear la tecla <TAB> para completar nombres de programas, de máquinas o de usuarios. Si hay varias posibles completaciones un segundo <TAB> presentará la lista de posibilidades. Buscar comandos en la historia de comandos. Desarrollar

20 Gestión del histórico de comandos
Desarrollo Gestión del histórico de comandos El BASH (y otros shells también) mantiene una historia de comandos. El histórico de comandos se guarda en el archivo .bash_history, donde están guardados todos los comandos escritos. Al editar el archivo .bash_history se presenta una lista numerada de comandos, incluidos los introducidos en entradas anteriores al sistema. Desarrollar

21 Gestión del histórico de comandos
Desarrollo Gestión del histórico de comandos El histórico de comandos se accede a través del comando history, y tiene varias opciones que se pueden cambiar para tener un mejor control del mismo: Control del tamaño del archivo de histórico: Se cuenta con dos variables de entorno para ello, HISTSIZE y HISTFILESIZE, que indican el tamaño del archivo. Desarrollar

22 Gestión del histórico de comandos
Desarrollo Gestión del histórico de comandos Por ejemplo: Con esto hacemos que el tamaño máximo del archivo de histórico sea de 1000 comandos o líneas. HISTSIZE=1000 HISTFILESIZE=1000 Desarrollar

23 Gestión del histórico de comandos
Desarrollo Gestión del histórico de comandos Si ponemos el tamaño de la variable HISTSIZE a cero hacemos que no se guarde nada en el histórico: Control de duplicados en el histórico: En el histórico se van guardando TODOS los comandos que se van introduciendo, aunque repitamos 20 veces el mismo comando, este se guardará 20 veces en el histórico. export HISTSIZE=0 Desarrollar

24 Gestión del histórico de comandos
Desarrollo Gestión del histórico de comandos Es posible utilizar la variable HISTCONTROL para hacer dos cosas: eliminar los duplicados consecutivos con ignoredups y eliminar los duplicados sean o no consecutivos con erasedups. Desarrollar export HISTCONTROL=ignoredups o bien export HISTCONTROL=erasedups

25 Gestión del histórico de comandos
Desarrollo Gestión del histórico de comandos Donde guardar el histórico: por defecto el histórico se guarda en ~/.bash_history pero podemos indicar donde guardarlo con la variable HISTFILE. Formatear la salida del histórico: la variable de entorno HISTTIMEFORMAT nos permite formatear la salida de history, agregando especificaciones de fecha y hora, por ejemplo. HISTFILE=~/.agenda Desarrollar

26 Gestión del histórico de comandos
Desarrollo Gestión del histórico de comandos Recordar que todas estas variables debemos ponerlas en un archivo donde se activen al arranque, por ejemplo, podría ser el archivo ~/.bash_profile. $ export HISTTIMEFORMAT='- %F %T - ' $ history :56:49 - ls / :56:59 - cd ~ :57:01 – history Desarrollar

27 Desarrollo Scripts SHELL
Un SCRIPT o procedimiento SHELL es un archivo con órdenes o comandos BASH ejecutables. La potencia de los SHELL SCRIPTS reside en la combinación y utilización de los comandos del sistema sumada a las características incorporadas al SHELL que se está utilizando. Desarrollar

28 Desarrollo Scripts SHELL
Un archivo de SHELL SCRIPT es un grupo de comandos, funciones y variables, reconocidos por LINUX o bien ser parte del juego de instrucciones del SHELL que se este utilizando. Puede ser una línea de comandos que preferimos no escribir o un complejo programa que puede incluir ciclos, sentencias condicionales, operaciones matemáticas y estructuras de control, entre otros. Desarrollar

29 Desarrollo Scripts SHELL
Un archivo de SHELL SCRIPT es una forma de agrupar secuencias de comandos que corren sin tener que ser escritos en el prompt del sistema operativo en uso. Los archivos de arranque del BASH, como son ~/.bash_profile o ~/.bashrc, son ejemplos de SCRIPTS. Desarrollar

30 Desarrollo Scripts SHELL
Hay dos tipos de archivos de SHELL SCRIPTS: los basados en BASH y los derivados de C. Ambos tipos de SHELL SCRIPT se escriben en un archivo de texto al que se le otorgan permisos de ejecución. Una vez realizado este proceso se podrá escribir en la consola o terminal el nombre del archivo y éste se ejecutará como un comando. Desarrollar

31 Desarrollo SHELL SCRIPTS en BASH
En BASH los SHELL SCRIPTS deben comenzar con la siguiente línea: Luego de esta línea se escribirán los comandos que queremos que ejecute nuestro SCRIPT. #!/bin/bash #Resto del SCRIPT ….. Desarrollar

32 Desarrollo SHELL SCRIPTS en BASH
Los caracteres #! de la primera línea de un SCRIPT, indican al sistema que el primer argumento que sigue en la línea es el programa a utilizar para ejecutar este script. En este caso usamos el SHELL /bin/bash. Esto quiere decir que se invocará al SHELL BASH para interpretar estos comandos y ejecutarlos. Desarrollar

33 Desarrollo Variables en BASH
En un SHELL SCRIPT se pueden utilizar variables. Una variable puede contener un número, un carácter o una cadena de caracteres. En BASH una variable NO necesita ser declarada. En BASH, por defecto, todas las variables son tratadas como cadenas de caracteres. Desarrollar

34 Desarrollo Variables en BASH
En BASH La asignación de variables se realiza simplemente indicando su nombre, un signo =, y el valor, tal como en el siguiente ejemplo: Notar que NO hay espacios antes ni después del = en la asignación en BASH. En este ejemplo se crea la variable msg que contiene la cadena “Alumno DUOC”. msg=“Alumno DUOC” Desarrollar

35 Desarrollo Variables en BASH
En el ejemplo anterior son necesarias las " ", pues hay un carácter de espacio dentro de la cadena. El valor de una variable se toma anteponiendo un signo $ al nombre, así si queremos imprimir en pantalla el valor de la variable msg que creamos antes, se debe escribir: Desarrollar msg=“Alumno DUOC” echo $msg

36 Desarrollo Variables en BASH
Para borrar el contenido de una variable en BASH utilizaremos el comando unset: ~]$ msg=“Alumno DUOC” ~]$ echo $msg Alumno DUOC ~]$ unset msg ~]$ Desarrollar

37 Desarrollo Variables de Ambiente
Normalmente existen variables ya definidas por el SHELL BASH. Usualmente se cuenta con un conjunto de variables definidas cuando iniciamos una sesión de SHELL, algunas definidas por el sistema operativo, otras por las aplicaciones lanzadas y otras asignadas en nuestro archivo de configuración del SHELL. Desarrollar

38 Desarrollo Variables de Ambiente Variable Descripción PATH
Caminos de búsqueda de ejecutables PWD Ruta actual HOME Directorio “home” del usuario (directorio propio ) HOSTNAME Nombre de la máquina PS1 Formato del prompt Desarrollar

39 Desarrollo Variables de Ambiente
Existen dos áreas de memoria en los SHELLS para almacenar variables: el área local de datos y el entorno o ambiente. Podemos visualizar el contenido de ambas áreas a través del comando set. Desarrollar ~]$ set BASH=/bin/bash BASH_VERSINFO=([0]="2" [1]="05a" [2]="0" [3]="1“… BASH_VERSION='2.05a.0(1)-release' COLUMNS=95 ...

40 Desarrollo Variables de Ambiente
Por defecto, las variables utilizadas en un SHELL son locales, es decir, son conocidas solo por ese SHELL. Pero si se abre otro SHELL a partir del que estamos, estos nuevos “SUBSHELLS“ desconocen el valor de las variables que hemos asignado anteriormente. Desarrollar

41 Desarrollo Variables de Ambiente
En cambio, las VARIABLES DE AMBIENTE están disponibles para todos los “SUBSHELLS“, es decir, los valores de estas variables son conocidos también por los procesos hijos del SHELL. La lista de TODAS las VARIABLES DE AMBIENTE y sus valores se puede obtener por medio del comando env. Desarrollar

42 Desarrollo Variables de Ambiente
Para exportar una variable y lograr así que forme parte del ambiente de procesos creados por su sesión, se pueden emplear los comandos declare –x o export, seguidos del nombre de la variable que se desea exportar. Empleando sólo export o sólo declare -x puede ver los nombres y valores de variables exportables. Desarrollar

43 Variables predefinidas
Desarrollo Variables predefinidas Además de las variables de SHELL propias del entorno o ambiente, las definidas por el usuario y los parámetros posicionales en un SHELL existen otra serie de variables cuyo nombre está formado por un carácter especial, precedido por el habitual símbolo $. Estas variables reciben el nombre de VARIABLES PREDEFINIDAS. Desarrollar

44 Variables predefinidas
Desarrollo Variables predefinidas Variable Descripción $# Número de argumentos $* Todos los argumentos del SHELL $- Opciones suministradas al SHELL $? Valor de retorno del último comando ejecutado $$ Identificación del PID (número de proceso) Desarrollar

45 Entrada/Salida en BASH
Desarrollo Entrada/Salida en BASH En BASH la entrada/salida puede manejarse a través de los comandos echo y read. Con estas órdenes el SCRIPT podrá interactuar con el usuario, recibiendo datos desde el exterior por medio del teclado y mostrando en pantalla los resultados. Por ejemplo, consideremos el siguiente SCRIPT: Desarrollar

46 Entrada/Salida en BASH
Desarrollo Entrada/Salida en BASH Los argumentos “\c” y “\n” son interpretados por la opción -e de echo; “\n” corresponde a un salto de línea y “\c” suprime el carácter salto de línea. #!/bin/bash clear echo -e “Ingresar su nombre: \c” read nombre echo -e “hola $nombre\n” Desarrollar

47 Entrada/Salida en BASH
Desarrollo Entrada/Salida en BASH La orden read permite leer valores desde la entrada estándar y asignarlos a las variables definidas en el SHELL. La instrucción read también puede leer simultáneamente varias variables: Desarrollar read var1 var2 var3 …

48 Entrada/Salida en BASH
Desarrollo Entrada/Salida en BASH La cadena suministrada por el usuario empieza por el primer carácter tecleado hasta el salto de línea final. Esta línea se supone dividida en campos por el separador de campos definido por la VARIABLE DE AMBIENTE IFS (Internal Field Separator) que de forma predeterminada es una secuencia de espacios y tabuladores. Desarrollar

49 Entrada/Salida en BASH
Desarrollo Entrada/Salida en BASH El primer campo tecleado por el usuario será asignado a var1, el segundo a var2, etc. Si el número de campos es mayor que el de variables, entonces la última variable contiene los campos que sobran. Si por el contrario el número de campos es mayor que el de variables las variables que sobran tendrán un valor nulo. Desarrollar

50 Operaciones con variables en BASH
Desarrollo Operaciones con variables en BASH Ciertos SHELL, entre ellos el BASH, proporcionan algunas facilidades que pueden ser útiles para ahorrar código en la programación de SCRIPTS de SHELL, como son la eliminación o extracción de subcadenas desde una variable. La orden ${variable:inicio:longitud} extrae una subcadena de variable, partiendo de inicio y de tamaño indicado por longitud. Si se omite longitud toma hasta el fin de la cadena original. Desarrollar

51 Operaciones con variables en BASH
Desarrollo Operaciones con variables en BASH La orden ${variable#texto} corta texto de variable si variable comienza por texto. Si variable no comienza por texto variable se usa inalterada. ~]$ A=abcdef ~]$ echo ${A:3:2} de ~]$ echo ${A:1:4} bcde ~]$ echo ${A:2} cdef Desarrollar

52 Operaciones con variables en BASH
Desarrollo Operaciones con variables en BASH ~]$ A=abcdef ~]$ echo ${A#ab} cdef ~]$ echo ${A#$B} ~]$ B=abc def ~]$ echo ${A#cd} abcdef Desarrollar

53 Operaciones con variables en BASH
Desarrollo Operaciones con variables en BASH La orden ${variable%texto} corta texto de variable si variable termina por texto. Si variable no termina por texto variable se usa inalterada. ~]$ A=abcdef ~]$ echo ${A%def} abc ~]$ B=cdef ~]$ echo ${A%$B} ab Desarrollar

54 Operaciones con variables en BASH
Desarrollo Operaciones con variables en BASH Los comandos ${variable/texto1/texto2} y ${variable//texto1/texto2} sustituyen texto1 por texto2 en variable. En la primera forma, sólo se reemplaza la primera aparición. La segunda forma hace que se sustituyan todas las apariciones de texto1 por texto2. Desarrollar

55 Operaciones con variables en BASH
Desarrollo Operaciones con variables en BASH ~]$ A=abcdef ~]$ echo ${A/abc/x} xdef ~]$ echo ${A/de/x} abcxf Desarrollar

56 Resumen Resumen de la clase
El BASH es un interprete de comandos o SHELL desarrollado para el proyecto “GNU operating system” y es el SHELL por defecto en la mayoría de las distribuciones de GNU/LINUX disponibles en la actualidad. El BASH de GNU/LINUX es tanto un intérprete de comandos o SHELL, como un lenguaje de programación de alto nivel. El SHELL reconoce una serie de órdenes o comandos, los interpreta y lanza los procesos necesarios para su realización. Además de BASH, en GNU/LINUX hay varios tipos de SHELLS, entre estos: ksh o KORN SHELL y el csh o C SHELL. Un SCRIPT o procedimiento SHELL es un archivo con órdenes o comandos BASH ejecutables.

57 Resumen Resumen de la clase
En un SHELL SCRIPT se pueden utilizar variables, estas NO necesitan ser declaradas. En BASH la E/S puede manejarse a través de los comandos echo y read: echo permite desplegar o imprimir en pantalla, y read, leer desde teclado.


Descargar ppt "Programación Aplicada"

Presentaciones similares


Anuncios Google