md5sum을 사용하는 PV 및 Zenity 진행 표시줄

md5sum을 사용하는 PV 및 Zenity 진행 표시줄

md5sum나는 cli의 디렉터리 내에서 고유한 파일을 가져오고 이를 사용하여 pv진행률 표시줄을 보고 gtk에 스크립트를 작성하는 스크립트를 작성하려고 합니다 zenity.

글쎄, 내가 제대로 작동하지 않는 것들은 다음과 같습니다.

  1. zenity진전.

    나는 지난 12시간 동안 백분율을 파일에 역순으로 리디렉션 pv하고 루프에서 사용하여 진행률 표시줄을 이동시키기 위해 파일에 새 줄이 추가될 때까지 기다리는 방법을 시도해 왔습니다./tmp/zenity.prgtaccatsleep 1/tmp/zenity.prgzenity

    아이디어는Gnome 웹사이트 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과 같은 파일 관리자 없이 스크립트가 작동하도록 하는 것을 선호합니다.

관련 정보