PDF de programación - Programación de comandos combinados (shell scripts)

Imágen de pdf Programación de comandos combinados (shell scripts)

Programación de comandos combinados (shell scripts)gráfica de visualizaciones

estrellaestrellaestrellaestrellaestrella(1)
Publicado el 9 de Abril del 2018
777 visualizaciones desde el 9 de Abril del 2018
237,9 KB
38 paginas
Creado hace 5a (16/10/2014)
Programación
de comandos
combinados (shell
scripts)


Remo Suppi Boldrito

PID_00215378

GNUFDL • PID_00215378

Programación de comandos combinados (shell scripts)

© 2014, FUOC. Se garantiza permiso para copiar, distribuir y modificar este documento según los términos de la GNU Free
Documentation License, Version 1.2 o cualquiera posterior publicada por la Free Software Foundation, sin secciones invariantes ni
textos de cubierta delantera o trasera. Se dispone de una copia de la licencia en el apartado "GNU Free Documentation License" de
este documento.

GNUFDL • PID_00215378

Índice

Programación de comandos combinados (shell scripts)


Introducción...............................................................................................

1.

Introducción: el shell........................................................................
1.1. Redirecciones y pipes ..................................................................
1.2. Aspectos generales .......................................................................


2. Elementos básicos de un shell script.............................................
¿Qué es un shell script? ...............................................................
2.1.
2.2. Variables y arrays..........................................................................
Estructuras condicionales ............................................................
2.3.
Los bucles ....................................................................................
2.4.
2.5.
Funciones, select, case, argumentos y otras cuestiones ..............
Filtros: Grep .................................................................................
2.6.
Filtros: Awk .................................................................................
2.7.
2.8.
Ejemplos complementarios .........................................................


Actividades..................................................................................................

Bibliografía.................................................................................................

5

7
9
9

11
11
12
14
16
18
26
27
30

37

38

GNUFDL • PID_00215378

Introducción

5

Programación de comandos combinados (shell scripts)

En este módulo veremos la importancia fundamental que tiene el intérprete
de órdenes o comandos (shell) y sobre todo analizaremos con cierto detalle las
posibilidades de estos para ejecutar ficheros de órdenes secuenciales y escri-
tos en texto plano (ASCII) que serán interpretados por el shell. Estos ficheros,
llamados shell scripts, son la herramienta fundamental de cualquier usuario
avanzado e imprescindible para un administrador de sistemas *nix.

Un conocimiento práctico de shell scripting será necesario ya que el propio
GNU/Linux se basa en este tipo de recurso para iniciar el sistema (por ejemplo,
ejecutando los archivos de /etc/rcS.d), por lo cual los administradores deben
tener los conocimientos necesarios para trabajar con ellos, entender el funcio-
namiento del sistema, modificarlos y adecuarlos a las necesidades específicas
del entorno en el cual trabajen.

Muchos autores consideran que hacer scripting es un arte, pero en mi opinión
no es difícil de aprender, ya que se pueden aplicar técnicas de trabajar por eta-
pas ("divide y vencerás"), que se ejecutará en forma secuencial y el conjunto
de operadores/opciones no es tan extenso como para que genere dudas sobre
qué recurso utilizar. Sí que la sintaxis será dependiente del shell utilizado, pero
al ser un lenguaje interpretado con encadenamiento de secuencias de coman-
dos, será muy fácil de depurar y poner en funcionamiento.

Hoy en día el scripting ha alcanzado muchos ámbitos con la potencialidad pre-
sentada por algunos lenguajes como PHP para desarrollar código del lado del
servidor (originalmente diseñado para el desarrollo web de contenido dinámi-
co); Perl, que es un lenguaje de programación (1987) que toma características
de C, de Bourne shell, AWK, sed, Lisp entre otros; Phyton (1991), cuya filoso-
fía hace hincapié en una sintaxis que favorezca un código legible siendo un
lenguaje de programación (interpretado) que soporta orientación a objetos,
programación imperativa y, en menor medida, programación funcional y con
tipos dinámicos, o como Ruby (1993-5), que es un lenguaje de programación
(también interpretado), reflexivo y orientado a objetos, que combina una sin-
taxis inspirada en Python y Perl con características de programación orientada
a objetos similares a Smalltalk.

También un shell script es un método "quick-and-dirty" (que podría traducir co-
mo 'rápido y en borrador') de prototipado de una aplicación compleja para
conseguir incluso un subconjunto limitado de la funcionalidad útil en una
primera etapa del desarrollo de un proyecto. De esta manera, la estructura de

GNUFDL • PID_00215378

6

Programación de comandos combinados (shell scripts)

la aplicación y las grandes líneas puede ser probada y determinar cuáles serán
las principales dificultades antes de proceder al desarrollo de código en C, C+
+, Java, u otro lenguaje estructurado y/o interpretado más complejo.

De acuerdo con M. Cooper, hay una serie de situaciones en las cuales él cate-
góricamente aconseja "no utilizar shell scripts" si bien en mi opinión diría que
se deberá ser prudente y analizar en profundidad el código desarrollado sobre
todo desde el punto de vista de seguridad para evitar que se puedan realizar
acciones más allá de las cuales fueron diseñadas (por ejemplo, en scripting,
por el lado del servidor en aplicaciones web, es una de las principales causas
de intrusión o ejecución no autorizadas). Entre las causas podemos enume-
rar: uso intensivo de recursos, operaciones matemáticas de alto rendimiento,
aplicaciones complejas donde se necesite estructuración (por ejemplo, listas,
árboles) y tipos de variables, situaciones en las que la seguridad sea un factor
determinante, acceso a archivos extensos, matrices multidimensionales, tra-
bajar con gráficos, acceso directo al hardware/comunicaciones. No obstante,
por ejemplo, con la utilización de Perl, Phyton o Ruby, muchas de estas re-
comendaciones dejan de tener sentido y en algunos ámbitos científicos (por
ejrmplo, en genética, bioinformática, química, etc.) el scripting es la forma ha-
bitual de trabajo.

Este módulo está orientado a recoger las principales características de Bash
(Bourne-Again Shell) que es el shell script estándar en GNU/Linux, pero muchos
de los principios explicados se pueden aplicar a Korn Shell o C Shell.

GNUFDL • PID_00215378

7

Programación de comandos combinados (shell scripts)

1. Introducción: el shell

El shell es una pieza de software que proporciona una interfaz para los
usuarios en un sistema operativo y que provee acceso a los servicios del
núcleo. Su nombre proviene de la envoltura externa de algunos molus-
cos, ya que es la "parte externa que protege al núcleo".

Los shells se dividen en dos categorías: línea de comandos y gráficos, ya sea
si la interacción se realiza mediante una línea de comandos (CLI, command
line interface) o en forma gráfica a través de una GUI (graphical user interface).
En cualquier categoría el objetivo principal del shell es invocar o "lanzar" otro
programa, sin embargo, suelen tener capacidades adicionales, tales como ver
el contenido de los directorios, interpretar órdenes condicionales, trabajar con
variables internas, gestionar interrupciones, redirigir entrada/salida, etc.

Si bien un shell gráfico es agradable para trabajar y permite a usuarios sin mu-
chos conocimientos desempeñarse con cierta facilidad, los usuarios avanza-
dos prefieren los de modo texto ya que permiten una forma más rápida y efi-
ciente de trabajar. Todo es relativo, ya que en un servidor es probable que un
usuario administrador no utilice ni siquiera interfaz gráfica, mientras que para
un usuario de edición de vídeo nunca trabajará en modo texto. El principal
atractivo de los sistema *nix es que también en modo gráfico se puede abrir
un terminal y trabajar en modo texto como si estuviera en un shell texto, o
cambiar interactivamente del modo gráfico y trabajar en modo texto (hasta
con 6 terminales diferentes con Crtl+Alt+F1-6 generalmente) y luego regresar
al modo gráfico con una simple combinación de teclas. En este apartado nos
dedicaremos a shell en modo texto y las características avanzadas en la progra-
mación de shell scripts.

Entre los shells más populares (o históricos) en los sistemas *nix tenemos:

Bourne shell (sh).

Z shell (zsh).

Bourne-Again shell (bash).


• Almquist shell (ash) o su versión en Debian (dash).

• Korn shell (ksh).

• C shell (csh) o la versión Tenex C shell (tcsh).

El Bourne shell ha sido el estándar de facto en los sistemas *nix, ya que fue dis-
tribuido por Unix Version 7 en 1977 y Bourne-Again Shell (Bash) es una versión
mejorada del primero escrita por el proyecto GNU bajo licencia GPL, la cual se
ha transformado en el estándar de los sistemas GNU/Linux. Como ya hemos

GNUFDL • PID_00215378

8

Programación de comandos combinados (shell scripts)

comentado, Bash será el intérprete que analizaremos, ya que, además de ser
el estándar, es muy potente, posee características avanzadas, recoge las inno-
vaciones planteadas en otros shells y permite ejecutar sin modificaciones (ge-
neralmente) scripts realizados para cualquier shell con sintaxis Bourne compa-
tible. La orden cat /etc/shells nos proporciona los shells conocidos por
el sistema Linux, independientemente de si están instalados o no. El shell por
defecto para un usuario se obtendrá del último campo de la línea correspon-
diente al usuario del fichero /etc/passwd y cambiar de shell simplemente signi-
fica ejecutar el nombre del shell sobre un terminal activo, por ejemplo:

RS@DebSyS:~$ echo $SHELL
/bin/bash
RS@DebSyS:~$ tcsh
DebSyS:~>

Una parte importante es lo que se refiere a los modos de ejecución de un
shell. Se
  • Links de descarga
http://lwp-l.com/pdf10279

Comentarios de: Programación de comandos combinados (shell scripts) (1)

Felipe
12 de Abril del 2018
estrellaestrellaestrellaestrellaestrella
Gracias por el aporte!
Responder

Comentar...

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