Debe introducir al menos 3 caracteres en el buscador.
Inicio / Wikis / Cursos gratis / Manual Aprendiendo a aprender Linux - Scripts basicos para bash (II)

Manual Aprendiendo a aprender Linux - Scripts basicos para bash (II)

 ***** (11 opiniones)
GNU Free Documentation License Curso gratis de Vladimir Támara, Jaime Irving Dávila, Pablo Chamorro e Igor Támara - 14 de Febrero de 2006
Temas Relacionados: Linux
21. Scripts basicos para bash (II)


En un script puede emplear cualquier programa o comando, junto con redireccionamiento, procesos y control de tareas. bash ignora comandos que comienzan con el caracter '#'. Esto es útil para agregar comentarios explicativos a los scripts.

Caracter empleado al comienzo de líneas en scripts para bash que indica que la línea entera es un comentario.

A continuación introducimos algunos comandos de bash y programas útiles al hacer scripts.

Comando internto de bash que lee una cadena de la entrada estándar y la asigna a una variable de ambiente (o en su defecto a la variable REPLY).

Comando interno de bash que permite crear alias para ciertos comandos.

Comando interno de bash que permite eliminar alias creados con el comando alias.

Programa que recibe el nombre de un archivo y retorna la parte que corresponde al directorio.

Programa que recibe el nombre de un archivo y retorna la parte que corresponde al nombre sin directorio.

Programa que retorna el nombre de la máquina en la que se ejecuta.

Programa que retorna el nombre del usuario que lo ejecuta.

Programa que retorna identificación y grupo(s) del usuario que lo ejecuta.

Comando interno de bash que permite cambiar atributos en variables de ambiente.

read

Lee una línea de entrada estándar y asigna las palabras a las variables que sigan al comando read. Puede especificarse un mensaje que se presentará como prompt antes de empezar a leer con la opción -p mensaje. El siguiente ejemplo lee dos palabras en las variables NOMBRE y APELLIDO:

read -p "Teclee nombre y apellido: " NOMBRE APELLIDO

Si la línea leída tiene más palabras que la cantidad de variables, el resto serán ignoradas. Si tiene menos palabras, las primeras variables (de izquierda a derecha) serán empleadas y el resto quedarán en blanco (i.e con la cadena vacía ""). En caso de que no se den nombres de variables, la línea leída quedará en la variable REPLY.

alias

Con este comando puede definir alias para comandos, después de definir un alias bash lo remplazará por el comando completo. Por ejemplo un alias para abreviar ls -l puede ser ll, que se definiría como:

alias ll="ls -l" Puede listar los alias definidos con la opción -p del comando alias.

unalias

Permite eliminar alias creados con el comando alias, por ejemplo para eliminar el alias ll se emplea:

unalias ll

Si se emplea la opción -a, el comando unalias elimina todos los alias definidos.

dirname

Recibe como primer parámetro el nombre completo de una archivo, incluyendo su ruta y envía a salida estándar sólo la ruta. Por ejemplo:

dirname /usr/doc/xterm/README.Debian

presenta en salida estándar /usr/doc/xterm.

basename

Análogo a dirname, pero envía a salida estándar el nombre del archivo.

hostname

Envía a salida estándar el nombre del computador en la red, esto también puede verse en la variable de ambiente HOSTNAME. Con la opción -f, el programa hostname presenta el nombre completo, con la opción -i la dirección IP, con la opción -d el dominio DNS, con la opción -a presenta nombres alternos de su máquina y con la opción -y el dominio NIS
este programa extrae parte de la información del archivo /etc/hosts y de /etc/hostname.

whoami

Retorna el nombre del usuario que lo ejecuta. También puede verse en la variable de ambiente USER.

id

Retorna nombre y número del usuario que lo ejecuta, así como nombre y número del grupo o grupos a los que pertenezca. Con la opción -g sólo retorna el número del grupo principal, con -u retorna sólo el número del grupo principal, con -G retorna los números de todos los grupos a los que pertenece. Estas opciones pueden seguirse de n para presentar nombres en lugar de números.

declare

Las variables de ambiente tienen atributos que pueden examinarse o cambiarse con este comando interno de bash. Los atributos pueden ser sólo lectura (opción -r), exportable (opción -x) y variable entera (opción -i). Una variable de sólo lectura no puede ser modificada, y una variable entera sólo puede asociarse con números. [3]. Para examinar las variables que tengan un cierto atributo se emplea declare seguido del código de la opción, por ejemplo para examinar las variables con atributo de sólo lectura declare -r. Para cambiar un atributo a una variable se emplea la opción (precedida de - o + para activar y desactivar) seguida del nombre de la variable, por ejemplo declare -i N pone el atributo de variable entera a N.


  • Recomendamos de forma especial consultar la página del manual de bash. Hay algunas partes que complementan lo que se ha presentado en esta guía:
    • bash puede hacer más expansiones de parámetros, con la sintaxis ${...}
      por ejemplo sustituciones en el valor de una variable
      . Puede consultar la información completa sobre este tema en la sección "expansión de parámetros".
    • Pueden hacerse scripts para bash con otras características que no se han presentado en esta guía: if, case, while, for, function.
  • El intérprete de comandos es una parte importante de la filosofía Unix, el libro clásico sobre este tema es de Brian. W. Kernighan y Rob Pike "El Entorno de Programación UNIX", Prentice-Hall Hispanoamericana. Este libro explica y muestra el uso de csh, un predecesor de bash
    la mayoría de características de csh están disponibles en bash.
  • En Internet puede consultar "Advanced Bash-Scripting Guide: A complete guide to shell scripting, using Bash" de Mendel Cooper, disponible en: http://linuxdoc.org/LDP/abs/html/index.html o Programación en BASH - COMO de introducción http://lucas.hispalinux.es/COMO-INSFLUG/COMOs/Bash-Prog-Intro-COMO/Bash-Prog-Intro-COMO.html


1. Cree un script que sea interpretado por bash, que al ejecutarse busque entre sus directorios, todos los archivos, ordene los nombres alfabéticamente y le envíe un correo con esa información. //Ayuda:// Puede emplear la opción ##-R## de **ls** para listar subdirectorios, y la opción ##-u## de **sort**. 2. La variable de ambiente ##HOME## contiene el nombre de su directorio personal. Comprúebelo y después empleela para cambiarse a su directorio. Después cambie esta variable y explique que ocurre con el comodín '~'. 3. [[http://es.tldp.org/Manuales-LuCAS/AA_Linux_colegio-1.1/AA_Linux_colegio-1.1-html/x3772.htm#script.variables.2 El programa man presenta páginas del manual, empleando el programa especificado en la variable de ambiente PAGER o en su defecto con el programa less (ver Lectura bash y el juego de herramientas). Modifique y exporte la variable PAGER para que man emplee el programa more para presentar información y pruebe el cambio.]] 4. ¿Qué hace el comando **echo `ls`** ? (note que se usan apóstrofes invertidos). 5. ¿Qué hace el comando ##**N=6 echo "'1+$N' = $((1+$N))"**## ? Después de dar su respuesta, compruébela empleando un intérprete de comandos. 6. Haga un script que cada 90 minutos presente el mensaje "Hacer tareas". //Ayuda:// **source**. 7. Cree un script que al ser ejecutado, cree un archivo ##script2##. El archivo ##script2## creado debe poner la variable ##PATH## en el valor que tenga cuando el primer script sea ejecutado, añadir a tal variable la ruta ##/opt/bin## y debe crear un alías que cuando se ejecute muestre el contenido de la variable PATH (no olvide cambiar el modo del archivo ##script2## generado para que sea ejecutable). 8. Haga un script que después de ejecutarse pida al usuario 2 números y después presente la suma, la resta, el producto y la división.

1. Cree un script que sea interpretado por bash, que al ejecutarse busque entre sus directorios, todos los archivos, ordene los nombres alfabéticamente y le envíe un correo con esa información. Ayuda: Puede emplear la opción -R de ls para listar subdirectorios, y la opción -u de sort.



#!/bin/bash cd $HOME ls -R | sort -u | mail $USERNAME@$HOSTNAME

2. La variable de ambiente HOME contiene el nombre de su directorio personal. Comprúebelo y después empleela para cambiarse a su directorio. Después cambie esta variable y explique que ocurre con el comodín '~'.

echo $HOME; cd $HOME El comodin ~ es remplazado por el valor de la variable $HOME.

3. El programa man presenta páginas del manual, empleando el programa especificado en la variable de ambiente PAGER o en su defecto con el programa less (ver Lectura bash y el juego de herramientas). Modifique y exporte la variable PAGER para que man emplee el programa more para presentar información y pruebe el cambio.



export PAGER=more man man

4. ¿Qué hace el comando echo `ls` ? (note que se usan apóstrofes invertidos).

Ejecuta el comando ls y el resultado del mismo como cadena lo presenta con el comando echo

5. ¿Qué hace el comando N=6 echo "'1+$N' = $((1+$N))" ? Después de dar su respuesta, compruébela empleando un intérprete de comandos.

Presenta 1+$N = 7.

6. Haga un script que cada 90 minutos presente el mensaje "Hacer tareas". Ayuda: source.

El archivo puede ser recuerda.sh, su contenido:

#!/bin/bash sleep 90m echo "Hacer tareas" después ejecutarlo.

7. Cree un script que al ser ejecutado, cree un archivo script2. El archivo script2 creado debe poner la variable PATH en el valor que tenga cuando el primer script sea ejecutado, añadir a tal variable la ruta /opt/bin y debe crear un alías que cuando se ejecute muestre el contenido de la variable PATH (no olvide cambiar el modo del archivo script2 generado para que sea ejecutable).



#!/bin/bash echo 'PATH=$PATH:/opt/bin' > script2 echo 'alias sp="echo $PATH"' >> script2 chmod +x script2

8. Haga un script que después de ejecutarse pida al usuario 2 números y después presente la suma, la resta, el producto y la división.



#!/bin/bash read -p "Numeros: " A B echo $((A+B)) $((A-B)) $((A*B)) $((A/B))

Notas


|| [1] || En rigor lo interpreta con /bin/sh pero en Debian /bin/sh es un enlace a /bin/bash ||
|| [2] || En la expresión pueden emplearse los operadores - (unario y binario), + (unario y binario), para elevar a una potencia, * para multiplicar, / para divir, % para obtener residuo de una división. Hay operadores que operan a nivel de bits (representación binaria de los números que operan): ~ para negar bits, & para hacer "Y" entre bits de operandos y | para efectuar "O". También pueden emplearse valores booleanos
0 se interpreta como falso y 1 como verdadero
, pueden compararse números con los operadores >, <, <= (menor o igual), >= (mayor o igual),
(igualdad), != (diferentes) y pueden operarse booleanos con ! para negar, && como conjunción (Y) y || como disyunción. Los números pueden escribirse en decimal, o en otras bases empleando como prefijo del número la base seguida del caracter '#' (también puede escribirse números en octal iniciándolos con 0 o en hexadecimal iniciándolos con 0x). || || [3] || Otros atributos pueden ser "función" -f y arreglo -a ||
Tabla de contenidos
  1. 1 - Guías para colegios con plataforma de referencia S-Helio 1.1
  2. 2 - Primera exploración de Linux desde la perspectiva de un usuario
  3. 3 - Software de libre redistribución
  4. 4 - Linux
  5. 5 - Sistema de usuarios y manejo de clave
  6. 6 - Escritorio y herramientas Gnome
  7. 7 - Directorios y archivos
  8. 8 - Disquetes y CDROM
  9. 9 - Búsqueda y consulta de documentación
  10. 10 - Linux desde la perspectiva de un usuario con experiencia
  11. 11 - Archivos y permisos
  12. 12 - Información personal y comunicación con otros usuarios
  13. 13 - Servicios de la Intranet
  14. 14 - Edición de texto
  15. 15 - Linux desde la perspectiva de un usuario con mas experiencia
  16. 16 - Sistemas para preparar documentos (I)
  17. 17 - Sistemas para preparar documentos (II)
  18. 18 - bash y el juego de herramientas
  19. 19 - Procesos y tareas
  20. 20 - Scripts basicos para bash (I)
  21. 21 - Scripts basicos para bash (II)
  22. 22 - Configuración de una sesión
  23. 23 - Desarrollo de habilidades para administrar computadores con Linux
  24. 24 - El rol del administrador de red
  25. 25 - Apagado y encendido de una red
  26. 26 - Administración de usuarios (I)
  27. 27 - Administración de usuarios (II)
  28. 28 - Administración de archivos (I)
  29. 29 - Administración de archivos (II)
  30. 30 - Administración de programas (I)
  1. 31 - Administración de programas (II)
  2. 32 - Colaboración y soporte
  3. 33 - Administración de Linux en computadores aislados
  4. 34 - Inicialización del sistema
  5. 35 - Kernel y módulos
  6. 36 - Hardware basico y Linux (I)
  7. 37 - Hardware basico y Linux (II)
  8. 38 - Dispositivos y Linux (I)
  9. 39 - Dispositivos y Linux (II)
  10. 40 - Dispositivos y Linux (III)
  11. 41 - Instalación de Debian
  12. 42 - Localización y configuración de algunos programas
  13. 43 - Administración de una red con Linux
  14. 44 - Redes, protocolos e Internet
  15. 45 - Dispositivos para interconexión y Linux
  16. 46 - Direcciones, enrutamiento y transporte
  17. 47 - Protocolos de soporte y de usuario (I)
  18. 48 - Protocolos de soporte y de usuario (II)
  19. 49 - Protocolos de soporte y de usuario (III)
  20. 50 - Protocolos de soporte y de usuario (IV)
  21. 51 - Protocolos de soporte y de usuario (V)
  22. 52 - Protocolos de soporte y de usuario (VI)
  23. 53 - Apéndice A. Plataforma de referencia S-Helio 1.1
  24. 54 - Apéndice B. Sobre estas guías
  25. 55 - Apéndice C. Actualización del kernel de Debian Linux (I)
  26. 56 - Apéndice C. Actualización del kernel de Debian Linux (II)
  27. 57 - Apéndice D. Respuestas a los ejercicios (I)
  28. 58 - Apéndice D. Respuestas a los ejercicios (II)
  29. 59 - Apéndice D. Respuestas a los ejercicios (III)
Autor y licencia de 'Manual Aprendiendo a aprender Linux - Scripts basicos para bash (II)'
Vladimir Támara, Jaime Irving Dávila, Pablo Chamorro e Igor Támara Extraído de: http://es.tldp.org/Manuales-LuCAS/AA_Linux_colegio-1.1/AA_Linux_colegio-1.1-html/ GNU Free Documentation License
Licencia GNU Free Documentation License: http://www.es.gnu.org/licencias/fdles.html
Este contenido ha sido recopilado por el equipo de Wikilearning. Todo el contenido recopilado se ha obtenido respetando y comunicando en nuestro site la licencia de cada fuente.
Wikilearning tiene permiso expreso por escrito de los autores para publicar los contenidos que ha extraído de otras webs, incluyendo su uso comercial.

Wikis relacionados con 'Manual Aprendiendo a aprender Linux - Scripts basicos para bash (II)'

Manual Compacto para nuevos usuarios.
Esta guía tiene por objetivo dar respuestas muy claras y concretas a los problemas que... Más »
En la edición anterior, se explicó las bases de Netfilter/IPTables. En esta segunda entrega, se... Más »
Este trabajo ha tenido en cuenta los supuestos teóricos analizados en el artículo “Competencias: Un... Más »
Las fotografias de flores (flora en general) quizas sean las que mejor se dejan enmarcar.... Más »
¿Estás seguro de que deseas eliminar este capítulo?