md5sumを使用したPVおよびZenityプログレスバー

md5sumを使用したPVおよびZenityプログレスバー

md5sum私はcliのディレクトリ内で一意のファイルをインポートし、それを使用して進行状況バーを表示し、pvgtkにスクリプトを作成するスクリプトを作成しようとしていますzenity

まあ、私が正しく動作しないものは次のとおりです。

  1. zenity進展。

    私は過去12時間にパーセントをファイルに逆順にリダイレクトpvし、ループで使用して進行状況バーを移動するためにファイルに新しい行が追加されるのを待つ方法を試みました。/tmp/zenity.prgtaccatsleep 1/tmp/zenity.prgzenity

    アイデアはGnome WebサイトZenityを使用した例:

     (
     echo "10" ; sleep 1
     echo "# Updating mail logs" ; sleep 1
     echo "20" ; sleep 1
     echo "# Resetting cron jobs" ; sleep 1
     echo "50" ; sleep 1
     echo "This line will just be ignored" ; sleep 1
     echo "75" ; sleep 1
     echo "# Rebooting system" ; sleep 1
     echo "100" ; sleep 1
     ) |
     zenity --progress \
     --title="Update System Logs" \
     --text="Scanning mail logs..." \
     --percentage=0
    
     if [ "$?" = -1 ] ; then
             zenity --error \
             --text="Update canceled."
     fi
    
  2. xfceで見つけたコードの一部(もし私がそれを見逃していなかったがコードのこの部分が私にうまくいかなかった場合)は複数のファイルのためのものです。

    まあ、私の現在のコードは次のとおりです。

     #!/usr/bin/env bash
    
     echo '
     Autor ----------------> Inukaze ( Venezuela )
     Sitio ----------------> https://goo.gl/ij6WqW
     Correo-E -------------> [email protected]
     Licencia -------------> GPL 2'
    
     #Variables Principales
     Archivo="$@"
     Cantidad=$(ls "$Archivo" | wc | awk '{print $1}')
    
     #Determinar Cantidad de Objetos
     if [[ $Cantidad -eq 1 ]]; then
     Cantidad=$Cantidad
     fi
    
     if [[ $Cantidad -gt 1 ]]; then
     Cantidad=$(ls "$PWD" | wc | awk '{print $1}')
     fi
    
     hash zenity 2>/dev/null
     if [[ $? != 0 ]]; then
     echo "Zenity no esta instalado!"
     echo "Por favor instale Zenity"
     exit 1
     fi
    
     if [[ "$Cantidad" = "0" ]]; then
     zenity --error --text="Nada para calcular!"
     fi
    
     if [[ $Cantidad -eq 1 ]]; then
         (for Unico in "$Archivo"; do
         pv -- "$Unico" | 
         md5sum | 
         tee >(cut -d ' ' -f1 > /tmp/sumd5) |
         sed 's/-$//' |
         printf '%s%s\n' "$(cat -)" "$Unico"
         sed -n 'H; 1h; $!d; g; s/\\/\\\\/g; s/\n/\\n/g; t x; p; q; :x s/^/\\/; p;'
         done) &
    
         #Zenity
         (while [ -f /tmp/zenity.prg ]
         do
             cat "/tmp/zenity.prg" ; sleep 1
         done) | zenity --progress --title="Suma de Integridad MD5" --text="Calculando MD5 de:\n${Archivo##*/}" --percentage=0 --auto-close 2>&1 |
         #Zenity
    
         if [ "$?" = -1 ] ; then
                 zenity --error --text="Proceso Cancelado por el Usuario."
                 rm -rf /tmp/sumd5
                 rm -rf /tmp/zenity.prg
                 exit 0
         fi
    
         sumd5=`cat /tmp/sumd5`
         zenity --info --title="Suma de Integridad MD5" --text="$sumd5\n\nArchivo:\n${Archivo##*/}"
         rm -rf /tmp/sumd5
         rm -rf /tmp/zenity.prg
         exit 0
     fi
    
     if [[ $Cantidad -gt 1 ]]; then
     if zenity --question --title="MD5sum" \
                 --text="Seleccion Multiple.\nEsto creara/reemplazara un archivo llamado <b>multiples.md5</b>\nen el directorio donde estan estos archivos.\n¿Desea Continuar?" \
                 --no-wrap
         then
             > multiples.md5
             i=0
             TOTAL="$Cuenta"
    
             while read -r line || [[ -n "$line" ]]; do
                     ((++i))
                     PERCENT=$(($i*100/${TOTAL}))
                     echo "#md5sum $i/$TOTAL: $line"
                     md5sum "${line}" >> multiples.md5 2>&1
                     echo "$PERCENT"
             done < "$Archivo" | zenity --progress --title="MD5" --auto-close
    
             exo-open 'multiples.md5' || zenity --text-info --title="Sumas de Integridad : MD5" < multiples.md5
     fi
     fi
    

スクリプトの主なアイデアはコンテキストメニューを使用して作業することですが、Thunar、Caja、Nautilus、Dolphinなどのファイルマネージャなしでスクリプトを操作することをお勧めします。

ベストアンサー1

おすすめ記事