Portál AbcLinuxu, 10. května 2025 07:15
Ahoj, potřeboval bych zkopírovat (10GB) soubor a průběh kopírováni zobrazit pomocí progressbaru v aplikaci kdialog. Jenže vůbec nevím jak to kopírováni s kdialogem provázat. Po třech hodinách hledání jsem našel jen jak pracovat s tím progressbarem a to je asi takto:
dbusRef=`kdialog --progressbar "Initializing" 4`
qdbus $dbusRef Set "" value 1
qdbus $dbusRef setLabelText "Thinking really hard"
sleep 2
qdbus $dbusRef Set "" value 2
sleep 2
qdbus $dbusRef setLabelText "Thinking some more"
qdbus $dbusRef Set "" value 3
sleep 2
qdbus $dbusRef Set "" value 4
sleep 2
qdbus $dbusRef close
#!/bin/bash PIPE=.progress if [ ! -p $PIPE ] then mkfifo $PIPE fi rsync -av --progress .sdata /tmp/ > $PIPE & RSYNCPID=$! cat $PIPE | awk '{RS="\r"; sub("%", ""); print $2; fflush();}' | zenity --progress --title "Kopírování" \ --text="Čekejte..." --percentage=0 if [ "$?" -ne 0 ] then kill $RSYNCPID fiUprav si proměnnou PIPE a parametry zenity (texty)...
Ahoj, tvá odpověď mě samozřejmě zajímala a děkuji za ni, jenže minule jsi poslal jednořádkový script "zenity --progress". Hned jsem si šel hledat info o zenity, zkoušel s tím pracovat, narazil na kdialog a zkoušel i ten. Problém byl ten, že jsem zenity/kdialog nedokázal propojit s kopírováním. Strávil jsem nad tím poměrně dlouhou dobu a řekl jsem si, že bych dotaz mohl položit trochu jinak / lépe. Právě sedím a píšu prográmek v Qt, který by to udělal a najednou odpověď.
Děkuji moc, přesně tohle jsem od začátku chtěl. Ještě to zkusím upravit pro použití s kdialogem, ale pokud to nevyjde tak nevadí.
Měl bych k tomu skriptíku ale jednu otázku. Aby mi to kopírovalo fileA a vytvořilo fileB upravil jsem řádek rsync -av --progress fileA fileB > $PIPE &
. Jakou roli v tom má hodnota proměnné PIPE nastavená na začátku ? Nechal jsem totiž .progress a funguje to.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.