[programmazione] finestre di dialogo

18 risposte [Ultimo messaggio]
Ritratto di doc_pluto
doc_pluto
(Guru)
Offline
Guru
Iscritto: 08/02/2007
Messaggi: 871

scusate, è possibile attraverso l'uso dell'operatore >> aggiungere il testo all'inizio del file attraverso magari una sua opzione??

edit: cosa c'è di sbagliato in questo script??

#!/bin/bash
 
# root password & file name
PASSWORD=`zenity --entry --text="Enter Root's Password" --hide-text --title="Termomether: Autentication"`
FILE=`zenity --entry --text="Enter File Name" --title="Termomether: File Name"`
 
# creating saving path
NOMEFILE=$HOME/$FILE
zenity --info --text="Il file verrà salvato in $NOMEFILE." --title="Termomether: Saving Path"
 
# reading cicle
RISP='0'
while [ $RISP = '0' ]; do
	echo -e "Rilevazione alle: $(date +%H.%M) del $(date +%y.%m.%d).\nTemperatura Scheda Madre:" >> $NOMEFILE
	sensors | grep °C >> $NOMEFILE
	echo "Temperatura Hard Disk:" >> $NOMEFILE
	(echo $PASSWORD | sudo -S hddtemp /dev/sda && echo $PASSWORD | sudo -S hddtemp /dev/sdb) >> $NOMEFILE
	echo " " >> $NOMEFILE
	RISP=`zenity --text-info --title="Termomether" --filename="$NOMEFILE" --width=500 --height=700 --title="Temperature rilevate" --ok-label="Ripeti" --cancel-label="Chiudi"`
done

chiudendo l'ultima finestra di dialogo premendo "Ripeti" corrispondente al pulsante OK, alla variabile RISP dovrebbe venire assegnato il valore '0', ed invece non avviene perchè l'operazione non si ripete.

Hardware: MB:P5E3_Deluxe - CPU:Core2Duo E8400 3.0GHz - RAM:Kingstone_2Gb_DDR3 - Video:GeForce9600GT/PCI/SSE2 - HD: 2x WDCaviarBlue 1TB
--------------------------------
Software: SO:openSuSE 12.1 - ARCH:64bit - DE:Gnome3 - DriverVideo:Ufficiali Nvidia

Ritratto di aksaf
aksaf
(Guru)
Offline
Guru
Iscritto: 08/03/2011
Messaggi: 957

doc_pluto ha scritto:

scusate, è possibile attraverso l'uso dell'operatore >> aggiungere il testo all'inizio del file attraverso magari una sua opzione??


puoi usare sed, per esempio.
doc_pluto ha scritto:


edit: cosa c'è di sbagliato in questo script??

#!/bin/bash
 
# root password & file name
PASSWORD=`zenity --entry --text="Enter Root's Password" --hide-text --title="Termomether: Autentication"`
FILE=`zenity --entry --text="Enter File Name" --title="Termomether: File Name"`
 
# creating saving path
NOMEFILE=$HOME/$FILE
zenity --info --text="Il file verrà salvato in $NOMEFILE." --title="Termomether: Saving Path"
 
# reading cicle
RISP='0'
while [ $RISP = '0' ]; do
	echo -e "Rilevazione alle: $(date +%H.%M) del $(date +%y.%m.%d).\nTemperatura Scheda Madre:" >> $NOMEFILE
	sensors | grep °C >> $NOMEFILE
	echo "Temperatura Hard Disk:" >> $NOMEFILE
	(echo $PASSWORD | sudo -S hddtemp /dev/sda && echo $PASSWORD | sudo -S hddtemp /dev/sdb) >> $NOMEFILE
	echo " " >> $NOMEFILE
	RISP=`zenity --text-info --title="Termomether" --filename="$NOMEFILE" --width=500 --height=700 --title="Temperature rilevate" --ok-label="Ripeti" --cancel-label="Chiudi"`
done

chiudendo l'ultima finestra di dialogo premendo "Ripeti" corrispondente al pulsante OK, alla variabile RISP dovrebbe venire assegnato il valore '0', ed invece non avviene perchè l'operazione non si ripete.


Il valore numerico restituito da un comando è diverso dal suo output (quello che stampa a video, per esempio), prova con:
zenity --text-info --title="Termomether" --filename=<(echo 'hi') --width=500 --height=700 --title="Temperature rilevate" --ok-label="Ripeti" --cancel-label="Chiudi"
RISP=$?

Ritratto di doc_pluto
doc_pluto
(Guru)
Offline
Guru
Iscritto: 08/02/2007
Messaggi: 871

aksaf ha scritto:


Il valore numerico restituito da un comando è diverso dal suo output (quello che stampa a video, per esempio), prova con:

zenity --text-info --title="Termomether" --filename=<(echo 'hi') --width=500 --height=700 --title="Temperature rilevate" --ok-label="Ripeti" --cancel-label="Chiudi"
RISP=$?

non dovrebbe essere la stessa cosa?
http://library.gnome.org/users/zenity/stable/zenity-usage.html.en#zenity-usage-exitcodes
o intendo male io il senso di valore restituitoe output?

Hardware: MB:P5E3_Deluxe - CPU:Core2Duo E8400 3.0GHz - RAM:Kingstone_2Gb_DDR3 - Video:GeForce9600GT/PCI/SSE2 - HD: 2x WDCaviarBlue 1TB
--------------------------------
Software: SO:openSuSE 12.1 - ARCH:64bit - DE:Gnome3 - DriverVideo:Ufficiali Nvidia

Ritratto di aksaf
aksaf
(Guru)
Offline
Guru
Iscritto: 08/03/2011
Messaggi: 957

doc_pluto ha scritto:

non dovrebbe essere la stessa cosa?
http://library.gnome.org/users/zenity/stable/zenity-usage.html.en#zenity-usage-exitcodes
o intendo male io il senso di valore restituitoe output?


Scusa, probabilmente non ho usato la terminologia corretta, zenity si comporta in modo "standard" per cui, a seconda dell'oggetto grafico usato generato restituirà soltanto un segnale di valore numerico in uscita, oppure, assieme allo stesso segnale, anche un risultato non nullo nello standard output (naturalmente senza tenere conto dello standard error).
Esempio, da man zenity:
       For example, zenity --question will return either 0, 1 or 5, depending on whether the user pressed OK,  Cancel  or  timeout
       has been reached. zenity --entry will output on standard output what the user typed into the text entry field.

Ritratto di mauriziod
mauriziod
(Guru)
Offline
Guru
Iscritto: 01/06/2009
Messaggi: 1761

Citazione:

scusate, è possibile attraverso l'uso dell'operatore >> aggiungere il testo all'inizio del file attraverso magari una sua opzione??

Esiste un trucco! Molto più veloce di quanto sembra!!

Esempio: aggiungere del testo all'inizio di X.txt

Allora copi X.txt in Y.txt
Metti in creazione X.txt ( output-che-vuoi > x.txt) (questo cancella il contenuto di X.txt mentre ci scrive sopra l'output)
Poi Y.txt in aggiunta ad X.txt (y.txt >> x.txt)

Wink

Attento che Y.txt rimasto non crei problemi

Poi fare altre varianti:

rename X.txt in Y.txt
Metti in creazione X.txt
Poi Y.txt in aggiunta ad X.txt
ecc..

I file temporanei (nell'esempio y.txt) per convenzione devo avere la "dilde" in maniera che quando pulisci il sistema basta lanciare:
$ find $HOME -name "*~" -exec rm {} \;

Big Grin

SO: Linux desktop Sistema: OpenSUSE Leap 15.1 (64bit) KDEE 5.12
SO: Linux desktop Sistema: OpenSUSE Tumbleweed (64bit) KDE 5
Miao

Ritratto di doc_pluto
doc_pluto
(Guru)
Offline
Guru
Iscritto: 08/02/2007
Messaggi: 871

mauriziod ha scritto:

Citazione:

scusate, è possibile attraverso l'uso dell'operatore >> aggiungere il testo all'inizio del file attraverso magari una sua opzione??

Esiste un trucco! Molto più veloce di quanto sembra!!

Esempio: aggiungere del testo all'inizio di X.txt

Allora copi X.txt in Y.txt
Metti in creazione X.txt ( output-che-vuoi > x.txt) (questo cancella il contenuto di X.txt mentre ci scrive sopra l'output)
Poi Y.txt in aggiunta ad X.txt (y.txt >> x.txt)

Wink

Attento che Y.txt rimasto non crei problemi

Poi fare altre varianti:

rename X.txt in Y.txt
Metti in creazione X.txt
Poi Y.txt in aggiunta ad X.txt
ecc..

I file temporanei (nell'esempio y.txt) per convenzione devo avere la "dilde" in maniera che quando pulisci il sistema basta lanciare:
$ find $HOME -name "*~" -exec rm {} \;

Big Grin

onestamente c'avevo pensato, ma più che riuscire a farlo fisicamente, mi interessava sapere se ci fosse proprio un comando specifico simile all'appendche ne so un insert.

OT: forse confondi la Tilde → ~ con altri oggetti di piacere Wink.

Hardware: MB:P5E3_Deluxe - CPU:Core2Duo E8400 3.0GHz - RAM:Kingstone_2Gb_DDR3 - Video:GeForce9600GT/PCI/SSE2 - HD: 2x WDCaviarBlue 1TB
--------------------------------
Software: SO:openSuSE 12.1 - ARCH:64bit - DE:Gnome3 - DriverVideo:Ufficiali Nvidia

Ritratto di aksaf
aksaf
(Guru)
Offline
Guru
Iscritto: 08/03/2011
Messaggi: 957

per concatenare 2 o più file probabilmente conviene usare "cat" (cat file1 .. filen > nuovo_file)
per aggiungere testo all'inizio di un file si può usare sed:

$ sed 1i'a\nb' <<qui_file
w
x
qui_file
a
b
w
x

Ritratto di mauriziod
mauriziod
(Guru)
Offline
Guru
Iscritto: 01/06/2009
Messaggi: 1761

Oltre che con sed (come giustamente suggerisce aksaf) esiste anche concat per concatenare un espressione di output oppure grep. Ma le ultime son roba da macchiavellici!

----

nota : Errorino mio.

Oddio la forma e forma... La tilde è una forma "piacevole" Rolling On The Floor

SO: Linux desktop Sistema: OpenSUSE Leap 15.1 (64bit) KDEE 5.12
SO: Linux desktop Sistema: OpenSUSE Tumbleweed (64bit) KDE 5
Miao