Manual de bash

De doc.ubuntu-es
(Diferencias entre revisiones)
Saltar a: navegación, buscar
(categorizo)
(Scripts)
Línea 75: Línea 75:
  
 
= Scripts =
 
= Scripts =
 +
 +
Los scripts, llamados también guiones, son secuencias de órdenes en un fichero. Se utilizan para automatizar tareas rutinarias. Por ejemplo, si todos los días cuando encendemos nuestro ordenador realizamos las mismas tareas, podemos hacer un guion o script que lo haga por nosotros.
 +
 +
Por ejemplo, si deseamos lanzar una copia a un dispositivo externo todos los días, haríamos algo así:
 +
 +
<pre>
 +
#!/bin/bash
 +
#La línea anterior indica el intérprete de comandos a utilizar. No es lo mismo bash que sh.
 +
#Las líneas que empiezan por "#" son comentarios
 +
 +
echo "Montando Tu unidad Externa"
 +
mount /dev/sdd1 /media/unidad_externa
 +
 +
echo "Copiando Ficheros de tu home a /media/unidad_externa"
 +
cp -vr /home/pedro/* /media/unidad_externa
 +
 +
echo "Copiado, desmontando unidad"
 +
 +
umount /dev/sdd1
 +
 +
</pre>
 +
 +
El script anterior necesitaría permisos de root. Imaginemos que el script se llama backup.sh. Para lanzarlo necesitaría permisos de ejecución ( ver [[permisos]]) valdría con escribir: "./backup.sh"
  
 
== Variables ==
 
== Variables ==
 +
 +
Las variables son espacios de memoria en los que podremos almacenar datos. Dentro de un script, para crear una variable simplemente escribiremos su nombre seguido de un igual (y si somos elegantes le asignaremos un valor inicial, aunque no es imperativo)
 +
 +
Por ejemplo:
 +
 +
<pre>
 +
 +
#!/bin/bash
 +
#Se declaran las variables
 +
variable1=hola
 +
variable2=usuario
 +
#Se sacan por pantalla
 +
echo $variable1 $variable2
 +
 +
</pre>
 +
 +
Produciría la siguiente salida:
 +
 +
<pre> hola usuario </pre>
 +
 +
Para recuperar el valor de una variable, escribiremos "$" seguido del nombre de la variable. Cabe recordar que en ningún proceso de asignación debe predecer el "$" al nombre de la variable.
 +
 +
=== Asignación de Valores ===
 +
 +
De nada sirve una variable si no podemos asignarle valores variables ¿no? La asignación devalores se hace igual de simple. variable=valor. "valor" puede ser un número entero (es importante, porque bash sólo soporta números enteros) También podremos asignarles resultados de operaciones y el retorno de los comandos.
 +
=== Asignación de la Salida de Comandos ===
 +
 +
Muchas veces desearemos asignar la salida de un comando a una variable, por ejemplo, para obtener el usuario que ejecuta el script. El comando "whoami" nos devuelve el nombre del usuario.
 +
 +
<pre>
 +
#!/bin/bash
 +
 +
usuario=$(whoami)
 +
echo "hola $usuario"
 +
 +
</pre>
 +
 +
Si éste script lo utilizara el usuario "pedro" la salida por pantalla sería:
 +
 +
<pre> hola pedro </pre>
  
 
== Arrays ==
 
== Arrays ==

Revisión de 15:55 16 oct 2008

Contenido

Introducción

bash es un shell de Unix (intérprete de órdenes de Unix) escrito para el proyecto GNU. Su nombre es un acrónimo de bourne-again shell (otro shell bourne) — haciendo un juego de palabras (born-again significa renacimiento) sobre el Bourne shell (sh), que fue uno de los primeros intérpretes importantes de Unix. Hacia 1978 el intérprete Bourne era el intérprete distribuido con el Unix Version 7. Stephen Bourne, por entonces investigador de los Laboratorios Bell, escribió el intérprete Bourne original . Brian Fox escribió el intérprete bash en 1987. En 1990, Chet Ramey se convirtió en su principal desarrollador. bash es el intérprete predeterminado en la mayoría de sistemas GNU/Linux, además de Mac OS X Tiger, y puede ejecutarse en la mayoría de los sistemas operativos tipo Unix. También se ha llevado a Microsoft Windows por el proyecto Cygwin.

Conecptos Básicos

Para abrir una sesión de bash, lo más fácil es abrir una terminal. En GNOME está en el menú: Aplicaciones->Accesorios->Terminal. Lo que tendremos delante, se llama prompt. Se trata de una línea compuesta por el nombre de usuario "@" nombre de la máquina y un carácter separador. El separador será "$" si somos un usuario normal o "#" si somos root.


Introduciendo Órdenes

Para introducir una órden o comando, nada más fácil que teclear el nombre de la órden y presionar enter. La mayoría de las órdenes o comandos acepta parámetros. Para introducir un parámetro lo haremos a continuación de la órden o comando. por ejemplo, para introducir la órden ls:

Sin Parámetros:

juan@portatil$ ls 

Con Parámetros:

juan@portátil$ ls -la 

Vea ésto antes de seguir

Autocompletado de órdenes y rutas

Bash nos da muchas facilidades de uso. Por ejemplo, podemos autocompletar órdenes o rutas.

Si quisiéramos que bash autocompletara una ruta, (por ejemplo /usr/lib/jvm/sun-java6) bastaría con empezar a escribirla e ir presionando la tecla tabulador de forma que: (-> equivale a tabulador)

Si hay más de una coincidencia, bash no autocompleta, si no que espera a que pulsemos de nuevo tabulador (->->) para mostrar todas las posibilidades.

$/us->
$/usr/l->->
/lib /local
$/usr/li->
$/usr/lib->->
consolekit/        i686/              pcmciautils/       sudo/
dbus-1.0/          initramfs-tools/   perl/              tasksel/
dpkg/              jvm/               perl5/             tc/

Lo mismo ocurre con los comandos. Si queremos ejecutar, por ejemplo depkg-reconfigure: (imaginemos que no recordamos cómo se escribe)

$dpkg->->
dpkg                 dpkg-gencontrol      dpkg-scansources
dpkg-architecture    dpkg-gensymbols      dpkg-shlibdeps
dpkg-buildpackage    dpkg-name            dpkg-source
dpkg-checkbuilddeps  dpkg-parsechangelog  dpkg-split
dpkg-deb             dpkg-preconfigure    dpkg-statoverride
dpkg-distaddfile     dpkg-query           dpkg-trigger
dpkg-divert          dpkg-reconfigure     
dpkg-genchanges      dpkg-scanpackages    
$dpkg-rec->
$dpkg-reconfigure

Búsqueda de Comandos Ejecutados

Si queremos recuperar un comando ya ejecutado, podemos usar la flecha arriba para ir navegando por los comandos que ya hemos introducido. Si queremos buscar uno concreto y que además nos lo autocomplete, podemos pulsar control+r y empezar a escribir hasta que lo encuentre, entonces pulsaremos enter para introducirlo.

$^R
$(reverse-i-search)`su': sudo aptitude install links

'su' Es la parte que hemos escrito y lo siguiente a los dos puntos lo que ha encontrado.

Comandos u Órdenes

La lista de comandos que podemos usar es bastante extensa, hay comandos para todas las tareas que podamos imaginar, algunos más conocidos que otros. Aquí hay una lista de comandos con sus argumentos más comunes:

Vea ésto antes de continuar

Scripts

Los scripts, llamados también guiones, son secuencias de órdenes en un fichero. Se utilizan para automatizar tareas rutinarias. Por ejemplo, si todos los días cuando encendemos nuestro ordenador realizamos las mismas tareas, podemos hacer un guion o script que lo haga por nosotros.

Por ejemplo, si deseamos lanzar una copia a un dispositivo externo todos los días, haríamos algo así:

#!/bin/bash
#La línea anterior indica el intérprete de comandos a utilizar. No es lo mismo bash que sh.
#Las líneas que empiezan por "#" son comentarios

echo "Montando Tu unidad Externa"
mount /dev/sdd1 /media/unidad_externa

echo "Copiando Ficheros de tu home a /media/unidad_externa"
cp -vr /home/pedro/* /media/unidad_externa

echo "Copiado, desmontando unidad"

umount /dev/sdd1

El script anterior necesitaría permisos de root. Imaginemos que el script se llama backup.sh. Para lanzarlo necesitaría permisos de ejecución ( ver permisos) valdría con escribir: "./backup.sh"

Variables

Las variables son espacios de memoria en los que podremos almacenar datos. Dentro de un script, para crear una variable simplemente escribiremos su nombre seguido de un igual (y si somos elegantes le asignaremos un valor inicial, aunque no es imperativo)

Por ejemplo:


#!/bin/bash
#Se declaran las variables
variable1=hola
variable2=usuario
#Se sacan por pantalla
echo $variable1 $variable2

Produciría la siguiente salida:

 hola usuario 

Para recuperar el valor de una variable, escribiremos "$" seguido del nombre de la variable. Cabe recordar que en ningún proceso de asignación debe predecer el "$" al nombre de la variable.

Asignación de Valores

De nada sirve una variable si no podemos asignarle valores variables ¿no? La asignación devalores se hace igual de simple. variable=valor. "valor" puede ser un número entero (es importante, porque bash sólo soporta números enteros) También podremos asignarles resultados de operaciones y el retorno de los comandos.

Asignación de la Salida de Comandos

Muchas veces desearemos asignar la salida de un comando a una variable, por ejemplo, para obtener el usuario que ejecuta el script. El comando "whoami" nos devuelve el nombre del usuario.

 
#!/bin/bash

usuario=$(whoami)
echo "hola $usuario"

Si éste script lo utilizara el usuario "pedro" la salida por pantalla sería:

 hola pedro 

Arrays

Condicionales

Introducción a Test

Evaluación If-Then


#!/bin/bash

echo "Introduce tu Edad"
read edad

if [[ $edad -gt 18 ]]
then
    echo "Eres Mayor de Edad"
else
    echo -e "Eres Menor de Edad\c"
    if test  $edad -lt 18  -a  $edad -gt 13 
    then
        echo " y estás en plena edad del pavo.. brrrlll"
    fi
fi

Bucles

While

For

Until

Operadores

Funciones

Herramientas personales