La Ultima Esencia
Noticias:
 
*
Bienvenido(a), Visitante. Por favor, ingresa o regístrate. Noviembre 22, 2008, 17:34:35


Ingresar con nombre de usuario, contraseña y duración de la sesión


Páginas: [1] 2 3
  Imprimir  
Autor Tema: Curso de Bash  (Leído 1472 veces)
0 Usuarios y 1 Visitante están viendo este tema.
pianista
Administrador

Desconectado Desconectado

Mensajes: 2588


« : Octubre 12, 2007, 01:20:09 »

Bueno para nuestros Newbies hoy vamos a comenzar a hacer un curso de bash sencillito...

¿Que es el Bash?

Bien, el bash es el interprete de comandos que trae la consola de linux en la mayoria de las distribuciones actuales de linux, si vuestro linux no trae por defecto el bash, podreis acceder a una consola del bash, tan solo con escribir bash en la consola...

Para saber si estais usando el bash escribid esto:  $: echo $SHELL

Y nos devolvera la ruta del shell usado en cuestion, en este caso que usamos el bash, deberá devolver: /bin/bash o similares...

Para salir del terminal tecleamos o exit o logout

Como podeis comprobar en este primer acercamiento al shell de linux, ya estamos usando nuestro primer comando, de una gama muy amplia que dispone UNIX, particularmente Linux...

Pero antes de nada, comencemos por el bash, que va a ser nuestra utilidad primaria durante este tutorial.

El bash es un interprete, esto quiere decir que cuando nosotros introducimos un comando, o creamos un script con una secuencia de comandos (ya veremos mas adelante lo que es un script), el bash toma el control, ejecuta el comando, devuelve lo que tenga que devolver y ya esta, no hace falta compilar nada, etc...

Y ahora comenzaremos por los comandos del bash para que una vez dominados estos, podamos realizar programacion del shell, lo que se llama bash scripting, que consiste en hacer scripts que contengan comandos del shell enlazados y asi tener un programa que realice una funcionalidad...

OJO, el bash es sensible a las mayusculas, quiero decir que no es lo mismo hacer,  cd, que hacer CD

echo

Este es el comando mas basico con el que podamos empezar, este comando sin ningun tipo de argumento ni de opcion simplemente devuelve lo escrito despues, por ejemplo:

$ echo Hola Mundo
Hola Mundo

Este comando nos sera muy util mas adelante en los scripts, cuando queramos mostrar por pantallas cosas al usuario...

(Nota:Para consultar el manual de cualquier comando explicado aqui,por ejemplo el echo, basta con hacer en linux un $ man echo)

Tambien aclarar que cuando pongo delante $, simplemente estoy indicando que soy un usuario normal del shell, pero no hay que escribirlo, lo podreis ver en vuestro shell al abrirlo Wink

Mas cosas que podemos hacer con un echo, podemos escribir un fichero solamente con echos (esto se explicara mejor cuando lleguemos a como funciona la entrada y la salida, y los redireccionamientos en el bash)

echo  Este es mi fichero > fich.txt
echo Como esto es la siguiente linea que quiero agregar pongo dos >> fich.txt
echo Esto lo borra entero y solo escribe esto > fich.txt



cat

Este comando entre otras muchas cosas, nos va a permitir leer archivos desde el shell...
La sintaxis es:

cat [Opciones] archivo

Por ejemplo, para leer nuestro antiguo fich.txt en el shell

cat fich.txt

Atentos, cat a diferencia de echo, tiene muchas opciones para usar (podeis verlas con man)

Por ejemplo, que muestro fich.txt numerando las lineas:

cat -n fich.txt

Bueno, por hoy basta aqui, mañana continuaremos con cp, rm, mv basicamente

Saludos


En línea
mig
Moderador Global

Conectado Conectado

Mensajes: 627



WWW
« Respuesta #1 : Octubre 12, 2007, 03:15:40 »

Lo más importante: si queréis ayuda sobre un comando, usad el man; Google se usa cuando quieres perder el tiempo (Benja Dixit)
En línea

El problema que tenemos los informáticos es que hay demasiadas películas de ciencia ficción
hadrianweb
WPA

Desconectado Desconectado

Mensajes: 123


« Respuesta #2 : Noviembre 28, 2007, 00:51:15 »

ohhh, bash, yo de eso creo que se un poco Grin Grin Grin
En línea

berni69
WPA

Desconectado Desconectado

Mensajes: 149



WWW
« Respuesta #3 : Noviembre 28, 2007, 18:40:39 »

aa pos ya puedes enseñar a los que no sabemos  Grin Grin

En línea

Errar es humano, pero para liar las cosas de verdad se necesita un ordenador

www.bitsdelocos.es
pianista
Administrador

Desconectado Desconectado

Mensajes: 2588


« Respuesta #4 : Noviembre 28, 2007, 21:03:45 »

La verdad es que lo inicie como un curso y eso que puse no vale practicamente para nada, a ver si cuando tenga tiempo lo amplio, tu tambien puedes hadrianweb Wink
Saludos
En línea
hadrianweb
WPA

Desconectado Desconectado

Mensajes: 123


« Respuesta #5 : Noviembre 29, 2007, 00:30:40 »

Ala, pues lo dicho a enseñar, aqui os dejo una script grafica que yo mismo he hecho para uno de mis programas

Citar
#!/bin/bash
#Autor hadrianweb
#Nombre completo: Adrian Campos Garrido

TMP=/home/rai/adrian.campos/tmp
algoritmo=1
funcionesdicoto=1
funcionesdicoto1=1
funcionessecante=1
funcionessecante1=1
funcionesitf=1
funcionesnew=1
function=1
funcion=1

rm -rf $TMP
mkdir -p $TMP

# Menu Principal(menu algoritmos)

  dialog --title "Adrian Campos Garrido" \
  --menu "Elija el programa que desea utilizar. \
Luego pulse enter \
Para continuar Escoja la opcion que desea utilizar:\ " 0 0 0 \
  "1" "Algoritmo de Dicotomia" \
  "2" "Algoritmo de la Secante y Regula Falsi" \
  "3" "Algoritmo de Iteracion Funcional y Aitken" \
  "4" "Algoritmo de Newton-Raphson y Schröder" \
  "5" "Algoritmo de Schröder para (x-1)**3*(x+3)" \
  2> $TMP/reply

#Menu Funciones
  dialog --title "Adrian Campos Garrido" \
  --menu "Menu De Funciones. \
Opciones:\ " 0 0 0 \
  "1" "Insertar Funcion" \
  "2" "Funciones Predefinidas" \
  2> $TMP/function

  funcion="`cat $TMP/function`"
if [ "$funcion" = "1" ]; then
   algoritmo="`cat $TMP/reply`"
     if [ "$algoritmo" = "1" ]; then
      cd /home/rai/adrian.campos/diricn/dirfundicoto
      ./scriptdicoto.sh
      cd /home/rai/adrian.campos/diricn/dirdicoto
      macroc 99
      macrol 99
      ./ppal_dicoto.out
      exit
   elif [ "$algoritmo" = "2" ]; then
      exit
   elif [ "$algoritmo" = "3" ]; then
      exit
   elif [ "$algoritmo" = "4" ]; then
      exit
   elif [ "$algoritmo" = "5" ]; then
      exit
   fi
   
elif [ "$funcion" = "2" ]; then

  algoritmo="`cat $TMP/reply`"
  if [ "$algoritmo" = "1" ]; then
#Menu funciones Dicotomia
  dialog --title "Adrian Campos Garrido" \
  --menu "Has esojido el algoritmo de Dicotomia. \
Escoja su opcion y luego pulse enter \
Opciones:\ " 0 0 0 \
  "1" "f=exp(-x) - x" \
  "2" "f=x - tan(x)" \
  "3" "f=log(x) - 5. + x" \
  "4" "f=8.*x**3 - 24.*x**2 + 16.*x - 3." \
  "5" "Mas Funciones" \
  2> $TMP/funcionesdicoto


  funcionesdicoto="`cat $TMP/funcionesdicoto`"
   if [ "$funcionesdicoto" = "1" ]; then
      clear
      cd /home/rai/adrian.campos/diricn/dirdicoto
      macroc 1
      macrol 1
      ./ppal_dicoto.out
   elif [ "$funcionesdicoto" = "2" ]; then
      clear
      cd /home/rai/adrian.campos/diricn/dirdicoto
      macroc 2
      macrol 2
      ./ppal_dicoto.out
   elif [ "$funcionesdicoto" = "3" ]; then
      clear
      cd /home/rai/adrian.campos/diricn/dirdicoto
      macroc 3
      macrol 3
      ./ppal_dicoto.out
   elif [ "$funcionesdicoto" = "4" ]; then
      clear
      cd /home/rai/adrian.campos/diricn/dirdicoto
      macroc 4
      macrol 4
      ./ppal_dicoto.out
   elif [ "$funcionesdicoto" = "5" ]; then
      dialog --title "Adrian Campos Garrido" \
        --menu "Elija La funcion a utilizar. \
      Luego pulse enter \
      Para continuar escoja la funcion que desea:\ " 0 0 0 \
        "6" "f=x**3 - x - 1." \
        "7" "f=2**x - 5.*x + 2." \
        "8" "f=x**3 - 13.*x**2 + 40.*x - 25." \
        "9" "f=2.5*x - exp(x) + exp(-x)" \
        2> $TMP/funcionesdicoto1


        funcionesdicoto1="`cat $TMP/funcionesdicoto1`"
      if [ "$funcionesdicoto1" = "6" ]; then
         clear
         cd /home/rai/adrian.campos/diricn/dirdicoto
         macroc 5
         macrol 5
         ./ppal_dicoto.out
      elif [ "$funcionesdicoto1" = "7" ]; then
         clear
         cd /home/rai/adrian.campos/diricn/dirdicoto
         macroc 6
         macrol 6
         ./ppal_dicoto.out
      elif [ "$funcionesdicoto1" = "8" ]; then
         clear
         cd /home/rai/adrian.campos/diricn/dirdicoto
         macroc 7
         macrol 7
         ./ppal_dicoto.out
      elif [ "$funcionesdicoto1" = "9" ]; then
         clear
         cd /home/rai/adrian.campos/diricn/dirdicoto
         macroc 8
         macrol 8
         ./ppal_dicoto.out
      fi
   fi
   exit
  elif [ "$algoritmo" = "2" ]; then
#Menu funciones Secante
  dialog --title "Adrian Campos Garrido" \
  --menu "Has escogido el Algoritmo de la Secante. \
Escoja su opcion y luego pulse enter \
Opciones:\ " 0 0 0 \
  "1" "f=exp(-x) - x" \
  "2" "f=x - tan(x)" \
  "3" "f=log(x) - 5. + x" \
  "4" "f=8.*x**3 - 24.*x**2 + 16.*x - 3." \
  "5" "Mas Funciones" \
  2> $TMP/funcionessecante


  funcionessecante="`cat $TMP/funcionessecante`"
   if [ "$funcionessecante" = "1" ]; then
      clear
      cd /home/rai/adrian.campos/diricn/dirsrf
      macroc1 1
      macrol1 1
      ./principal.out
   elif [ "$funcionessecante" = "2" ]; then
      clear
      cd /home/rai/adrian.campos/diricn/dirsrf
      macroc1 2
      macrol1 2
      ./principal.out
   elif [ "$funcionessecante" = "3" ]; then
      clear
      cd /home/rai/adrian.campos/diricn/dirsrf
      macroc1 3
      macrol1 3
      ./principal.out
   elif [ "$funcionessecante" = "4" ]; then
      clear
      cd /home/rai/adrian.campos/diricn/dirsrf
      macroc1 4
      macrol1 4
      ./principal.out
   elif [ "$funcionessecante" = "5" ]; then
      dialog --title "Adrian Campos Garrido" \
        --menu "Elija La funcion a utilizar. \
      Luego pulse enter \
      Para continuar escoja la funcion que desea:\ " 0 0 0 \
        "6" "f=x**3 - x - 1." \
        "7" "f=2**x - 5.*x + 2." \
        "8" "f=x**3 - 13.*x**2 + 40.*x - 25." \
        "9" "f=2.5*x - exp(x) + exp(-x)" \
        2> $TMP/funcionessecante1


        funcionessecante1="`cat $TMP/funcionessecante1`"
      if [ "$funcionessecante1" = "6" ]; then
         clear
         cd /home/rai/adrian.campos/diricn/dirsrf
         macroc1 5
         macrol1 5
         ./principal.out
      elif [ "$funcionessecante1" = "7" ]; then
         clear
         cd /home/rai/adrian.campos/diricn/dirsrf
         macroc1 6
         macrol1 6
         ./principal.out
      elif [ "$funcionessecante1" = "8" ]; then
         clear
         cd /home/rai/adrian.campos/diricn/dirsrf
         macroc1 7
         macrol1 7
         ./principal.out
      elif [ "$funcionessecante1" = "9" ]; then
         clear
         cd /home/rai/adrian.campos/diricn/dirsrf
         macroc1 8
         macrol1 8
         ./principal.out
      fi
   fi
   exit
  elif [ "$algoritmo" = "3" ]; then
#Menu funciones Iteracion Funcional y Aitken
  dialog --title "Adrian Campos Garrido" \
  --menu "Has escogido el Algoritmo de Iteracion Funcional y Aitken. \
Escoja su opcion y luego pulse enter \
Opciones:\ " 0 0 0 \
  "1" "f=exp(-x) (funcion 1)" \
  "2" "f=3.1415926535 + atan(x) (funcion 2)" \
  "3" "f=(1. + x)**(1./3) (funcion 5)" \
  "4" "f=(2.**x + 2.)/5 (funcion 6)" \
  "5" "f=-2*log10((0.1/3.7)+(2.51*x/5000)) (funcion 9)" \
  2> $TMP/funcionesitf


  funcionesitf="`cat $TMP/funcionesitf`"
   if [ "$funcionesitf" = "1" ]; then
      clear
      cd /home/rai/adrian.campos/diricn/diritf
      macroc 1
      macrol 1
      ./principal.out
   elif [ "$funcionesitf" = "2" ]; then
      clear
      cd /home/rai/adrian.campos/diricn/diritf
      macroc 2
      macrol 2
      ./principal.out
   elif [ "$funcionesitf" = "3" ]; then
      clear
      cd /home/rai/adrian.campos/diricn/diritf
      macroc 5
      macrol 5
      ./principal.out
   elif [ "$funcionesitf" = "4" ]; then
      clear
      cd /home/rai/adrian.campos/diricn/diritf
      macroc 6
      macrol 6
      ./principal.out
   elif [ "$funcionesitf" = "5" ]; then
      clear
      cd /home/rai/adrian.campos/diricn/diritf
      macroc 9
      macrol 9
      ./principal.out
   fi
   exit
  elif [ "$algoritmo" = "4" ]; then
#Menu funciones Iteracion Funcional y Aitken
  dialog --title "Adrian Campos Garrido" \
  --menu "Has escogido el Algoritmo de Newton-Raphson y Schröder. \
Escoja su opcion y luego pulse enter \
Opciones:\ " 0 0 0 \
  "1" "f=exp(-x) -x (funcion 1)" \
  "2" "f= x**3 - x - 1 (funcion 5)" \
  "3" "f=2**x - 5*x + 2 (funcion 6)" \
  "4" "f=x**3 - 13*x**2 + 4*x - 25 (funcion 7)" \
  "5" "f=2.5*x - exp(x) + exp(-x) (funcion Cool" \
  2> $TMP/funcionesnew


  funcionesnew="`cat $TMP/funcionesnew`"
   if [ "$funcionesnew" = "1" ]; then
      clear
      cd /home/rai/adrian.campos/diricn/dirnewton
      macroc 1
      macrol 1
      ./principal.out
   elif [ "$funcionesnew" = "2" ]; then
      clear
      cd /home/rai/adrian.campos/diricn/dirnewton
      macroc 2
      macrol 2
      ./principal.out
   elif [ "$funcionesnew" = "3" ]; then
      clear
      cd /home/rai/adrian.campos/diricn/dirnewton
      macroc 3
      macrol 3
      ./principal.out
   elif [ "$funcionesnew" = "4" ]; then
      clear
      cd /home/rai/adrian.campos/diricn/dirnewton
      macroc 4
      macrol 4
      ./principal.out
   elif [ "$funcionesnew" = "5" ]; then
      clear
      cd /home/rai/adrian.campos/diricn/dirnewton
      macroc 5
      macrol 5
      ./principal.out
   fi
   exit
  elif [ "$algoritmo" = "5" ]; then
   clear
   cd /home/rai/adrian.campos/diricn/dirnewton
   macroc 6
   macrol 6
   ./principal.out
   exit

  fi
exit
fi




No me digais que no es bonita Grin Grin Grin
En línea

pianista
Administrador

Desconectado Desconectado

Mensajes: 2588


« Respuesta #6 : Noviembre 29, 2007, 07:54:57 »

Joder pero enseñales comandos y esas cosas hombre, jajajaja
No se van a poner desde 0 a programar cosas graficas Grin Grin
Saludos
En línea
indio99
WPA

Desconectado Desconectado

Mensajes: 25



« Respuesta #7 : Noviembre 30, 2007, 23:48:04 »

adrián, ahí te has pegado el moco, eso es vacilar y lo demás es tontería.

venga que yo me apunto a aprender bash, que hace 16 años comencé uno de basic, y lo dejé hace 15 años y 11 meses Grin Grin Grin

bueno que quiero aprender, a ver si me puedo hacer algunas aplicaciones propias Wink

saludos
En línea

indio99
WPA

Desconectado Desconectado

Mensajes: 25



« Respuesta #8 : Diciembre 01, 2007, 00:31:25 »

habría que empezar explicando la estructura de archivos de cualquier distro linux,

que creo que son importantes a la hora de manejarnos por el sistema.

/home → Utilización de los directorios propios de cada usuario. Contiene el directorio de presentación y el árbol de subdirectorios de cada usuario.

/dev → Contiene archivos especiales de bloques y caracteres asociados a dispositivos hardware.

/etc → Directorio con ficheros de configuración y utilidades para la administración.

/mnt (/media)→ Directorio para montar dispositivos de almacenamiento (disquetes, lector de CD/DVD, llave USB)

existen más, pero con éstas podemos tener suficiente para comenzar



otro punto a destacar es el tabulador, que tiene la función de completar una ruta en consola

y el tema del superusuario (root) para tener acceso a todos los permisos, con

sudo -s  ó su <usuario>    por ejemplo su indio99

.... to be continued ........
En línea

indio99
WPA

Desconectado Desconectado

Mensajes: 25



« Respuesta #9 : Diciembre 01, 2007, 08:53:41 »

La verdad es que lo inicie como un curso y eso que puse no vale practicamente para nada, a ver si cuando tenga tiempo lo amplio, tu tambien puedes hadrianweb Wink
Saludos

eso que has puesto craro que vale como curso, estamos hablando de un curso para conocer bash

y eso es precisamente lo que tu has hecho, si bien hay que explicar algunas cosillas primero.

luego cuando se conozca medianamente decente el bash, entonces se puede avanzar con el curso de sripts, que creo que "algunos" hos habéis hecho otra idea, y habéis corrido demasiado Grin Grin Grin

ls

retomando el curso bash, cabe mencionar el comando ls, que sirve para hacer un listado de todo el contenido de la ruta en la que nos encontremos.

escribiendo simplemente ls en la shell, o consola, nos devolverá el contenido de todos los archivos o directorios que están contenidos en la ruta en la que estamos en ese momento

para poder ver el contenido de los archivos ocultos, que en linux, van a estar dados por incorporar un punto previo al nombre del archivo o directorio, usaremos las opciones que nos brinda el comando ls

ls -a nos muestra esos archivos ocultos, que como podréis comprobar vosotros mismos, incorporan ese puno al inicio del nombre.

también podemos listar en pantalla, otro directorio que no sea el directorio actual, llamandolo de ésta forma

ls /dir1/dir2/dir3.........

así conseguimos listar el directorio que queramos, sin necesidad de ubicarnos en el




... to be continued .....
En línea

berni69
WPA

Desconectado Desconectado

Mensajes: 149



WWW
« Respuesta #10 : Diciembre 01, 2007, 08:59:32 »

¿format c:??  Grin Grin Grin

e esto empieza a ponerse interesante Wink
En línea

Errar es humano, pero para liar las cosas de verdad se necesita un ordenador

www.bitsdelocos.es
pianista
Administrador

Desconectado Desconectado

Mensajes: 2588


« Respuesta #11 : Diciembre 01, 2007, 11:36:41 »

Me parece bien, que cada uno vaya poniendo uyn comando Wink

cd

Nos sirve para cambiar de directorio, por ejemeplo cd ~ nos llevara a nuestro directorio home, cd Carpeta, nos llevara a esa carpeta.

cp

Nos permite copiar ficheros, la sintaxis es cp rutadelficheroacopiar rutadedestinoynombre
Si ponemos ., lo dejamos con ese nombre:
cp pianista.flt /usr/src/.
Saludos
En línea
berni69
WPA

Desconectado Desconectado

Mensajes: 149



WWW
« Respuesta #12 : Diciembre 01, 2007, 13:06:45 »

rmmod <modulo>

elimina un modulo cargado

modprobe <modulo>

te permite cargar cualquier modulo
En línea

Errar es humano, pero para liar las cosas de verdad se necesita un ordenador

www.bitsdelocos.es
indio99
WPA

Desconectado Desconectado

Mensajes: 25



« Respuesta #13 : Diciembre 01, 2007, 16:28:40 »

bueno, pues ya que vamos viendo como movernos por las carpetas, como listar su contenido, y algunas que otras cosillas, veamos pues como eliminar un archivo y como crear y/o eliminar un directorio.


para la tarea de eliminar, se emplea el comando rm

rm <nombre del archivo>

y para eliminar un directorio

rm -r <nombre del directorio>

puede que para algunas taréas no tengamos permisos suficientes, pero para eso tendremos que acceder como superusuario

sudo rm <archivo>

sudo rm -r <directorio>

cuidado con eso porque si están restringidos a la cuenta de root, es por que pueden ser o no muy importantes.

para crear un directorio, basta con el comando mkdir

mkdir <nombre del directorio nuevo>

saludos

En línea

indio99
WPA

Desconectado Desconectado

Mensajes: 25



« Respuesta #14 : Diciembre 01, 2007, 17:22:22 »

otro comando para ver el contenido de un archivo, al igual que cat, es less

less <nombre del archivo>

te muestra el contenido del archivo en la misma ventana shell, pudiendo bajar y subir de página con las teclas av pag, re pag, inicio, fin, los cursores, o la barra espaciadora

creo que es el mismo visor de documentos que usa el comando man, y para salir de él, igualmente con la tecla Q


grep

grap es usado para mostrar un término en concreto

por ejemplo si queremos buscar un documento que no recordamos como se llama, pero que conocemos que contiene el término 'esencia' simplemente hacemos un

grep esencia

grep se puede combinar con otros comandos, por ejemplo con ls

imaginaos que al hacer un ls en un directorio nos aparecen 1000 archivos, y que queremos listar sólo los que comienzan por 'esencia', pues básta con hacer

ls | grep esencia

y así nos devuelve el listado del directorio de todos los archivos que contienen el término 'esencia'


bueno vamos avanzando, venga chicos que ya vamos a estar liados programando algún que otro script sencillito Grin Grin Grin

saludos
En línea

Páginas: [1] 2 3
  Imprimir  
 
Ir a:  


Powered by SMF 1.1.6 | SMF © 2006-2007, Simple Machines LLC
Seo4Smf v0.2 © Webmaster's Talks


AFILIATE AQUI
Creative Commons License
Esta obra está bajo una licencia de Creative Commons.