(SOLUCIONADO)Ayuda - Formato texto script bash zenity barra de progreso

Temas sobre programación ( php, c, sql, html, perl, python, ruby, java, bash, etc ) y recursos ( herramientas, frameworks, hosting, cms, etc )

Moderadores: akodo, maiku

Responder
blackman
Forista Nuevo
Forista Nuevo
Mensajes: 17
Registrado: Mié Oct 05, 2011 12:37 am
Contactar:

(SOLUCIONADO)Ayuda - Formato texto script bash zenity barra de progreso

Mensaje por blackman » Lun Abr 09, 2012 2:20 pm

Buenas

Gracias a todos los que quieran ayudarme.
Estoy liado con un proyecto que tenía pendiente y es el siguiente:
Crear una barra de progreso en zenity y adaptarla a un script del que ya dispongo.
El tema es que ya he conseguido crear la barra de progreso pero la información que me da quiero aparezca más elegante (colores, negritas, font ...)

La parte del script que quiero adaptar es la siguiente:

Código: Seleccionar todo

cat <<EOF
$PCT
#Archivos a Descomprimir: $FILES_ARRAY \n\
Nº de Archivos a Descomprimir: $NUMBER_FILES_ARRAY\n\
Nº de Archivo actual: $index \n\
Archivo Actual: $f \n\
Nº Total de Archivos: $nrar \n\
Descomprimiendo Archivo nº: $i \n\
Descomprimiendo: $file
EOF

Paso lo que tengo actualmente del script por si sirve de ayuda:

#!/bin/bash
# Script para descomprimir usando dialog

# Permite los nombres de ficheros tipo windows
IFS=

# Recorre los archivos pasados como parametros (FILES) y los incluye en un
# array llamado PARAMETERS
for FILES in $@
do
PARAMETERS=(${PARAMETERS[@]} $FILES)
done

# Muestra un progress bar con las siguientes opciones:
# --no-shadow = Sin sombra - Esto es porque se ve mal en ttys y xterm
# --colors = colores - Colorear los textos
# 25 80 - height width - Para ttys y xterm
#dialog --no-shadow --colors --title "Descomprimir" --backtitle "Descomprimiendo Archivos" --gauge "Descomprimiendo Archivos" "25" "80"< <(
zenity --progress --text="" --height=200 --width=600 --no-cancel< <(
# VARIABLES AL INICIO
# Obtiene el nombre de los archivos pasados como parametros y
# guardados en el array
FILES_ARRAY=${PARAMETERS[@]}
# Obtiene el nº de archivos en el array
NUMBER_FILES_ARRAY=${#PARAMETERS[*]};
# Contador usado en la variable PERCENTAGE. Se inicializa a 0
i=0
# Obtiene el nº de fichero que está siendo descomprimido
# Se inicializa a 0
let index=0

# Start Loop para obtener datos necesarios recorriendo el array
for f in ${PARAMETERS[@]}
do
# Se obtiene el nº de fichero a descomprimir
let index=$index+1
# Se obtiene el nº total de archivos empaquetados en los archivos
# comprimidos. Se usa unrar del archivo pasado como parámetro y
# teniendo en cuenta todos los volúmenes en caso de tenerlos.
# Se ordenan con sort y se borran los duplicados con -u. Por
# último se obtiene el nº de archivos empaquetados
nrar=`unrar vb -v $f | sort -u | wc -l`
# Se obtiene el nº total de archivos empaquetados en caso de haber más
# de un archivo pasado como parámetro
ntotal=$(( nrar+ntotal ))

# Se usa unrar del archivo pasado como parámetro y
# teniendo en cuenta todos los volúmenes en caso de tenerlos.
# Se ordenan con sort y se borran los duplicados con -u.
# Se recorre uno a uno los archivos y se realizan todos los comandos
# de abajo
unrar vb -v $f | sort -u | while read file
do
# Variable que obtiene el porcentage a usar por la barra de progreso
# Fórmula = 100 * (i +1) / nº total de archivos empaquetados
PCT=$(( 100*(++i)/nrar ))

# Se muestran los datos de progreso en pantalla
cat <<EOF
$PCT
#Archivos a Descomprimir: $FILES_ARRAY \n\
Nº de Archivos a Descomprimir: $NUMBER_FILES_ARRAY\n\
Nº de Archivo actual: $index \n\
Archivo Actual: $f \n\
Nº Total de Archivos: $nrar \n\
Descomprimiendo Archivo nº: $i \n\
Descomprimiendo: $file
EOF

# Sin salir del loop se descomprimen los archivos
# Se opta por descomprimir los archivos uno a uno teniendo en cuenta
# el nombre del archivo a descomprimir $f y el nombre del archivo
# empaquetado $file
unrar x -y $f $file /home/jones/prueba &>/dev/null

# Fin loop for
done
# Fin loop while
done

# Se muestra el estado finalizado del proceso
cat <<EOF
XXX
\Z1Proceso Finalizado.
\n\Z4Resumen:
\n\Z1Archivos Descomprimidos:\Z4$NUMBER_FILES_ARRAY\n
\Z4$FILES_ARRAY
\Z1Nº Total de Archivos Descomprimidos: \Z4$ntotal\n\n\n\n\n
Presionar \Z1[Enter] \Z4para finalizar
XXX
EOF
)
Última edición por blackman el Lun Abr 30, 2012 10:45 pm, editado 2 veces en total.
http://serinto.com - Linux y Drupal para todos
Snark1994
Forista Menor
Forista Menor
Mensajes: 76
Registrado: Sab Abr 02, 2011 11:43 pm

Re: Ayuda - Formato texto script bash zenity barra de progreso

Mensaje por Snark1994 » Mar Abr 10, 2012 6:06 pm

No comprendo totalmente su script (sobre todo no sé lo que contiene "$PCT") pero si quiere hacer una barra de progreso, se puede hacer:

Código: Seleccionar todo

echo -n "["
i=0
while [ $i -lt $index]
do
    echo -n "|";
    i=$[$i+1]
done
while [ $i -lt $nrar ]
do
    echo -n " ";
    i=$[$i+1]
done
echo -ne "]\r"
Este representa la proporción de $index a $nrar - se puede cambiarlo para su meta exacta.

Espero que ayude a usted :)
No soy hispanohablante - si he cometido un error con mi español, dime por favor :) me gustaría mejorarlo
blackman
Forista Nuevo
Forista Nuevo
Mensajes: 17
Registrado: Mié Oct 05, 2011 12:37 am
Contactar:

Re: Ayuda - Formato texto script bash zenity barra de progreso

Mensaje por blackman » Mar Abr 10, 2012 9:47 pm

Snark1994 escribió:No comprendo totalmente su script (sobre todo no sé lo que contiene "$PCT") pero si quiere hacer una barra de progreso, se puede hacer:

Código: Seleccionar todo

echo -n "["
i=0
while [ $i -lt $index]
do
    echo -n "|";
    i=$[$i+1]
done
while [ $i -lt $nrar ]
do
    echo -n " ";
    i=$[$i+1]
done
echo -ne "]\r"
Este representa la proporción de $index a $nrar - se puede cambiarlo para su meta exacta.

Espero que ayude a usted :)
Hola
Gracias por responder
No me preocupa ni $nrar ni $index

Lo que quiero es colorear la salida del texto de información en zenity.
Subo un par de pantallazos para que veas lo que quiero.
Quiero en Zenity hacer algo parecido a lo que se puede hacer con Dialog. Es decir, colorear el texto.
Adjuntos
imagenes.rar
Salida Dialog y Zenity
(53.82 KiB) Descargado 33 veces
http://serinto.com - Linux y Drupal para todos
Snark1994
Forista Menor
Forista Menor
Mensajes: 76
Registrado: Sab Abr 02, 2011 11:43 pm

Re: Ayuda - Formato texto script bash zenity barra de progreso

Mensaje por Snark1994 » Jue Abr 12, 2012 2:19 pm

Ahhhh. Lo siento, te malinterpreté totalmente. Y no vi "zenity" en su script.

El único lugar donde se menciona el color en Zenity (que he encontrado) es aquí http://doc.ubuntu-fr.org/zenity#coloration_du_texte y ¡es en francés!

Pero lo que quiere, pienso, es:

Código: Seleccionar todo

cat <<EOF
$PCT
#<span color="red">Archivos a Descomprimir:</span><span color="lightblue"> $FILES_ARRAY</span> \n\
<span color="red">Nº de Archivos a Descomprimir:</span><span color="lightblue"> $NUMBER_FILES_ARRAY</span>\n\

...

<span color="red">Descomprimiendo:</span><span color="lightblue"> $file</span>
EOF
(También, note que es más facil leer su código si utilice (CODE) y (/CODE) rodeandolo. Pero utilice corchetes, no paréntesis)
No soy hispanohablante - si he cometido un error con mi español, dime por favor :) me gustaría mejorarlo
blackman
Forista Nuevo
Forista Nuevo
Mensajes: 17
Registrado: Mié Oct 05, 2011 12:37 am
Contactar:

Re: Ayuda - Formato texto script bash zenity barra de progreso

Mensaje por blackman » Jue Abr 12, 2012 10:27 pm

Hola
La web que me indicas ya la conocía y parecía ser la solución pero no me funciona.
Mi versión de zenity es: zenity --version =3.2.0

El resultado es que #<span color="red">Archivos a Descomprimir:</span><span color="lightblue"> $FILES_ARRAY</span> \n\ lo trata como texto sin tener en cuenta las etiquetas.

No se me ocurre ninguna otra solución.
http://serinto.com - Linux y Drupal para todos
Snark1994
Forista Menor
Forista Menor
Mensajes: 76
Registrado: Sab Abr 02, 2011 11:43 pm

Re: Ayuda - Formato texto script bash zenity barra de progreso

Mensaje por Snark1994 » Vie Abr 13, 2012 2:43 am

Si ejecuta en el orden (¿es una palabra buena?)

Código: Seleccionar todo

zenity --info --text "<span color=\"red\">red</span> - Normal"
¿que pasa?

Tengo una caja de diálogo con texto colorado. Si funciona correctamente, quizas es el "cat << EOF .... EOF" que se debe culpar... Ahora salgo, pero más tarde experimenté
Editado: Más tarde: Hm. ¿Esta seguro que su código es correcto? Para mi, no corre. Sin embargo, lo siguente funciona para mi:

Código: Seleccionar todo

(for i in $(seq 0 10 100); do
    echo $i
    echo "<span color=\"red\">Rojo</span>"
done) | zenity --progress
pero tengo el mismo problema como tu - dice literalmente '<span color="red">Rojo</span>'. Lo siento, pienso que no es posible con zenity.
No soy hispanohablante - si he cometido un error con mi español, dime por favor :) me gustaría mejorarlo
Responder
  • Similar Topics
    Respuestas
    Vistas
    Último mensaje