9.5.2.- Uso de comandos

En los scripts podemos utilizar comandos externos o internos, la mayoría de ellos serán comandos externos, programas que se encuentran en /bin, /usr/bin y otras direcciones de la ruta. Podemos ejecutar estos programas, así como comandos internos, incluyendo sus nombres en el script. También podemos especificar parámetros para ellos. Por ejemplo, si queremos un script que inicie dos ventanas xterm y el programa kmail, escribiremos lo siguiente:

script_ejemplo_2

script_ejemplo_3

script_ejemplo_4

Una excepción es que el script liste las rutas completas para cada programa, esto no suele ser estrictamente necesario, pero al indicar la ruta completa nos aseguraremos que el script localizará los programas aunque cambie la variable de entorno PATH. Por otra parte, si se mueven los ficheros del programa los scripts que utilizan rutas completas, dejarán de funcionar.

Cada línea del listado anterior termina con un &, que le indica a la consola que pase a la siguiente línea sin esperar a que finalice la anterior. Si omitimos los &, se abrirá la primera xterm, pero la segunda no se abrirá hasta que cerremos la primera y kmail no se iniciará hasta que finalice la segunda xterm.

Un script puede ahorrar tiempo al iniciar varios programas simultáneamente y en algunas otras situaciones. Normalmente se utilizan para ejecutar una serie de programas que manipulan la información. Algunos scripts no incluyen los & al final de comandos debido a que algún comando debe ejecutarse después de otro o a que se base en la salida del anterior. Entre los comandos más habituales utilizados en los scripts se encuentran los siguientes:

  • Comandos de manipulación normal de ficheros: ls, mv, cp y rm se utilizan con frecuencia en scripts para intentar automatizar tareas repetitivas de mantenimiento de ficheros.
  • grep: localiza ficheros que contienen cadenas específicas.
  • find: busca patrones en base a los nombres de los ficheros, su propietario y características similares.
  • cut: extrae texto de los campos de un fichero. Se utiliza para extraer información variable de un fichero cuyo contenido esté normalizado. Por ejemplo, si queremos extraer los directorios home de los usuarios que aparecen en el fichero passwd, escribiremos: cut -f 6 -d “:” /etc/passwd. Este comando podría hacer lo mismo desde un script, con lo que podríamos guardar esta información en una variable o pasársela al siguiente comando.
  • sed: ofrece muchas de las posibilidades de un editor de texto, pero a través de comandos que se pueden escribir en un prompt o introducir en un script.
  • echo: se utiliza para proporcionar mensajes al usuario. Se le pueden pasar varias opciones o sólo una cadena que se mostrará por pantalla.
  • mail: se utiliza para enviar correos desde un script. El parámetro -s asunto permite especificar el asunto y suministrar una dirección de correo como último argumento. Si lo utilizamos desde la línea de comandos, podemos escribir un mensaje y terminarlo con la combinación de teclas, CTRL+d. Desde un script podríamos omitir el asunto, pasarle un fichero externo como mensaje utilizando la redirección o utilizar un here document para pasar un texto como entrada de mail.

tux_maestro_derMuchos de estos comandos son extremamente complejos, por lo que realizar una descripción completa de éstos queda fuera de su alcance de este capítulo. Puede encontrar más información sobre éstos en sus páginas man. Algunos de ellos se describen en otros puntos de este curso.

Aunque tengamos un conocimiento completo de cómo utilizar algunos comandos clave externos, ejecutar simplemente los comandos en un prompt, tiene una utilidad limitada. Muchas de las tareas administrativas necesitan que se modifique lo que se escribe en un comando o, incluso, qué comandos se introducirán dependiendo de la información de otros comandos. Por este motivo, los lenguajes de programación incluyen funcionalidades adicionales que ayudan a aumentar la utilidad de los scripts.