Bash: Cómo hacer un script ejecutable

Deseo poco a poco ir poniendo artículos sobre Bash, pues material tengo suficiente para ir enseñándoles poco a poco tips, hacer scripts, y mucho más, de forma tal que nuestras tareas cotidianas sean automáticas por lo que, obviamente nos ahorrará montón de tiempo 😀

Ahora les mostraré lo básico, lo que siempre necesitarán saber, y que me servirá de apoyo para el resto de los tutoriales 😉

¿Cómo hacer un script .sh?

Simple… muy simple 😀

1. Abran una terminal, en ella escriban lo siguiente y presionen [Enter]:

cd $HOME && touch script.sh && chmod +x script.sh

Esto bastará para que se les cree un archivo script.sh en su carpeta personal.

2. En la terminal pongan lo siguiente:

cd $HOME && echo '#!/bin/bash' > script.sh && echo '# -*- ENCODING: UTF-8 -*-' >> script.sh

3. Listo, ya tienen su script listo 😀

Si lo abrimos nos quedará algo así:
#!/bin/bash
# -*- ENCODING: UTF-8 -*-

Después de esa segunda línea, a partir de ahí se escriben las instrucciones.

Por ejemplo, le diremos que nos muestre en una terminal “<° Linux es lo mejor” 😀

Nos quedaría el script de la siguiente forma:
#!/bin/bash
# -*- ENCODING: UTF-8 -*-
echo "<° Linux es lo mejor"
exit

¿Cómo ejecutar o probar un script .sh?

1. Debemos ir hacia la carpeta donde está el script, en el ejemplo anterior sería nuestra carpeta personal, por lo que abrimos una terminal, en ella escribimos lo siguiente y presionamos [Enter]:

cd $HOME

2. Ahora lo ejecutamos poniendo un punto y un slash (seguidos), y seguido a esto el nombre del script, o sea:

./script.sh

Y bingo, ya lo tenemos 😀

Háganlo y verán…

Ahora un detalle importante, al final siempre deben poner “exit

Y bueno ya, nada más que agregar, solo que esperen los futuros tutoriales, aquí aprenderán bash JAJA.

Saludos

Comparte para difundir

Si te ha gustado nuestro contenido ahora puedes ayudar a difundirlo en las redes sociales de manera sencilla usando los siguientes botones:

Envía
Pinea
Print

55 comentarios

  1.   Oscar dijo

    Gracias amigo, siempre tuve curiosidad de como hacer un script.sh, ahora llegó la hora de aprender, estaré pendiente de los próximos tutos.

    1.    KZKG^Gaara <" Linux dijo

      Nah, un placer jeje 😀
      Ya verás… poco a poco iré poniendo tutoriales de Bash, a ver si alguien se embulla, aprende y todos nos hacemos mejores JAJA.

      Saludos

      1.    jose dijo

        Buenas necesitaria de tu ayuda si usted puede para hecharme una mano con unos script que tengo atrancados y los necesito hacer para una asignatura, me encantaria que se pusierse en contaacto con migo.
        Muchas gracias de antemano

  2.   pardo dijo

    Ah mortal !! buenisimo 😉

    1.    KZKG^Gaara <" Linux dijo

      Gracias 😀
      Recuerda que quejas o sugerencias siempre serán bien recibidas 😉

  3.   taregon dijo

    Me gusto el post, siempre que necesito el encabezado de un script me embarco a navevar solo para encontrar la linea: “#!/bin/bash” en la cabecera (soy muy olvidadizo). Ahora con este aporte podre tenerno anotado y solo copiar y pegar 😀

    1.    KZKG^Gaara <" Linux dijo

      Recuerda que es /bash y /sh … es diferente jaja, yo una vez estuve 2 días peleando con un script que no me no me funcionaba como debía, y era porque puse sh en vez de bash 😀

      Cualquier duda nos dices.
      Saludos

  4.   xfraniux dijo

    Jaajajajajaja y esto es lo más sencillo, tambien podrias abrir gedit o cualquier editor y copiar:

    #!/bin/bash
    # -*- ENCODING: UTF-8 -*-
    echo “<° Linux es lo mejor”
    exit

    Y después le damos permisos de ejecución….

    muy buen dato.. saludos

    1.    KZKG^Gaara <" Linux dijo

      jeje síp, se podría haber hecho eso así, pero no sé… pensé que resultaría más simple hacer copy/paste de dos líneas (que puede ser una en realidad) y ya, listo el script con permisos de ejecución y la cabecera 😀

    2.    Bertholdous dijo

      Hola ¿Los scripts siempre deben salvarse como un fichero .sh?

      En windows su similar serían los ficheros .bat . Y en cuanto a su escritura lucen un poco más sencillos.

  5.   Lucas Matias dijo

    Muy bueno che

  6.   arturo molina dijo

    Espero los próximos post y por el momento tomando nota.

    1.    KZKG^Gaara <" Linux dijo

      😉
      ¿alguna sugerencia, script que quieras que haga o algo así? 😀

  7.   Courage dijo

    ¿Este es el que no sabe programar? Aunque sea fácil es programar

    1.    KZKG^Gaara <" Linux dijo

      JAJAJA venga… ¿te embullas? … aprende un poco de Bash, verás lo genial que es, no necesitas saber programar ni mucho menos 😀

      ¿qué dices?

      1.    Courage dijo

        Ya lo haré, hoy no estoy para eso

  8.   Anónimo dijo

    De hecho, si van a crearse scripts regularmente, podría automatizarse la propia tarea también con un script como el sigiuente (solo se copia en $home/bin/ y se le dan permisos de ejecución)


    #!/bin/sh
    # nuevoscript
    if [ $# -eq 0]; then
    DEST=$HOME
    SNAME=script.sh
    elif [ $# -eq 1]; then
    DEST=.
    SNAME="$1"
    else
    echo "Parámetros incorrectos"
    exit -1
    fi
    echo -e '#!/bin/bash\n# -*- ENCODING: UTF-8 -*-' > "$DEST/$SNAME" && \
    chmod +x "$DEST/$SNAME"
    echo "Creado el script $DEST/$SNAME"
    exit 0

    De esta forma, si se ejecuta nuevoscript sin parámetros, crea $home/script.sh, pero si se ejecuta nuevoscript otroscript, crea ./otroscript

  9.   Ramses dijo

    hola amigo quisiera saber como puedo crear un autorun para una sdcard y que sea leido por mi telefono con s.o android y que este al ejecutarse me inicie abd.exe mas el comando bugreport > bugreport.txt

    1.    KZKG^Gaara dijo

      Ni idea amigo… nunca he usado Android.

  10.   Neo61 dijo

    Gracias gaara, queria encontrar un lugar donde se me enseñara algo de scripts, creo que en un mail te mencioné esto que de verdad es algo que necesito aprender. Me seguí los pasos que detallas y todo perfecto pero no se me ejecuta, me sale esto:

    ./script.sh: línea 5: EOF inesperado mientras se buscaba un `”‘ coincidente
    ./script.sh: línea 9: error sintáctico: no se esperaba el final del fichero

    Explícame cual es mi metedura de pata

    1.    KZKG^Gaara dijo

      Mi culpa, Wordpress cambia unos detalles, mira de nuevo el código que está en el post y ponlo así en tu script.
      Lo que sucede es que:

      “asd”

      No es lo mismo que:
      "asd"

  11.   Neo61 dijo

    No entiendo, sigo viéndolo igual. Donde está el cambio? Podrías explicarme mejor? Ahora al darle ejecutar sale esta linea:
    ./script.sh: línea 5: °: No existe el archivo o el directorio

    1.    KZKG^Gaara dijo

      Pásame el script que estás ejecutando, pon el code aquí: http://paste.desdelinux.net
      Mira de nuevo el post, es que había olvidado dar clic en el botón de Actualizar 😀

  12.   Neo61 dijo

    Hola socio:
    Te diré que estuve viendo el script conkyrc que hicistes para tu conky 2010 y si, es cierto, el símbolo del disco pertenece a una fuente llamada Poky pero que no viene por defecto en el libreOffice en Ubuntu 12.04, seria bueno, si tienes esta fuente, decirme de donde puedo descargarla (Algo un poco difícil la verdad), una cosa que me he dado cuenta es que cuando se ponen las letras de estos símbolos y en el sistema no existe la fuente entonces te pone la letra, no el símbolo, es lógico, ya me estoy haciendo una idea de como va funcionando todo, pero necesito a alguien que me explique las cosas para entenderlo mejor, todo lo que hago es por deducción y yo nunca he dado nada de programación, no fue informática lo que estudie y ademas, era otra época, tengo la informática como hobby y lo bueno es que estoy trabajando en una de sus ramas, todo lo que he aprendido ha sido de forma autodidacta, por eso mi interés en alguien que, aunque sea poco a poco, me guie. aquí esta también el script de mi conky y te explico lo que no me sale:

    Mira, Cuando trato de incertar otro hdd me sigue saliendo el mismo pues da el mismo valor de temperatura. No me sale en sistema las caracteristicas del CPU, sale (NULL) en negrita, cuando trato de insertar el calendario que pusistes en el Conky que tanias en el 2010 se desorganiza y ensancha la barra del conky. Mira a ver todas las mejoras que le puedas hacer. Me gusta con el ancho que tengo y que el calendario tuyo se adapte a ese ancho y que me salga todo lo que te dije que no muestra , ahí va:

    http://paste.desdelinux.net/4552

    –Pon el código en el paste nuestro, así los comentarios no son tan extensos–

  13.   GONZALO dijo

    la verdad q tu aporte es lamentable

  14.   edgar dijo

    Hola me has facilitado la vida con este script. Muchas gracias per me gustaria saber si puedes enviarme un correo donde lo describas ya que soy nevo en esto de la programacion.
    Gracias

    1.    KZKG^Gaara dijo

      Hola,
      Mejor no he podido describir/explicar estas líneas de código, ¿qué no has entendido para explicarte de otra forma?

      Igual si te quedas con dudas siempre puedes preguntar en nuestro foro: foro.desdelinux.net

      Saludos 😀

  15.   Cesar dijo

    Buen aporte pero podrias redondearmelo…necesito un script para un sai. Osea, que cuando el Sai se de cuenta de que esta con la bateria y tiene 20 minutos para apagarse, este le manda una señal a un aparato y ese tiene que ejecutar el script para que me apage unos servidores. No se si me he explicado bien… Valdria con poner en tu script “shutdown -h”??

    Gracias!!

  16.   Jesus israel perales martinez dijo

    Algo mas para agregar a mi carpeta de plantillas :B

  17.   edwar dijo

    alguien me podria ayudar nesecito un script para ubuntu que si el navegador chrome lo cerramos lo vuelva abrir

    gracias de antemano

  18.   edo dijo

    Necesito un script que con solo ejecutarlo me sobreescriba la informacion de un archivo con otro texto, alguien sabe como es?

    1.    edo dijo

      ya vi que arriba dicen como hacerlo

  19.   Dario dijo

    Muy bueno , para mis nietos excelente.
    Mil Graias. ” Asi como tu hubieran muchos jovenes, haciendo de profesores….seria maravilloso.

  20.   Román P.C. dijo

    Simple y funcional, a como debe ser.

    Gracias por compartir.

    Saludos.

  21.   Hernán Jaramillo dijo

    Gracias por su ayuda. me fue útil, muy buena explicación.

  22.   Vicene dijo

    Gracias me sirvió. Saludos

  23.   Gamerz dijo

    Sencillo y eficaz. Gran tutorial para los nuevos 🙂

  24.   Luis Carlos dijo

    Hola, sé muy poco de scrips y no sé si estoy confundiendo conceptos pero lo que intento hacer está en la siguiente pag web :
    http://beginlinux.com/blog/2010/03/iptables-with-network-card-aliases/

    El punto es que no entiendo muy bien como poder arrancar este código o si es que esto reemplaza el IPTABLES. Y si es que lo reemplaza como se pondría para que arranque automáticamente con el SO.

    Gracias

  25.   Cris dijo

    Buenísimo Gaara!!!

    Me puse a hacer la tarea tal como explicaste y funcionó!! Gracias por tomarte el tiempo y compartir con los ignorantes tus conocimientos para salir de las tinieblas.

    😉

  26.   leo dijo

    hola,tengo alguna duda para hacer un script que cree un usuario,me podria ayudar?

  27.   giovani dijo

    hola tengo una duda con un archivo.sh
    tienes alguna forma que
    te contacte para ver si lo estoy haciendo bien ??

    #!/system/bin/sh
    mount -o remount,rw /
    mkdir /mnt/local/Android/data/org.xbmc.xbmc/files/.xbmc
    ln -s /mnt/local/Android/data/org.xbmc.xbmc/files/.xbmc /.xbmc
    mount -o remount,ro /

    , lo ejecuto manuialmente en la terminal y si funciona, pero cuando quiero que el archivo se ejecute no quiere.

  28.   Luix dijo

    Este lo encontré en vivaolinux.com.br, es genial

    #!/bin/bash

    Basado en Gera.sh – Gera cabeçalho para scripts

    Escrito por: Sandro Marcell P. Barbosa (Boa Vista – Roraima)

    E-mail: sandro_marcell@yahoo.com.br

    Slackware GNU/Linux 10.1.0

    Ejemplo de uso: nombre_script mi_script

    Você também pode especificar a extensão, conforme o interpretador.

    Ex.: nome_script backup.sh para o interpretador ‘sh’

    ou nome_script backup.tcl para o interpretador ‘tcl’ e assim por diante!

    Definindo el interpretador puede (substituir por otro!):

    INTERPRETADOR=”#!/bin/sh”

    Contenido de la cabecera (altere conforme quiera!):

    INFO=”## ”
    CREADOR=”## Escrito por: ”
    EMAIL=”## E-mail: tu@correo.com
    DISTRO=”## ”

    Verificando si el usuario especificó el nombre del script:

    if [ $# -eq 0 ] ; then
    echo “>>> Uso: $(basename $0) ”
    exit
    fi
    if [ $# -ge 2 ] ; then
    echo “Nombre con espacios no son válidos!”
    exit
    fi

    El usuario puede escribir en el diretorio actual?

    if [ ! -w $PWD ] ; then
    echo “Sin permiso para escribir el directorio actual!”
    exit
    fi

    Y si existe otro script con el mismo nombre en el directorio actual?

    if [ -f $1 ] ; then
    echo “Ya existe un script con el mismo nombre en este directorio!”
    exit
    fi

    Cuerpo del script:

    (
    cat << FIN
    $INTERPRETADOR

    $INFO
    $CREADOR
    $EMAIL
    $DISTRO

    Ahora agregue comandos en las lineas subsiguientes =)

    Fecha de Creación de este script: $(date “+%a %d/%m/%Y”) a las $(date “+%T”)

    FIN
    ) > $1

    Configurando permiso de ejecución:

    if [ -f $1 ] ; then
    chmod +x $1 2> /dev/stdout
    echo “Script $1 creado y con permiso de ejecución!”
    fi

    Fecha de creación de este script: 29/01/2013 19:45:00

    1.    Debianistrowler dijo

      Estupendo, funciona a la perfección !!!

  29.   Vicente dijo

    Muy buen tutorial, sencillo y me ha servido de mucho, gracias

  30.   Calichi dijo

    Estimado KZKG yo soy novato , pero estoy interesado en aprender.
    Tienes otros scrip. O de repente en el lugar donde trabajo quiero abrir uno que esta compilado y no logro verlo.
    Alguna idea.

  31.   Calichi dijo

    Requiero ayuda con un script. Está compilado.

  32.   cool9 dijo

    entendí lo del bash, pero si quiero hacer un alias automatizado no me sale

  33.   angiesarita dijo

    Mil gracias por tu ayuda amigo.

    Me gustaría saber si me puedes hacer un favor grandisimo, necesito crear un script que me ayude a crear un .sum a una hora determinada pero no se como parametrizarla. Es posible que me puedas ayudar con algunas indicaciones. Gracias y estare atenta por si puedes colaborarme.

    Saludos

  34.   José dijo

    Hola buenas tardes, mira estoy realizado un trabajo en lex, entonces quisiera si me puedes ayudar con un Script, con el cual pueda correr el archivo de lex, el que genera lex (lex.yy.c) y el archivo de entrada de datos.

    Muchas gracias

  35.   Wilmer Ron dijo

    berro gracias doc!!! estoy nuevo en eso de los script muchas gracias saludos estare al pendiente con tus nuevos tuto!!!!

  36.   Karen Vega dijo

    Hola!!!

    Muchas gracias por tus aportaciones, estoy empezando a meterme en unix y pues es raro que alguien explique de forma tan sencilla este universo de código. Quisiera preguntarte si con tu procedimiento puedo hacer un script que me ayude a buscar n numero de archivos que viven en una misma ruta, y que me los copie a otra carpeta… alguien me dijo que puedo almacenar en un txt la ruta y el nombre de mis archivos, pero no me queda claro como hacerlo. Quedo atenta.

    Saludos!!

  37.   Eibar Amaya dijo

    Hola tengo un VPS pero necesito ayuda en alguna cosas orita mismo estoy interesado en como crear un script o algo para que me ejecute un auto backup de todo lo que este dentro de mi carpeta /root y que ese backup se ejecute cada 1 hora si me podrías ayudar en eso te agradecería demasiado en eso

    Te dejo mi facebook si me quieres ayudar necesito mucha ayuda 🙂

  38.   Jorge Rodriguez dijo

    me cree uno para hacer ping y monitorear ciertos equipos de red en la empresa
    pero lo hice sencillo

    touch red.sh && chmod +x red.sh
    echo ‘# –– ENCODING: UTF-8 –-‘ >> red.sh
    echo ‘ping 10.50.0.125 -w 5’ >> red.sh
    echo ‘ping 10.50.0.80 -w 5’ >>red.sh

    lo ejecute ./red.sh y fino

  39.   Guillermo dijo

    Estimados, requiero crear un scritt de instalación automática. Estoy dispuesto a pagar por un trabajo bien realizado. Quienes estén interesados, enviarme E-mail a carranzalh@gmail.com. Gracias

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

  1. Responsable de los datos: Miguel Ángel Gatón
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.