PDF de programación - Linux guiones shell (shell scripts)

Imágen de pdf Linux guiones shell (shell scripts)

Linux guiones shell (shell scripts)gráfica de visualizaciones

Publicado el 11 de Febrero del 2019
71 visualizaciones desde el 11 de Febrero del 2019
183,8 KB
44 paginas
Creado hace 15a (27/01/2004)
LINUX: Guiones Shell (Shell scripts)

˝ndice

1. Concepto de SHELL en Linux

2. Funcionamiento del Shell

3. Variables y parÆmetros
.
.

.
3.1. Variables .
.
3.2. ParÆmetros .
.
3.3. Reglas de evaluacin de variables .
.
3.4. Arrays

.
.

.
.

.
.

.
.

.
.

.
.

.
.

.
.

.
.

.
.

.
.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.
.
.
.

4. Caracteres especiales y de entrecomillado
.

4.1. Sustitucin de rdenes .

.

.

.

.

.

.

.

5. Estructuras de control
.

IF y CASE .

.
.
5.1.
.
5.2. WHILE y UNTIL .
.
.
5.3. FOR .
.
5.4. SELECT .
.
.
5.5. BREAK y CONTINUE .

.
.
.
.

.
.
.
.

.
.

.
.

.
.

.
.

.
.

.

.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.

.

.
.
.
.
.

.
.
.
.

.

.
.
.
.
.

.
.
.
.

.

.
.
.
.
.

.
.
.
.

.

.
.
.
.
.

.
.
.
.

.

.
.
.
.
.

.
.
.
.

.

.
.
.
.
.

.
.
.
.

.

.
.
.
.
.

.
.
.
.

.

.
.
.
.
.

.
.
.
.

.

.
.
.
.
.

.
.
.
.

.

.
.
.
.
.

6. Generacin de nombres de cheros

7. Entrada/salida estÆndar y redireccin

8. Tuberas o Filtros

9. rdenes internas de Bash

10. Evaluacin aritmØtica

11. La orden test

11.1. Ejemplos de uso .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

12. rdenes simples, listas de rdenes y rdenes compuestas
.
.
.

.
.
12.1. rdenes simples .
12.2. Listas de rdenes .
.
12.3. rdenes compuestas .

.
.
.

.
.
.

.
.
.

.
.
.

.
.
.

.
.
.

.
.
.

.
.
.

.
.
.

.
.
.

.
.
.

.
.
.

.
.
.

.
.
.

.
.
.

.
.
.

.
.
.

.
.

13. Funciones

13.1. Ejemplo de funciones .
.
13.2. Ejemplo de funciones con parÆmetros .

.

.

.

.

.

.

.

.

.

.
.

.
.

.
.

.
.

.
.

.
.

.
.

.
.

14. Depuracin

2

.
.
.
.

.

.
.
.
.
.

.

.
.
.

.
.

.
.
.
.

.

.
.
.
.
.

.

.
.
.

.
.

.
.
.
.

.

.
.
.
.
.

.

.
.
.

.
.

.
.
.
.

.

.
.
.
.
.

.

.
.
.

.
.

.
.
.
.

.

.
.
.
.
.

.

.
.
.

.
.

.
.
.
.

.

.
.
.
.
.

.

.
.
.

.
.

.
.
.
.

.

.
.
.
.
.

.

.
.
.

.
.

.
.
.
.

.

.
.
.
.
.

.

.
.
.

.
.

.
.
.
.

.

.
.
.
.
.

.

.
.
.

.
.

.
.
.
.

.

.
.
.
.
.

.

.
.
.

.
.

.
.
.
.

.

.
.
.
.
.

.

.
.
.

.
.

.
.
.
.

.

.
.
.
.
.

.

.
.
.

.
.

.
.
.
.

.

.
.
.
.
.

.

.
.
.

.
.

.
.
.
.

.

.
.
.
.
.

.

.
.
.

.
.

.
.
.
.

.

.
.
.
.
.

.

.
.
.

.
.

.
.
.
.

.

.
.
.
.
.

.

.
.
.

.
.

.
.
.
.

.

.
.
.
.
.

.

.
.
.

.
.

.
.
.
.

.

.
.
.
.
.

.

.
.
.

.
.

4

6

6
6
8
9
11

12
14

14
14
15
16
17
18

19

19

20

22

24

26
28

29
29
29
30

31
31
31

32

15. Ejemplos de guiones shell

16. Ejercicios propuestos

17. Bibliografa

32

38

44

3

1. Concepto de SHELL en Linux

Un shell es un intØrprete de rdenes, y un intØrprete de rdenes es el programa que recibe lo
que se escribe en la terminal y lo convierte en instrucciones para el sistema operativo. BÆsicamente
permite a los usuarios comunicarse con el sistema operativo y darle rdenes. En otras palabras, el
objetivo de cualquier intØrprete de rdenes es ejecutar los programas que el usuario teclea en el
prompt del mismo.

El prompt es una indicacin que muestra el intØrprete para anunciar que espera una orden del
usuario. Cuando el usuario escribe una orden, el intØrprete la ejecuta. En dicha orden, puede haber
programas internos o externos. Los programas internos son aquellos que vienen incorporados en
el propio intØrprete, como, por ejemplo, echo, cd, o kill. Mientras que los externos son programas
separados, un ejemplo son todos los programas que residen en los directorios /bin, /usr/bin, etc.,
como ls, cat, o cp.

En el mundo UNIX/Linux existen tres grandes familias de shells: sh, csh y ksh. Se diferencian
entre s, bÆsicamente, en la sintaxis de sus rdenes y en la interaccin con el usuario. En la siguiente
tabla se muestran las tres grandes familias de shells, con el nombre correspondiente y posibles
clones de cada uno:

Tipo de Shell
AT&T Bourne shell
Berkeley C shell
AT&T Korn shell
Otros interpretes

Shell estÆndar Clones libres
sh
csh
ksh


ash, bash, bash2
tcsh
pdksh, zsh
esh, gush, nwsh

Por defecto, cada usuario tiene asignado un shell, establecido en el momento de creacin de su
cuenta, y que se guarda en el chero /etc/passwd. En los laboratorios de prÆcticas para consultar ese
chero se puede ejecutar la orden ypcat passwd. El shell asignado a un usuario se puede cambiar
de dos maneras: editando manualmente dicho chero (que tiene que ser realizado por el admi-
nistrador del sistema), o bien con el programa chsh (que lo puede ejecutar el propio usuario). Los
shells estÆn en el directorio /bin. Por ejemplo, para hacer que el shell por defecto sea /bin/bash se
ejecutara:

chsh -s /bin/bash

Una de las principales caractersticas del shell es que puede programarse usando cheros de
texto que contienen rdenes que interpretarÆ en la ejecucin de los mismos. Estos cheros de texto
se llaman scripts, shell scripts o guiones shells. Una vez creados, estos guiones shells pueden ser
ejecutados tantas veces como se desee, realizando las operaciones que se programaron. El shell
ofrece construcciones y facilidades para hacer mÆs sencilla su programacin. La programacin
shell en UNIX/Linux es, en cierto sentido, equivalente a crear archivos .BAT en MS-DOS, con la
diferencia de que en UNIX/Linux es mucho mÆs potente.

Una denicin de guiones shells podra ser la dada a continuacin:

es un chero de texto ejecutable que contiene rdenes ejecutables por el shell.

4

Un guin shell puede incluir comentarios, para ello se utiliza el carÆcter # al inicio del texto

que formarÆ el comentario.

En un guin shell se puede indicar el tipo de shell con el que se debe de interpretar o ejecutar,

indicando en la primera lnea del mismo lo siguiente:

#!/bin/bash

En este caso el carÆcter # del principio de la lnea no es un comentario.
La programacin de shell es una de las herramientas mÆs apreciadas por todos los administra-
dores y muchos usuarios de UNIX/Linux ya que permite automatizar tareas complejas, rdenes
repetitivas y ejecutarlas con una sola llamada al script, o hacerlo automÆticamente a horas escogi-
das sin intervencin de personas. A continuacin se muestran una serie de ejemplos de distintas
tareas que se suelen automatizar con scripts:

Tareas administrativas: algunas partes de los sistemas UNIX son guiones shell. Para poder
entenderlos y modicarlos es necesario tener alguna nocin sobre la programacin de scripts.

Tareas tediosas que slo se van a ejecutar una o dos veces, no importa el rendimiento del
programa resultante pero s conviene que su programacin sea rÆpida.

Hacer que varios programas funcionen como un conjunto de forma sencilla.

Pueden ser un buen mØtodo para desarrollar prototipos de aplicaciones mÆs complejas que
posteriormente se implementarÆn en lenguajes mÆs potentes.

Conocer a fondo el shell aumenta tremendamente la rapidez y productividad a la hora de

utilizarlo, incluso sin hacer uso de guiones shell.

Los guiones shells pueden utilizar un sin nœmero de herramientas como:

Comandos del sistema UNIX/Linux, por ejemplo ls, cut, etc.

Funciones internas del shell, por ejemplo echo, let, etc.

Lenguaje de programacin del shell, por ejemplo if /then/else/, etc.

Programas y/o lenguajes de procesamiento en lnea, por ejemplo awk, sed, Perl.

Programas propios del usuario escritos en cualquier lenguaje.

Si un guin shell se queda pequeæo para lo que queremos hacer, existen otros lenguajes inter-

pretados mucho mÆs potentes como Perl, TCL o Python.

El intØrprete de rdenes seleccionado para realizar estas prÆcticas es el Bourne-Again Shell,
cuyo ejecutable es /bin/bash. El resto del contenido de este documento estÆ centrado en este intØr-
prete de rdenes.

5

2. Funcionamiento del Shell

Supongamos que tenemos el siguiente guin shell:

#!/bin/bash
clear
date

al ejecutarse el proceso que se sigue es el siguiente:

1. El shell /bin/bash hace un fork.

2. El proceso padre espera mientras no termina el nuevo hijo.

3. El proceso hijo hace un fork y un exec para ejecutar la orden clear, a continuacin ejecuta un

wait para esperar a que termine la ejecucin de clear.

4. Una vez que ha terminado la orden clear, el proceso hijo repite los mismos pasos pero esta

vez ejecutando la orden date.

5. Si quedasen rdenes por ejecutar se seguira el mismo procedimiento.

6. Cuando naliza el proceso hijo, hace que el padre se despierte.

3. Variables y parÆmetros

3.1. Variables

Cada shell tiene unas variables ligadas a Øl, a las que el usuario puede aæadir tantas como

desee. Para dar un valor a una variable se usa:

variable=valor

donde variable es el nombre de la misma. Es interesante destacar que no puede haber un es-
pacio entre el nombre de la variable, el signo = y el valor. Por otra parte, si se desea que el valor
contenga espacios, es necesario utilizar comillas.

Para obtener el valor de una variable hay que ante ponerle a su nombre el carÆcter $. Por

ejemplo, para visualizar el valor de una variable:

echo $variable

Un ejemplo del uso de las variables sera:

$ mils="ls -l" # Se crea una nueva variable
$ mils

# No hace nada, buscará el ejecutable
# mils, que no existe
# Ejecutará la orden "ls -l"
# Muestra el contenido de la variable
# mils, i.e., "ls -l"

$ $mils
$ echo $mils

6

Las variables se dividen en dos tipos:

Variables locales: son aquØllas que no son heredadas por los procesos hijos del shell actual
(cuando se realiza un fork).

Variables de entorno: Estas variables son heredadas por los procesos hijos c
  • Links de descarga
http://lwp-l.com/pdf15157  

Comentarios de: Linux guiones shell (shell scripts) (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios
Es necesario revisar y aceptar las políticas de privacidad

Revisar política de publicidad