Pagina 1 di 1

Script per creare nome file

Inviato: mar dic 01, 2015 6:07 pm
da dante5351
Buonasera.
Vorrei creare uno script (es pr.sh) che mi avvii il terminale, dia il comando "sudo rtcwake -m show -l" (senza virgolette), e poi prenda l'output di questo comando e lo trasformi nel nome di un'immagine che ora e' poppi.png, in modo da avere come risultato ~/Scrivania/output comando da terminale.png.
Mi ci gioco i baffi che e' possibile, ma io non sono in grado di scriverlo.
Qualcuno può aiutarmi?
Grazie

Re: Script per creare nome file

Inviato: mar dic 01, 2015 11:17 pm
da PippoDJ
dante5351 ha scritto:Vorrei creare uno script (es pr.sh) che mi avvii il terminale, dia il comando "sudo rtcwake -m show -l" (senza virgolette), e poi prenda l'output di questo comando e lo trasformi nel nome di un'immagine che ora e' poppi.png, in modo da avere come risultato ~/Scrivania/output comando da terminale.png.
Mi ci gioco i baffi che e' possibile, ma io non sono in grado di scriverlo.
Se ho capito bene cosa vuoi fare e ammesso che poppi.png sia sulla scrivania, il comando da inserire in pr.sh dovrebbe essere qualcosa del tipo:

Codice: Seleziona tutto

cp ~/Scrivania/poppi.png "~/Scrivania/$(sudo rtcwake -m show -l).png"
Spero di averti salvato i baffi. :)

Re: Script per creare nome file

Inviato: mer dic 02, 2015 12:02 am
da dante5351
Benritrovato PippoDJ, e sono sicuro che col tuo aiuto non dovro' rinunciare ai miei favoriti. Infatti hai capito benissimo: voglio crearmi un promemoria al momento in cui imposto lo standby/resume del pc.

Pero' io devo sempre capire, prima.
Nel tuo codice, quel $(sudo rtcwake -m show -l) sta' a significare: il risultato del comando sudo rtcwake -m show -l? Quindi quel $ e' quello del terminale? Mi pare di si, ma gradirei una conferma.

Ho provato a lanciare lo script da terminale, aggiornando ai dati reali, col risultato:
dan@dan ~ $ cp ~/Video/Xreg/Risveglio-programmato "~/Scrivania/$(sudo rtcwake -m show -l).png"
cp: impossibile creare il file regolare "~/Scrivania/alarm: on Wed Dec 2 00:34:00 2015.png": File o directory non esistente.

Il "alarm: on Wed Dec 2 00:34:00 2015" e' il dato corretto di output del comando e quelli che sembrano trattini sono tilde.
Pero' da' lo stesso l'errore.
E, tanto per dirla tutta, voglio ottenere che quell'immagine che creo adesso col nome Risveglio-programmato, abbia il nome alarm: on Wed Dec 2 00:34:00 2015, ma questo l'hai capito.

Re: Script per creare nome file

Inviato: mer dic 02, 2015 12:18 am
da CUB3
Prova così:

Codice: Seleziona tutto

cp ~/Scrivania/poppi.png ~/Scrivania/"$(sudo rtcwake -m show -l)".png

Re: Script per creare nome file

Inviato: mer dic 02, 2015 12:52 am
da dante5351
Benritrovato CUB3.
Lanciando:
dan@dan ~ $ cp ~/Video/Xreg/Risveglio-programmato ~/Scrivania/"$(sudo rtcwake -m show -l)".png
Funziona a meta', nel senso che crea sulla scrivania il file con il titolo esatto, pero' per vedere l'immagine bisogna cliccarci sopra e apprire gThumb, cioe' il visualizzatore d'immagini
Lanciando:
dan@dan ~ $ cp ~/Video/Xreg/Risveglio-programmato ~/Scrivania/"$(sudo rtcwake -m show -l)"
Dovrebbe essere ok, nel senso che crea l'immagine con la scritta allarm:off, ma il resume e' scaduto 15 minuti fa, e quando rtcwake fa il resume, azzera l''impostazione.
Adesso devo lasciare buono buono il pc a registrare, domani controllero', ma sono sicuro che la vostra collaborazione ha funzionato ancora.
Fate una coppia imbattibile :clap :clap

Re: Script per creare nome file

Inviato: mer dic 02, 2015 9:56 am
da CUB3
Grazie dante5351.

Per il problema dell'immagine mi sembra di capire che quando questa viene creata, non vedi l'anteprima ma vedi l'icona generica dei file immagine. Se è così è sufficiente che tu clicchi su un punto vuoto del Desktop e poi prema F5.

Re: Script per creare nome file

Inviato: mer dic 02, 2015 10:17 am
da dante5351
Confermo: il comando
$ cp ~/Video/Xreg/Risveglio-programmato ~/Scrivania/"$(sudo rtcwake -m show -l)" o, per usare i nomi precedenti
$ cp ~/Video/Xreg/poppi ~/Scrivania/"$(sudo rtcwake -m show -l)"
funziona come volevo.
E la ragione per cui non funzionava con .png e' perche' poppi è .jpeg :acch :frustata

Naturalmente, fatta la prova aggiungendo .jpeg, funziona. Un errore da 2a elementare. Sorry

In ultimo cito:
Re: Risvegliare Pc da standby con crontab
Messaggioda PippoDJ » 18/11/2015, 17:44
...Il simbolo "$" ha tantissimi usi diversi a seconda del contesto in cui viene inserito...

In questo caso sta a significare: esegui nel terminale.

Certo che con questi scripts mi si è aperto un mondo, che con Windows restava nascosto, anche se c'era. :grazie

Re: Script per creare nome file

Inviato: mer dic 02, 2015 1:18 pm
da PippoDJ
dante5351 ha scritto:In ultimo cito:
Re: Risvegliare Pc da standby con crontab
Messaggioda PippoDJ » 18/11/2015, 17:44
...Il simbolo "$" ha tantissimi usi diversi a seconda del contesto in cui viene inserito...

In questo caso sta a significare: esegui nel terminale.
Non proprio. $( ... ) vuol dire più o meno: "esegui prima il comando che c'è all'interno di $() e rimpiazza tutto il $() con il risultato ottenuto, poi esegui il comando più esterno".

Quindi in pratica tutto quanto viene eseguito in due passaggi:
1o: cp ~/Video/Xreg/Risveglio-programmato ~/Scrivania/"$(sudo rtcwake -m show -l)".jpg
2o: cp ~/Video/Xreg/Risveglio-programmato ~/Scrivania/"alarm: on Wed Dec 2 00:34:00 2015".jpg

E' lo stesso accorgimento che avevi già usato in:
1o: sudo rtcwake -m no -u -t $(date +\%s -d 'tomorrow 12:05')
2o: sudo rtcwake -m no -u -t 1449140700

Ciao, Pippo.

Re: Script per creare nome file

Inviato: mer dic 02, 2015 1:26 pm
da dante5351
Continuo a sostenere che dovresti fare il divulgatore scientifico: non hai niente da invidiare a Piero Angela. Da solo non l'avrei neanche sognato.
Ciao Dante

Re: Script per creare nome file

Inviato: mer dic 02, 2015 5:40 pm
da Ganondolf
Più in generale, in questo contesto il carettere $ significa "il valore di".
Quindi ad esempio, in uno script $1 significa "il valore del primo argomento", $PATH significa "il valore della variabile PATH", e $(...) significa "il valore dell'espressione contenuta tra parentesti", che implica che tale espressione debba venire valutata, cioè viene eseguita prima del comando che la contiene.