Problema con script para calcular el MD5

Hola, actualmente uso el escritorio MATE y venía usando un script muy simple, que funciona con el botón derecho del ratón para comprobar el MD5.
El problema que tiene este script es que si el fichero a comprobar tiene espacios no funciona.
#!/bin/bash

if [ $# = 0 ] ; then exit ; fi
if [ $? -eq 0 ] ; then
    md5=`md5sum $1`
    zenity --info --text $md5
fi

Tengo este otro que si funciona perfectamente con los ficheros con nombres con espacios, además me permite comprobar mas de un fichero a la vez.

#!/bin/bash

#make a standard zenity title; intentionally unquoted throughout
title="--title MD5checksums"

#feed answers into zentiy list; but also store answer back from the list
checksum=$( (

#make sure list has time to show up below progress bar
sleep 0.5

#zenity progress bar hack; echo is required to begin pulsating
while echo; do sleep 10; done |
    zenity --progress --pulsate $title \
        --text "Calculating. May take some time..." \
        --width 320 &
progressbar="$!"

for file in "$@"
do
    #only process normal files
    if [ -f "$file" ]; then
        md5sum "$file" | cut -c-32
        basename "$file"
    fi
done
kill "$progressbar"
) | zenity --list $title --text "" \
    --height 360 --width 420 \
    --column "MD5" --column "File"
)

#display answer if one was picked; maybe good for copying and pasting
if [ -n "$checksum" ]; then
    zenity --info $title --text "$checksum"
fi

#End of File

Pero tiene el inconveniente de que la ventana que muestra no hay forma de poder copiar nada puesto que el botón derecho del ratón queda deshabilitado cuando pones el puntero encima.

Existe algún otro script que se pueda hacer copy+paste de los resultados?
wenasss

la diferencia es que en el primero coges el nomre a partir de la linea de comandos y el segundo busca realmente el ficherro


if [ $# = 0 ] ; then exit ; fi
if [ $? -eq 0 ] ; then
md5=`md5sum $1`
zenity --info --text $md5
fi
----------------------------------------------
for file in "$@"
do
#only process normal files
if [ -f "$file" ]; then
md5sum "$file" | cut -c-32
basename "$file"
fi
done


prueba cambiando :

if [ $# = 0 ] ; then exit ; fi
if [ $? -eq 0 ] ; then
md5='md5sum "$*"' #<-- asi le pasas todos los parametros y no solo el primero ya que la separacion entre parametros es precisamente el espacio. (o por @)
zenity --info --text $md5
fi
1 respuesta