Programación Shell en Linux
Enviado por 123478 • 18 de Abril de 2013 • 3.514 Palabras (15 Páginas) • 441 Visitas
Programación Shell en Linux
El turno ahora es para los intérpretes de comandos de Linux y su programación, conocida
como programación shell. Aunque el intérprete de comandos es independiente del
lenguaje de programación utilizado, Linux permite crear programas utilizando
características propias de cada un de los shell existentes.
¿como, no hay solo un intérprete? Umm, nop; hay bastantes shells para Linux(o
intérpretes de comandos o consolas o como lo llames [de ahora en adelante shell]). No
como en windows que tan solo tiene el interprete de DOS (o cmd o command).
Como habrás podido deducir la programación en shell es “interpretada”, no compilada,
lo que reduce el desempeño del sistema; pero la ventaja es la facilidad de creación y
mantención.
Los temas a ver serán los siguientes:
● Qué es un shell y Qué shells están disponibles
● Principios de los shells (redirección)
● Variables de entorno
● Procesamiento en segundo plano
● Completación y sustitución de comandos (sustitución y creación del alias)
● Secuencias de comandos de los shell
Qué es shell
Unos dicen que es el sistema operativo, otros dicen que es una pantalla negra sin sentido
y anticuada, otros dicen que es la causa de que Linux no sea famosa entre gente
inexperta. ¿quien tiene la razón? Hagan sus apuestas!!! No, ahora en serio.
NO es el sistema operativo (el sistema operativo es el software que dirige la
computadora, habla con el hardware, carga y ejecuta programas, etc.); cuando se ve el
indicador de la computadora y se escriben comandos para ejecutar, con lo que estamos
tratando es con el shell.
Una característica interesante de Linux, es que los shells son completamente
independientes. Como usuario tenemos la libertad de elegir entre uno u otro shell.
También es posible interactuar con un shell, y escribir comandos para otro.
Shells disponibles en Linux
Piensa que el shell es un programa que está entre el usuario y el sistema operativo. Este
programa interpreta lo que el usuario le indica (en su lenguaje) para manipular el
sistema operativo.
por Cristian Castiblanco
casidiablo.blogspot.com
El shell original disponible en los sistemas UNIX era el shell Bourne (“sh”). Después dos
shells que se volvieron populares fueron shell Korn (“ksh”) y el el shell C (“csh”), cada
uno con sus características propias, ventajas y desventajas.
Los shells Bourne y el C fueron reescritos, como resultado ahora tenemos el “Bourne
again shell (Shell Bourne nuevamente)” o “bash”, y el shell T (“tcsh”). Los tres shells
están disponibles en casi todas las distros de Linux. Bash es probablemente el shell más
utilizado actualmente, y es el que viene por defecto en la mayoría de las distros.
Principios de los shell
Operación de los shell y conceptos básicos de sintaxis
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 (un programa binario o compilado), y de ser así envia dicho
programa al núcleo (kernel) para su ejecución.
Todos los comandos shell utilizan el siguiente formato:
comando opcion1 opcion2 opcion3 ... opcionN argumento1 argumento2 ... argumentoN
Esta línea se conoce como línea de comandos; que consiste en un comando y una o más
opciones (y/o argumentos). Por lo general el espacio en blanco se ignora. En Linux los
comandos son sensibles al uso de mayúsculas y minúsculas, cosa que no pasa en
Windows. El comando se termina pulsando la tecla Enter; aunque se puede continuar el
comando en una nueva línea usando backslash (\).
comandolargisisisisisisisimo
opcion1 opcion2 opcion3 ... opcionN \
argumento1 argumento2 ... argumentoN
Además es posible concatenar varios comandos, separándolos con punto y coma (;), por
ejemplo:
clear; pwd; ls
Redirección de E/S
Cuando se ejecuta un programa en Linux se abre automáticamente tres archivos (flujos)
de E/S para ellos. Estos son: la entrada estándar, la salida estándar y el error estándar.
Aunque parezca confuso todos los sistemas UNIX utilizan este sistema, basado en el
manejo de archivos. Por ejemplo, si deseas enviar datos a tu disco extraible debes
enviar los datos al archivo asociado con dicho pendrive, por lo general /dev/sda1.
por Cristian Castiblanco
casidiablo.blogspot.com
Por defecto la salida estándar está conectada a la pantalla, la entrada de estándar al
teclado, y el error estándar a la pantalla. Es posible reasignar estos destinos antes de
ejecutar el programa, en lo que se conoce como redirección de E/S.
Supongamos que queremos crear una lista de archivos del directorio /usr/include, pero
que dichos archivos contengan la palabra “#include”. Una forma sencilla de hacer esto
sería:
grep l
“#include” /usr/include/*.h > ListaArchivos
grep comprobará los archivos de la carpeta /usr/lib cuya extensión sea *.h y
determinará cuales de ellos contienen la palabra “#include”. El carácter > es el que
indica la redirección de salida; esto ocasiona que el shell redireccione la salida estándar
a el archivo ListaArchivos. Los nombres que están en el archivo se verán así:
/usr/include/GUI.h
/usr/include/Float.h
/usr/include/Redirect.h
/usr/include/nvu.h
/usr/include/bluefish.h
Para reemplazar, por ejemplo, la cadena /usr/include al principio de cada archivo
puedes utilizar el comando sed:
sed 's#^/usr/include/##' < ListaArchivos > ListaArchivoss
El comando sed opera sobre los datos de entrada estándar, así que en este caso
utilizamos el carácter < para redireccionar la entrada. En lugar de leer del teclado, esta
vez leerá de un archivo. Después, la salida del comando sed se redirige hacia el archivo
ListaArchivoss.
Pero, ¿cómo se redirige el error estándar? Para redirigir el error estándar se utiliza >&,
por ejemplo:
sed 's#^/usr/include/##' < ListaArchivos >& ErrorSed > SalidaSed
O se puede redirigir tanto el error
...