Nuevas NORMAS para el foro

Curso Hacker
Bienvenido(a), Visitante. Favor de ingresar o registrarse.
¿Perdiste tu email de activación? - Julio 27, 2008, 02:10:57
Boton Buscar
Inicio Ayuda Ingresar Registrarse
Visita: Articulos - Juegos Gratis - Da Foros

Comunidad Underground Hispana  |  Sistemas Operativos  |  Sistemas operativos libres.  |  GNU/Linux (Moderador: blood_r3c)  |  Tema: Curso de BASH scripting básico 0 Usuarios y 1 Visitante están viendo este tema. « anterior próximo »
Páginas: [1] Ir Abajo Imprimir
Autor Tema: Curso de BASH scripting básico  (Leído 494 veces)
benjaminn2
Visitante
« en: Agosto 24, 2007, 02:06:00 »

Curso de BASH scripting básico by LTSmash

Hola amigos Linuxeros/UNIXeros/BSDeros.

Como leyeron el título, esto será un pequeño curso de BASH para todos aquellos que quieran aprender algo de programación (scripting) en BASH, o sea, nuestra shell libre y la más usada a nivel UNIX como es GNU/Linux.

Indice

1 - Conceptos e Historia de BASH
1.1 - Sintaxis
1.2 - Hola Mundo en BASH
2 - Variables en BASH
2.1 - Llamando a una variable
3 - Comandos basicos UNIX

1 - Conceptos e Historia de BASH

bash es un shell de Unix (intérprete de comandos 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 shells importantes de Unix. Hacia 1978 el shell Bourne era el shell distribuido con el Unix Version 7. Stephen Bourne, por entonces investigador de los Laboratorios Bell, escribió el shell Bourne original . Brian Fox escribió el shell bash en 1987. En 1990, Chet Ramey se convirtió en su principal desarrollador. bash es el shell por defecto 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 portado a Microsoft Windows por el proyecto Cygwin.

1.1 - Sintaxis

La sintaxis de órdenes de bash es un superconjunto de la sintaxis del shell Bourne. La especificación definitiva de la sintaxis de órdenes de bash, puede encontrarse en el bash Reference Manual distribuido por el proyecto GNU. Esta sección destaca algunas de las características únicas de bash.

La mayoría de los shell scripts (guiones de órdenes) Bourne pueden ejecutarse por bash sin ningún cambio, con la excepción de aquellos scripts de shell Bourne que hacen referencia a variables especiales de Bourne o que utilizan una orden interna de Bourne. La sintaxis de órdenes de bash incluye ideas tomadas desde el Korn Shell (ksh) y el C Shell (csh), como la edición de la línea de órdenes, el historial de órdenes, la pila de directorios, las variables $RANDOM y $PPID, y la sintaxis de substitución de órdenes POSIX: $(...). Cuando se utiliza como un intérprete de órdenes interactivo, bash proporciona autocompletado de nombres de programas, nombres de archivos, nombres de variables, etc, cuando el usuario pulsa la tecla TAB.

Los scripts de bash reciben los parámetros que le pasa la shell como $1, $2, ..., $n. Podemos saber cuantos hemos recibido con el símbolo $#.

Por ejemplo, si nuestro script necesita dos parámetros pondremos:

Código:
if [ $# -lt 1 ]; then
   echo "You need to pass two parameters"
   exit 0
 fi


1.2 - HOLA MUNDO en BASH

Para empezar, haré una mención al simplisimo "Hola mundo" de BASH, y también lo explicare.

Citar
#!/bin/bash
# Script de hola mundo
echo hola mundo

Es muy simple, en realidad. Lo que hacemos aqui es primero al escribir "#!/bin/bash", llamar a nuestra shell BASH, que por lo general se ubica en /bin/bash, pero podria estar en otro lugar, asi que si no la tenemos ahi ejecutaremos el comando "locate bash" desde nuestra terminal, o bien si no tenemos locate podemos usar "which bash" o bien desde nuestro directorio raiz ( / ) ejecutamos "find bash".

Pero ¿acaso no cuando escribimos un símbolo como # antes de iniciar una linea es un comentario? En realidad sí, como en la segunda linea vemos, eso es un comentario, es decir, algo que no es interpretado y está ahí para que el programador/coder/scripter se ubique y sepa que es lo que hace el código, esto ayuda a tener mejor orden y al corregir el code si tiene BUGS. Pero la excepción a esto, es al escribir #!/ruta/de/interprete , esto nos sirve para llamar a nuestro interprete, como perl, bash, sh, python, etc; y se usa para los lenguajes interpretados, de modo que se ejecuten en donde corresponde.

Por ultimo tenemos el comando echo, como en batch, que sirve para imprimir texto en la pantalla.

BASH funciona igual que nuestra terminal favorita, esto es por que nuestra terminal usa BASH para funcionar, y claro, cuando hacemos scripts es para automatizar procesos (lease INFORMATICA). Asi es que la sintaxis es muy simple. un comando por linea.

Recordemos que leer, es buena idea experimentar con nuestro sistema (claro sin ser root si no sabemos que es lo que hacemos) para aprender.

2 - Variables en BASH
Como todo lenguaje, necesitamos de manejar las muy utiles variables, que nos servirán para todo lo que queramos hacer en determinadas situaciones. Una variable es una cadena de datos que se almacena en la memoria y que podemos llamar en cualquier momento para darle X uso.

Asignando variables:

En BASH, las variables se asignan simplemente dando el nombre de la variable y su valor:

Código:
#!/bin/bash
#Asignando variables
hola=1

Como podemos leer aqui, este codigo asigna el valor 1 a la variable "hola". recordemos que en BASH las variables son "CASE SENSITIVE", es decir, la variable Hola no es lo mismo que HOLA ni que holA.
Otro de los puntos importantes de las variables en BASH es que no tenemos que asignarles un tipo, es decir, podemos darle a las variables cualquier valor y lo aceptará sin tener que decirle a BASH si es numerico o si son letras, etc.

2.1 - Llamando a las variables en BASH

Y claro, sabemos asignar una variable, pero de poco nos sirve si no podemos llamarla. En BASH, las variables las invocamos simplemente anteponiendo un simbolo de dolar ( $ ) antes del nombre de la variable.


Código:
#!/bin/bash
#Asignando variables
hola=1
#Llamando a la variable
$hola
#Mostrando el contenido de la variable
echo $hola

Si ponemos atención al código, en BASH, las variables simplemente se reemplazan por su valor al llamarlas, de modo que en ellas podemos almacenar X texto o numero, ya sean comandos o lo que sea. Al llamar a la variable, observamos que simplemente da el valor y lo pasa como una orden al interprete, pero si lo ponemos siguiendo un comando como echo entonces este mostrará el contenido de la variable.

3 - Comandos Basicos UNIX

Para poder trabajar eficientemente en BASH, es indispensable conocer los comandos mas basicos, aqui una pequeña lista que debemos conocer a la perfeccion:

Comando [Opciones]               Descripcion del comando                        Ejemplo de uso

cat fich1 [...fichN]                    Concatena y muestra un archivos      cat /etc/passwd
cd [dir]                               Cambia de directorio                          cd /tmp
chmod permisos fich               Cambia los permisos de un archivo        chmod +x miscript
chown usuario:grupo fich     Cambia el dueño un archivo                  chown nobody miscript
cp fich1...fichN dir                   Copia archivos                                       cp foo foo.backup
diff [-e]arch1 arch2                 Encuentra diferencia entre archivos    diff foo.c newfoo.c
du [-sabr] fich                    Reporta el tamaño del directorio        du -s /home/
file arch                               Muestra el tipo de un archivo             file arc_desconocido
find dir test acción                   Encuentra archivos.                             find . -name ``.bak'' -print
grep [-cilnv] expr archivos      Busca patrones en archivos                   grep mike /etc/passwd
head -count fich                  Muestra el inicio de un archivo                 head prog1.c
mkdir dir                             Crea un directorio.                                mkdir temp
mv fich1 ...fichN dir                  Mueve un archivo(s) a un directorio     mv a.out prog1
mv fich1 fich2                           Renombra un archivo.                          mv .c prog_dir
less / more fich(s)                  Visualiza página a página un archivo.    more muy_largo.c
     less acepta comandos vi.    less muy_largo.c
ln [-s] fich acceso                  Crea un acceso directo a un archivo    ln -s /users/mike/.profile .
ls                                         Lista el contenido del directorio                ls -l /usr/bin
pwd                                      Muestra la ruta del directorio actual    pwd
rm fich                              Borra un fichero.                                 rm foo.c
rm -r dir                              Borra un todo un directorio                    rm -rf prog_dir
rmdir dir                              Borra un directorio vacío                     rmdir prog_dir
tail -count fich                     Muestra el final de un archivo           tail prog1.c



at [-lr] hora [fecha]    Ejecuta un comando mas tarde    at 6pm Friday miscript
cal [[mes] año]    Muestra un calendario del mes/año    cal 1 2025
date [mmddhhmm] [+form]    Muestra la hora y la fecha    date
echo string    Escribe mensaje en la salida estándar    echo ``Hola mundo''
finger usuario    Muestra información general sobre    finger nn @maquina.aca.com.co
     un usuario en la red    
id    Número id de un usuario    id usuario
kill [-señal] PID    Matar un proceso    kill 1234
man comando    Ayuda del comando especificado    man gcc
          man -k printer
passwd    Cambia la contraseña.    passwd
ps [axiu]    Muestra información sobre los procesos    ps -ux
     que se están ejecutando en el sistema    ps -ef
who / rwho    Muestra información de los usuarios conectados al sistema.   who    

-------------------------------------------------------------------------------------


Por ahora es todo. Iré modificando el post para agregar mas contenidos, y postearé cada vez que actualize.
« Última modificación: ſeptiembre 03, 2007, 07:24:42 por LTSmash » En línea
Aleks
Moderación
Gran Colaborador
*****
Desconectado Desconectado

Mensajes: 2627


Mehr licht


Ver Perfil Email
« Respuesta #1 en: Agosto 24, 2007, 02:12:01 »

Muy buena explicacion y muy bueno el post. palmas
En línea





Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion



Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion

I´ll see you in the other side, I know it!
benjaminn2
Visitante
« Respuesta #2 en: Agosto 25, 2007, 01:59:03 »

Actualización sobre variables
En línea
benjaminn2
Visitante
« Respuesta #3 en: ſeptiembre 02, 2007, 07:57:11 »

Agregados datos sobre la historia y el indice.
En línea
.FuRioUs.
Gran Colaborador
*****
Desconectado Desconectado

Mensajes: 1937


Hangyaku no Furious!

FuriousDami@hotmail.com
Ver Perfil WWW Email
« Respuesta #4 en: ſeptiembre 03, 2007, 09:01:22 »

Muy bien explicado.
En línea


Una persona se hace realmente fuerte cuando protege a un ser querido...

Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion
- Furious Zona -

benjaminn2
Visitante
« Respuesta #5 en: ſeptiembre 03, 2007, 07:14:13 »

Añadidos comandos basicos de UNIX
En línea
benjaminn2
Visitante
« Respuesta #6 en: Noviembre 06, 2007, 07:03:49 »

Solo aviso, seguire el proyecto acá:


Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion
En línea
Páginas: [1] Ir Arriba Imprimir 
Comunidad Underground Hispana  |  Sistemas Operativos  |  Sistemas operativos libres.  |  GNU/Linux (Moderador: blood_r3c)  |  Tema: Curso de BASH scripting básico « anterior próximo »
Ir a:  


Ranking-Hits
Powered by SMF 1.1.5 | SMF © 2006-2007, Simple Machines LLC