Linux posee un
interprete de comandos sumamente potente y versátil llamado Shell. La Shell es lo que nos permite
comunicarnos con lo que hay debajo y así
hablar con el Sistema Operativo. Gracias a este interprete de comandos podemos
crear Scripts sumamente potentes y versátiles con los cuales administrar de forma mucho más fácil y automatizada el sistema.
¿Qué es un Script?
Vamos a buscar la definición más simple y concreta para esto.
Es un archivo de texto ejecutable, que contiene una serie de comandos pre-definidos. Sirve para automatizar tareas, ya que se pueden configurar secuencias que ejecuten diversas tareas sin la intervención del usuario, más que para ejecutar el Script. El único requisito es que el archivo posea privilegios de ejecución. Todos los comandos escritos en el archivo serán ejecutados en el mismo orden en el cual fueron plasmados.
En este lenguaje se utiliza la
# para poder dejar comentarios. Comentar siempre es importante para al momento de tener que hacer modificaciones o mejoras, podamos ver de forma organizada a que corresponde cada cosa acortando el tiempo de búsqueda.
echo: Este comando nos permite imprimir en pantalla o archivo el texto seleccionado. Veamos un ejemplo de este comando.
Ver en pantalla una frase:
#!/bin/sh
echo "Hola Mundo"
Enviar un texto a un archivo:
echo nameserver 192.168.0.1 >> /etc/resolv.conf
Más adelante veremos lo que significan las
>>.
En los Scripts podemos integrar variables las cuales nos permiten dar un nombre a una porcion de memoria para utilizarlo más tarde.
La información puede ser almacenada en la RAM, La memoria RAM está dividida en pequeños sectores y cada sector tiene un número único llamado
Dirección de Memoria que es utilizado para guardar nuestra información. El lenguaje de programación, permite asignarle un nombre, (
alfanumérico), a esa dirección en memoria llamada
“VARIABLE”. La forma de aplicar una variables es VARIABLE=variable sin dejar espacios y luego llamarla con el signo
$.
Ejemplo:
#!/bin/sh
edad=23
echo "Tengo $edad años"
Dará como resultado:
Tengo 23 años.
Existen 2 tipos de variables, las locales y exportadas.
- Locales: Pueden ser accedidas solo por la Shell que ejecutó el Script.
- Exportada: Puede ser accedida por ambas Shell y cualquier proceso hijo que sea iniciado por esa Shell.
Los comandos
set, (lista todas las variables) y
env, (muestra solo las variables exportadas) sirven para listar las variables definidas.
Si queremos hacer que una Variable creada por nosotros sea global, debemos ejecutar el comando
export. Por ejemplo si tenemos la variable $nombre, podemos ejecutar
“export nombre”. Podemos verificar que se haya integrado correctamente ejecutando
“env | grep nombre”.
El SO posee variables pre-definidas a las cuales podremos acceder con solo lanzar el comando "echo variable"
Variables predefinidas:
DISPLAY: Utilizado por X para identificar donde correr una aplicación cliente
HISTFILE: Ruta al historial de bash de los Usuarios
HOME: Ruta al directorio personal del Usuario
LOGNAME: El nombre utilizado para iniciar sesión
PATH: Lista los directorios donde se encuentran los ejecutables utilizados por la Shell
PWD: Directorio de trabajo en el cual se encuentra parado el Usuario
SHELL: La Shell utilizada
TERM: La emulación de Terminal actual
BASH: Nombre del Shel l utilizado
BASH_VERSION: Versión del Shell utilizado
Variables especiales:
$!: Contiene el Número de Proceso(PID) del último Proceso
$$: Contiene el Número de Proceso (PID) de la Shell
$?: Contiene el valor que devolvió la última orden ejecutada. (0=Exitosa, 1=Falló)
Muchas veces necesitamos que la persona sentada en frente al PC coloque el valor de las variables, pero sería peligroso dejar que edite un archivo en el cual se encuentra el Script para que lo haga. Para satisfacer esta necesidad existe la opción
"read". El comando read frenará el script hasta que el usuario escriba algo y eso que escriba lo almacenará como una variable a la cual previamente le habremos asignado un nombre. Vamos a verlo en un ejemplo:
Ejemplo:
#!/bin/sh
echo "Cuantas máquinas hay en la red?"
read maquinas
En este caso maquinas viene a ser el nombre de la variable y al ponerlo de esa forma esperará a que sea completado el dato y asignará el mismo a "maquinas". Si ponemos 10 podremos llamar a dicha variable colocando
$maquinas y mostrará el número 10.
Con esto ya podremos manejar todas las variables necesarias para trabajar con el sistema de forma automatizada.