Crear un ejecutable en bash [SOLUCIONADO]

Comentarios sobre el buen funcionamiento del sistema y como personalizarlo a tus necesidades.

Moderadores: doc, mcun

Responder
Avatar de Usuario
nestoriano
Forista Nuevo
Forista Nuevo
Mensajes: 11
Registrado: Sab Mar 01, 2008 8:00 am

Crear un ejecutable en bash [SOLUCIONADO]

Mensaje por nestoriano »

Hola necesito una ayuda para hacer mas comodo una tarea. El comando en cuestion es este:

pk2cmd -P -M -F *.hex

Programo microcontroladores PIC y uso ese comando para grabar mi programa. Para ello abro la carpeta donde esta el archivo .hex (el firnware) y ejecuto en consola pk2cmd -P -M -F *.hex

El problema es cuando existe mas de un archivo .hex en el mismo directorio, se me ocurrio crear un ejecutable en /usr/bin/grabar-pic con el contenido:

------------------
pk2cmd -P -M -F
------------------

Mi idea es grabar con doble click el .hex asociandolo con el ejecutable "grabar-pic" pero no funciona. Me dice que no encuentra el .hex.

Uso LMDE con MATE.

Gracias.
Última edición por nestoriano el Jue May 17, 2012 12:23 am, editado 1 vez en total.

Avatar de Usuario
neurus
Forista Legendario
Forista Legendario
Mensajes: 1829
Registrado: Dom Oct 10, 2004 7:00 am

Re: Crear un ejecutable en bash

Mensaje por neurus »

Tuve que buscar qué cuernos es MATE. Aparentemente, un fork de Gnome 2, que tiene nombres pintorescos como "Caja" para Nautilus, "Ojo de mate" para Gnome-search, etc. De todos modos, no es que sean mucho mejores los nombres de Gnome...(o de Kde, ya que estamos).

En fin, la cuestión es cómo hace el manejador de archivos para enviar un archivo a un script. Yo uso Rox-filer. Tengo la opción de agregar un script que funciona en el ítem "Enviar a".
Algo parecido en PCManFM. Abrir con-comando personalizado. Selecciono el script, que debe estar en el $PATH (/usr/local/bin en este caso), y listo. No sé cómo lo hace Nautilus.

En cuanto al script, sería algo así:

Código: Seleccionar todo

#!/bin/bash
#Esto es hay algún espacio en blanco en el nombre de archivo o directorio
IFS=$'\x0A'$'\x0D'

archivo=`echo $1`
pk2cmd -P -M -F "$archivo"
exit
O directamente:

Código: Seleccionar todo

#!/bin/bash
IFS=$'\x0A'$'\x0D'
pk2cmd -P -M -F "$1"
exit


A eso se le daría permisos de ejecución (chmod u+x), y debería guardárselo en el algún lugar que esté configurado como path de ejecutables (/usr/local/bin es la primera opción).

El resto, supongo que depende en buena medida del File-Manager que el script funcione o no. Esto, suponiendo que quieres hacerlo con un click. Desde terminal es más simple, utilizando parámetros, del tipo: script archivo.

Avatar de Usuario
nestoriano
Forista Nuevo
Forista Nuevo
Mensajes: 11
Registrado: Sab Mar 01, 2008 8:00 am

Re: Crear un ejecutable en bash

Mensaje por nestoriano »

Hola neurus gracias por responder. El primer script me funcionó perfectamente. Lo dejé en /usr/bin y le di permisos con chmod +x. Para dejarlo como ejecutable por defecto lo hice desde propiedad del archivo, abrir con....

Hace como 5 meses que uso el escritorio MATE pero sigo escribiendo en consola sudo gedit... gksu nautilus.... El comando correcto es "sudo pluma" y "gksu caja"... 5 meses y no me acostumbro todavia.

Aca en Argentina está haciendo frío asi que una mano la tengo guardado en el bolsillo y la otra en el mouse. Gracias a este script puedo programar los micros con una sola mano :D

El tema ya se puede dar por solucionado. Gracias!

Avatar de Usuario
AlexDragón
Forista Nuevo
Forista Nuevo
Mensajes: 20
Registrado: Lun Abr 30, 2012 1:42 pm

Re: Crear un ejecutable en bash

Mensaje por AlexDragón »

Si se ha quedado solucionado, edita tu post y en el "asunto" añade SOLUCIONADO, si no los moderadores se enfadarán y entrarán en tu ordenador para hacerte un "visudo"...y todo lo demás es historia :D

Graaaacias.
...al principio sólo era la línea de comandos...

Avatar de Usuario
neurus
Forista Legendario
Forista Legendario
Mensajes: 1829
Registrado: Dom Oct 10, 2004 7:00 am

Re: Crear un ejecutable en bash

Mensaje por neurus »

nestoriano escribió: Hace como 5 meses que uso el escritorio MATE pero sigo escribiendo en consola sudo gedit... gksu nautilus.... El comando correcto es "sudo pluma" y "gksu caja"... 5 meses y no me acostumbro todavia.
Eso tiene una solución tediosa, pero simple: entrar como root al directorio /usr/bin/ y empezar a enlazar:

ln -s caja nautilus
ln -s pluma gedit (¡Pluma! ¡Están locos!)
etc.

Avatar de Usuario
CharlieBros
Forista Mayor
Forista Mayor
Mensajes: 691
Registrado: Lun Sep 26, 2011 2:01 am
Ubicación: Mexico, DF

Re: Crear un ejecutable en bash [SOLUCIONADO]

Mensaje por CharlieBros »

Lo curioso es que MATE es un fork argentino (fork argentino de un proyecto mexicano, que mescolanza...).
No sabia que se podian hacer enlaces simbolicos asi, lo probare.
Saludos.
Charlie

Avatar de Usuario
nestoriano
Forista Nuevo
Forista Nuevo
Mensajes: 11
Registrado: Sab Mar 01, 2008 8:00 am

Re: Crear un ejecutable en bash [SOLUCIONADO]

Mensaje por nestoriano »

Hola vuelvo para hacer una consulta mas. He creado el ejecutable que habia pedido y queria saber si es posible que tras ejecutar el comando desde otro lugar que no sea la consola, que se abra la terminal mostrandome el progreso. Cuando ejecuto el comando desde la consola me aparece esto.

Código: Seleccionar todo

mint13@pc ~/Dropbox $ grabar-pic sec.hex 
Auto-Detect: Found part PIC12F675.

PICkit 2 Program Report
9-7-2012, 20:25:28
Device Type: PIC12F675

Program Succeeded.

Operation Succeeded
mint13@pc ~/Dropbox $ 
Ya tengo acomodado mi entorno para ejecutar el archivo "sec.hex" con el comando "grabar-pic" y funciona pero no puedo ver el progreso que la consola si me muestra.

El contenido del ejecutable es

Código: Seleccionar todo

#!/bin/bash
#Esto es hay algún espacio en blanco en el nombre de archivo o directorio
IFS=$'\x0A'$'\x0D'

archivo=`echo $1`
pk2cmd -P -M -F"$archivo"
exit
Lo que quiero es que tras ejecutar el comando con doble click u otra forma, me abra una ventana o terminal y con resultado durante un tiempo y se cierre solo.

Gracias.

Avatar de Usuario
neurus
Forista Legendario
Forista Legendario
Mensajes: 1829
Registrado: Dom Oct 10, 2004 7:00 am

Re: Crear un ejecutable en bash [SOLUCIONADO]

Mensaje por neurus »

Supongo que bastará asociar los archivos .hex al comando gnome-terminal -e grabar-pic.

Y, si no, queda hacerlo con zenity.

El comando sería algo así:

Código: Seleccionar todo

zenity --timeout=2 --info --text="`pk2cmd -P -M -F $archivo`"
Una tercera posibilidad, tal vez más prolija, es incorporar una función:

Código: Seleccionar todo

function grabar(){
 pk2cmd -P -M -F "$archivo"
}

zenity --timeout=2 --info --text="`grabar`"

Avatar de Usuario
nestoriano
Forista Nuevo
Forista Nuevo
Mensajes: 11
Registrado: Sab Mar 01, 2008 8:00 am

Re: Crear un ejecutable en bash [SOLUCIONADO]

Mensaje por nestoriano »

Gracias por el comando, funciona tal como lo quería.
Muchas gracias.

Avatar de Usuario
neurus
Forista Legendario
Forista Legendario
Mensajes: 1829
Registrado: Dom Oct 10, 2004 7:00 am

Re: Crear un ejecutable en bash [SOLUCIONADO]

Mensaje por neurus »

¿Cuál comando?

Por otra parte, si modificas el script dejará de funcionar en consola y funcionará sólo en GUI. A menos que armes un script para cada cosa o, más elegante, determines si el script fue llamado desde GUI o desde terminal.

Para saberlo: cat /proc/$PPID/cmdline . Luego es cuestión de usar un condicional, y ejecutar una cosa u otra.

Avatar de Usuario
nestoriano
Forista Nuevo
Forista Nuevo
Mensajes: 11
Registrado: Sab Mar 01, 2008 8:00 am

Re: Crear un ejecutable en bash [SOLUCIONADO]

Mensaje por nestoriano »

Hice la modificacion al ejecutable /usr/local/bin/grabar-pic con el contenido

Código: Seleccionar todo

#!/bin/bash
#Esto es hay algún espacio en blanco en el nombre de archivo o directorio
IFS=$'\x0A'$'\x0D'

archivo=`echo $1`
zenity --timeout=2 --info --text="`pk2cmd -P -M -F$archivo`"
exit
Para ejecutar de forma grafica uso el ejecutable grabar-pic y para ejecutar desde consola usare el comando original pk2cmd. Funciona todo de diez.

Responder
  • Temas similares
    Respuestas
    Vistas
    Último mensaje