miércoles, 23 de abril de 2008

Cómo crear un Script Básico

A- Definición de script básico: Un script básico es un archivo creado con un editor de texto, que contiene un comando ( se puede hacer de forma similar con mas de un comando) ,y que puede ser ejecutado sin tener que escribir el comando en la terminal cada vez que queramos que se ejecute.

B- como crear un script básico de un solo comando:

1- Abrir el editor simple de textos (gedit), y copiar en él las siguientes lineas:

#!/bin/bash
echo descripción
echo ..dentro de 4 seg se inicia el script,o cierra la terminal
sleep 4s
cd /home/usuario
comando

2- guardar como: script-básico, en el directorio Templates
Ahora podremos acceder a este archivo en : Nautilus > botón secundario> Crear un documento. Nos creara una copia en el directorio del Usuario. Esto nos sirve para siempre que queramos crear un script, acceder a este archivo, y modificarlo a nuestro gusto.

3- Abrimos la copia que se nos ha creado en nuestro directorio de Usuario, y lo modificamos a nuestro gusto:
podemos modificar las siguientes lineas:
- Linea #!/bin/bash : no modificarla, esta línea es la que indica que lo siguiente es un script para ser ejecutado en una terminal
- Linea "echo descripción" : cambiamos la palabra descripción, por un mensaje descriptivo de lo que va a hacer el comando ( no quitar la palabra echo, que indica que lo que viene a continuación, en la misma linea, no es un comando )
- Linea "echo ..dentro de 4 seg se inicia el script,o cierra la terminal" nos informa de que en 4 segundos se iniciara el comando descrito en la linea anterior, y nos da la oportunidad de dejar que se ejecute, o de cerrar la terminal.
- Linea "sleep 4s": podemos modificar el tiempo que queramos que tarde en ejecutarse el comando
- Linea "cd /home/usuario": cambiamos usuario por el nombre de nuestro usuario
- Linea "comando": lo cambiamos por el comando que queramos que se ejecute.
( Para aprender sobre comandos ver las paginas que se indican mas abajo)
Guardamos las modificaciones del archivo, guardándolo como: ponemos un nombre descriptivo a nuestro script básico recién creado.

4- Lo seleccionamos, y en Propiedades:
- abrir con: añadimos abrir con terminal, por defecto (conservando la opción de abrir con el editor de textos, para poderlo modificar mas adelante si queremos)
- permisos: señalamos: permitir ejecutar el archivo como un programa ( o seleccionamos permisos de ejecución ) .
En Nautilus > Editar > Preferencias > Comportamiento > "archivos de textos ejecutables" > "preguntar cada vez".
Ahora al abrir nuestro archivo script, en la ventana que aparece seleccionamos: ejecutar en una terminal, y se abrirá la terminal, nos mostrara el mensaje descriptivo, esperara 4 segundos, y se ejecutara el comando que hayamos puesto.

C- Algunos ejemplos de scripts básicos:
(Todos los comandos básicos que he ido creando los he ido guardando en una carpeta del tipo:
/home/usuario/scripts )
------------------------------
#!/bin/bash
echo unir dos películas .avi
echo ,que deben estar ambas en el directorio home/usuario,
echo cuyo nombre son pelicula1.avi y pelicula2.avi
echo se creara un archivo película.avi en el mismo directorio
echo ..dentro de 4 seg se inicia el script,o ciérralo
sleep 4s
cd /home/usuario
avimerge -i pelicula1.avi pelicula2.avi -o película.avi

------------------------------
#!/bin/bash
echo crear una imagen .iso de un cdrom
echo ..dentro de 4 seg se inicia el script,o ciérralo
sleep 4s
sudo umount /dev/cdrom
cd /home/usuario
dd -if=/dev/cdrom of=micd.iso bs=1024

------------------------------
#!/bin/bash
echo unir 2 archivos de video .asf
echo ..dentro de 4 seg se inicia el script,o ciérralo
sleep 4s
cd /home/usuario
mencoder pelicula1.asf pelicula2.asf -ovc copy -oac copy -o película.asf
sleep 4s
echo pasar a formato avi
mencoder película.asf -ovc lavc lavcopts pass=2 -oac mp3lame -o película.avi
sleep 4s
echo pasar a formato mpg
ffmpeg -i película.avi -target pal-vcd película.mpg

------------------------------
D- paginas de información sobre comandos:
http://www.google.es/search?hl=es&client=firefox-a&rls=com.ubuntu%3Aes-ES%3Aofficial&hs=IwP&q=comandos+linux&btnG=Buscar&meta=lr%3Dlang_es

http://www.linuxguide.it/commands_list.php?Choose_Language:Spanish

En estas paginas aparece mucha información sobre los comandos que se usan en linux, que puede servirnos para, con la ayuda de nuestra imaginación, crear nuestros propios scripts básicos
=====

E- Páginas desde las que se pueden bajar scripts mucho mas sofisticados
, que nos pueden ser de gran utilidad:

http://g-scripts.sourceforge.net/

http://nautilus-scripts.javielinux.com/index.php

http://gnome-look.org/index.php?xsortmode=high&page=0&xcontentmode=188

se instalan en la carpeta /home/usuario/.gnome2/nautilus-scripts
se tiene acceso a ellos en Nautilus >botón secundario >menú Scripts
Estos scripts son mucho mas "sofisticados" que los que podemos crear con este mini manual de creación de scripts básicos.

Manual de programación Bash Shell en .pdf: http://thales.cica.es/rd/glinex/practicas-glinex05/manuales/bash/practica.pdf
------------------------------------


25 comentarios:

  1. Interesante la información. Como soy nuevo en estos temas, voy a validar y puede que les haga algunas consultas.

    ResponderEliminar
  2. De casualidad tengas algún manual por ahi . sobre el editor vi ... gracias.

    Contestación de Hatteras: Buscando en google he encontrado: http://158.227.70.131/asignaturas/KepaISO/eu/02_Fitxategiak/vi/vi.pdf

    ResponderEliminar
  3. [...] Aquí se explica como crear un script. Una vez creados los scripts se guardan en la carpeta /home/usuario/.gnome2/nautilus-scripts ,con el nombre de Album_2fotos.py y se tiene acceso a ellos en Nautilus >botón secundario >menú Scripts. [...]

    ResponderEliminar
  4. Hola Hatteras.
    En el primer script que pones de ejemplo aparece el comando "avimerge", (el de unir dos video avi).

    ¿Que paquete proporciona ese comando?

    He mirado en consola (aptitude search avimenge) y como paquete no existe. Tampoco lo tengo como comando.

    ResponderEliminar
  5. Manolox: el paquete que hay que instalar para tener avimerge es: transcode-utils ; ésta es su descripción en synaptic:
    Transcode is yet another Linux text-console utility to encode raw
    video/audio streams extracted from, for example, DVD or Digital Video
    sources to DivX;-) or OpenDivX AVI files.

    It's modular concept is intended to provide flexibility and easy user
    extensibility to include other video/audio codecs or filetypes.

    Decode/encode your favorite DVDs or vacation Digital Videos to single CD
    video files on a platform that supports shared libraries and threads with
    transcode's import helpers tcextract and tcdecode.

    This package contains the following utilities :

    o avifix : Fix header of AVI-file.
    o aviindex : Write and read text files describing the index of an AVI file.
    o avimerge : Merge several AVI-files into one.
    o avisplit : Split AVI-files into chunks of a maximum size.
    o avisync : Adjust audio synchronisation.

    Lo he buscado en synaptic: -> buscar -> buscar en...-> poniendo "descripción y nombre" y escribiendo "avimerge"

    ResponderEliminar
  6. Gracias. Ya lo instalé y probé satisfactoriamente.

    Siempre hago las busquedas con aptitude y supuestamente los resultados ofrecidos son los que corresponden a nombre o descripción. Pero en este caso pues no me salía nada y por eso no daba con ello.
    Ya veo que no es lo mismo buscar con aptitude que con synaptic.
    Saludos.

    ResponderEliminar
  7. Gracias!!!!

    Esta ha sido mi puerta de entrada al mundo de los scripts...y mira que he estado buscando por todos sitios como usar el comando "delay" (que es igual, creo, que el "sleep" no?)

    aunque todavia no lo entiendo bien como va esto, espero seguir aprendiendo.

    Gracias una vez mas.

    ResponderEliminar
  8. AnSnarkista: teclea en la terminal: man sleep
    y luego da a la tecla intro.
    Esa es la forma de aprender mas sobre un comando.

    ResponderEliminar
  9. lo del man me lo explicaron y la verdad es que me ahorra muchos post en foros (aunque a veces no lo entiendo y a lo mejor necesito mas posts). Pero lo que no sabia era como escribirlo para que funcionase.

    Podria haber escrito:

    sleep 13 (comando)

    o

    sleep 13 [comando]...

    era simplemente eso.

    ResponderEliminar
  10. Hola, Quiero realizar una aplicación en flash lite, que cuando se instale en el teléfono, solicite el nombre y luego lo guarde como archivo de texto. Esta solicitud se realizaría únicamente en la instalación de la aplicación. Después entra normalmente a la aplicación. Cómo puedo hacer esto?...se puede hacer?

    ResponderEliminar
  11. Hola! Gracias por el tutorial, me fue de gran ayuda. Solo quiero saber como puedo hacer para que se puedan ejecutar los mismos comandos pero al seleccionar el archivo, para no tener que cambiar el nombre a los archivos a los que le quiera aplicar algún comando.

    Gracias!

    ResponderEliminar
  12. Antolieztsu:
    Supongo que lo que quieres hacer es un script que se pueda usar desde nautilus: Los scripts para Nautilus se instalan en la carpeta /home/usuario/.gnome2/nautilus-scripts, y se tiene acceso a ellos en Nautilus >botón secundario >menú Scripts

    ResponderEliminar
  13. Hatteras:

    Gracias por tu respuesta, pero creo que no me expresé bien. Hice un post mas detallado en el link que te dejo dónde me expresé mejor y ya tengo algunas soluciones.

    http://www.ubuntu-es.org/node/138693#comment-392813

    Gracias!

    ResponderEliminar
  14. Necesito hacer un script que haga renovar la ip con darle doble click y no se nada de nada de esto! alguno me ayuda? gracias!

    ResponderEliminar
  15. Hola, soy nuevo en esto de los scripts , el motivo q comento en estas lineas es para saber si alguien me puede ayudar en un script para poder asi unir archivos *.djvu, espero se pueda ,con ello les agradeceria infinitamente.

    ResponderEliminar
  16. Hola, donde está la carpeta Templates, que no la encuentro. gracias

    ResponderEliminar
  17. Sento:
    Según la distro que uses el directorio Templates puede o no existir, en cuyo caso lo puedes crear tu mismo en tu carpeta de usuario, o tener otro nombre, por ejemplo Plantillas, o similar.

    ResponderEliminar
  18. Hola, no estoy buscando algún script que me ayude a hacer pruebas con programas de consola, un ejemplo muy tonto seria un programa en C que te pida tu nombre y te lo muestre por pantalla. Si quiero que el programa se ejecute varias veces con distintos nombres sin pasarlos como argumentos del programa, como podría hacerlo?? no se si me he explicado bien... muchas gracias

    ResponderEliminar
  19. Muy interesante y con una información completa

    ResponderEliminar
  20. I think this is one of the most significant info for me. And i'm glad reading your article. But should remark on few general things, The web site style is ideal, the articles is really excellent : D. Good job, cheers

    ResponderEliminar
  21. very nice writing of those artices

    ResponderEliminar
  22. ¿Como puedo crear un menú con script y luego insertarlo en una wiki?

    ResponderEliminar
  23. Hola Hatteras:

    En mi caso, en el punto 4, "Botón derecho > Propiedades > Abrir con > Añadir" no aparece la opción "Abrir con Terminal" sino "Pregunta de autoejecución" que es la opción que he añadido por defecto. Después, haciendo doble clic sobre el script, en la ventana que se abre, se puede elegir "Ejecutar en un Terminal".

    Uso Mint 17 (Mate) y desde 2008 habrán cambiado la nomenclatura de las opciones.

    ¡Gran post! Saludos,

    ResponderEliminar
  24. Hola Nicasio y blog.
    Aún no comprendo bien lo de scripts en Gnu/Linux, estoy leyendo.
    Pero me pregunto, cuando se ha escrito el contenido del script en el editor de texto, ¿con qué extensión se salvan posterior al nombre del fichero script?

    ResponderEliminar
  25. Miliiin OutZ¡ro: en linux no es importante ni necesario que se guarde con una extensión determinada. Puedes guardar el script sin extensión alguna, o con la extensión .sh , o incluso aunque lo guardes con la extensión txt como harías en windows, al tener el archivo permisos de ejecución se ejecutaría como un script.

    ResponderEliminar

A la vez que haces un comentario, por favor da una puntuación al tema: malo, normal, bueno o muy bueno.
Gracias.