md5sum
나는 cli의 디렉터리 내에서 고유한 파일을 가져오고 이를 사용하여 pv
진행률 표시줄을 보고 gtk에 스크립트를 작성하는 스크립트를 작성하려고 합니다 zenity
.
글쎄, 내가 제대로 작동하지 않는 것들은 다음과 같습니다.
zenity
진전.나는 지난 12시간 동안 백분율을 파일에 역순으로 리디렉션
pv
하고 루프에서 사용하여 진행률 표시줄을 이동시키기 위해 파일에 새 줄이 추가될 때까지 기다리는 방법을 시도해 왔습니다./tmp/zenity.prg
tac
cat
sleep 1
/tmp/zenity.prg
zenity
아이디어는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
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과 같은 파일 관리자 없이 스크립트가 작동하도록 하는 것을 선호합니다.