Salvare automaticamente l'output RISOLTO

Linguaggi di programmazione: php, perl, python, C, bash, ecc.

Salvare automaticamente l'output RISOLTO

Messaggioda eb-ash » venerdì 12 aprile 2019, 15:31

Vorrei con Bash poter salvare automaticamente l'output come file .txt.

Eventualmente si può scegliere rea queste due opzioni?
- lasciare che faccia la domanda prima di sovrascrivere "“Output di Terminale salvato.txt” esiste già. Vuoi sostituirlo?"
- sovrascrivere senza fare domande.
Ultima modifica di eb-ash il venerdì 26 aprile 2019, 17:08, modificato 1 volta in totale.
si è vero uso un mac. Ma detesto i maccisti del web. Se la tirano, non ti aiutano, sono abituati ad avere la pappa fatta e non costruirsi le cose, e sono troppo pochi... quando serve non ci sono mai. Voglio imparare un po' di Bash per fare tante cose utili perchè questo sono qua... senza formazione specifica ma in fondo è unix che permette di fare le cose a pezzetti, no?
Avatar utente
eb-ash
Prode Principiante
 
Messaggi: 117
Iscrizione: febbraio 2019
Sesso: Maschile

Re: Salvare automaticamente l'output

Messaggioda Eresia » lunedì 15 aprile 2019, 10:05

per salvare su un file:
Codice: Seleziona tutto
./tuoscript.sh > output.txt


per salvare su un file esistente (sovrascrive):
Codice: Seleziona tutto
./tuoscript.sh >> output.txt


se non vado errando anche (per sovrascrivere un file):
Codice: Seleziona tutto
./tuoscript.sh | tee -a output.txt
emerge --auD --oneshot life/lucky-*
Avatar utente
Eresia
Scoppiettante Seguace
Scoppiettante Seguace
 
Messaggi: 346
Iscrizione: giugno 2006
Distribuzione: arch
Sesso: Maschile

Re: Salvare automaticamente l'output

Messaggioda Gerry Ghetto » lunedì 15 aprile 2019, 10:23

La soluzione di Eresia funziona solo per stdout. I messaggi di stderr (e tutti gli altri file descriptors) non vengono deviati nel file.
Gerry Ghetto
 

Re: Salvare automaticamente l'output

Messaggioda UbuNuovo » lunedì 15 aprile 2019, 10:59

Eresia Immagine ha scritto:...
se non vado errando anche (per sovrascrivere un file):
Codice: Seleziona tutto
./tuoscript.sh | tee -a output.txt


No, con 'tee' stampa a schermo e contemporaneamente scrive su file; con l'opzione "-a" scrive in append mode, quindi scrive il testo dopo quello esistente.

Edit:
Non avevo fatto caso ad un'altra cosa, del post di Eresia, correggo:
Codice: Seleziona tutto
./tuoscript.sh > output.txt
Se il file "output.txt", non esiste viene creato, se il file "output.txt" esiste già, viene sovrascritto.

Codice: Seleziona tutto
./tuoscript.sh >> output.txt
Se il file "output.txt", non esiste viene creato, se il file "output.txt" esiste e contiene del testo, il nuovo testo viene aggiunto in coda al vecchio testo.
Ultima modifica di UbuNuovo il mercoledì 17 aprile 2019, 8:35, modificato 1 volta in totale.
Nel caso in cui sia il primo a rispondere ad una richiesta di aiuto...chiunque abbia una soluzione migliore o anche solo diversa dalla mia è incoraggiato ad intervenire liberamente senza inviarmi alcun messaggio privato. In programmazione è basilare sapere che si può ottenere il medesimo risultato utilizzando metodi diversi.
Avatar utente
UbuNuovo
Imperturbabile Insigne
Imperturbabile Insigne
 
Messaggi: 3458
Iscrizione: dicembre 2009
Desktop: Mate
Distribuzione: Ubuntu 14.04
Sesso: Maschile

Re: Salvare automaticamente l'output

Messaggioda eb-ash » lunedì 15 aprile 2019, 15:02

Funziona benissimo il tee. Perfetto anche l' -a.

Diciamo che adesso ho ottenuto sostanzialmente quello che mi serviva.

Sarebbe molto bello se si potesse avere nell'output un responso così:

"precedente output: " "data" e "conteggio file"

"attuale output:" "data" e "conteggio file"


Ciò perchè ogni volta devo ricordarmi di consultare il file output.txt prima di eseguire di nuovo il comando dato che cancella il vecchio risultato.
si è vero uso un mac. Ma detesto i maccisti del web. Se la tirano, non ti aiutano, sono abituati ad avere la pappa fatta e non costruirsi le cose, e sono troppo pochi... quando serve non ci sono mai. Voglio imparare un po' di Bash per fare tante cose utili perchè questo sono qua... senza formazione specifica ma in fondo è unix che permette di fare le cose a pezzetti, no?
Avatar utente
eb-ash
Prode Principiante
 
Messaggi: 117
Iscrizione: febbraio 2019
Sesso: Maschile

Re: Salvare automaticamente l'output

Messaggioda Eresia » lunedì 15 aprile 2019, 20:33

emerge --auD --oneshot life/lucky-*
Avatar utente
Eresia
Scoppiettante Seguace
Scoppiettante Seguace
 
Messaggi: 346
Iscrizione: giugno 2006
Distribuzione: arch
Sesso: Maschile

Re: Salvare automaticamente l'output

Messaggioda eb-ash » mercoledì 17 aprile 2019, 7:34

Eresia Immagine ha scritto:https://stackoverflow.com/questions/9964823/how-to-check-if-a-file-is-empty-in-bash


Sto dando un'occhiata a questa pagina ma non trovo strumenti utili, cercherò di studiarne il contenuto. cmq grazie
si è vero uso un mac. Ma detesto i maccisti del web. Se la tirano, non ti aiutano, sono abituati ad avere la pappa fatta e non costruirsi le cose, e sono troppo pochi... quando serve non ci sono mai. Voglio imparare un po' di Bash per fare tante cose utili perchè questo sono qua... senza formazione specifica ma in fondo è unix che permette di fare le cose a pezzetti, no?
Avatar utente
eb-ash
Prode Principiante
 
Messaggi: 117
Iscrizione: febbraio 2019
Sesso: Maschile

Re: Salvare automaticamente l'output

Messaggioda Eresia » mercoledì 17 aprile 2019, 11:15

come no? controlli se un file è vuoto o pieno, a seconda della condizione esegui X comandi
emerge --auD --oneshot life/lucky-*
Avatar utente
Eresia
Scoppiettante Seguace
Scoppiettante Seguace
 
Messaggi: 346
Iscrizione: giugno 2006
Distribuzione: arch
Sesso: Maschile

Re: Salvare automaticamente l'output

Messaggioda eb-ash » venerdì 19 aprile 2019, 0:31

Eresia Immagine ha scritto:come no? controlli se un file è vuoto o pieno, a seconda della condizione esegui X comandi


Eresia, non ho capito, il file so già che è pieno.
si è vero uso un mac. Ma detesto i maccisti del web. Se la tirano, non ti aiutano, sono abituati ad avere la pappa fatta e non costruirsi le cose, e sono troppo pochi... quando serve non ci sono mai. Voglio imparare un po' di Bash per fare tante cose utili perchè questo sono qua... senza formazione specifica ma in fondo è unix che permette di fare le cose a pezzetti, no?
Avatar utente
eb-ash
Prode Principiante
 
Messaggi: 117
Iscrizione: febbraio 2019
Sesso: Maschile

Re: Salvare automaticamente l'output

Messaggioda Eresia » venerdì 19 aprile 2019, 9:51

devi utilizzare una condizione, io ora non conosco bene bash, ma in pseudocodice potrebbe essere qualcosa del genere:

Codice: Seleziona tutto
if output.txt is not empty:
    print "sovrascrivere il file?"
    if yes:
        ./tuocomando.sh
    else:
        exit
else:
    ./tuocomando.sh


prova a convertirlo in bash
emerge --auD --oneshot life/lucky-*
Avatar utente
Eresia
Scoppiettante Seguace
Scoppiettante Seguace
 
Messaggi: 346
Iscrizione: giugno 2006
Distribuzione: arch
Sesso: Maschile

Re: Salvare automaticamente l'output

Messaggioda eb-ash » venerdì 19 aprile 2019, 10:54

Grazie, Eresia, così riesco a comprenderlo. Però mi sembra una strada più lunga. Col "tee -a" ho già ottenuto di riempire un file.txt con i risultati dell'output.

Adesso trovato lo stratagemma di inserire il format della data e ora nel nome del file, in questo modo è costretto a crea nuovi file
e posso così continuare a leggere i vecchi risultati. Mi domandavo, c'è un modo di redirigere il risultato dentro il nome del file? Così potrei leggerlo senza aprirlo..
si è vero uso un mac. Ma detesto i maccisti del web. Se la tirano, non ti aiutano, sono abituati ad avere la pappa fatta e non costruirsi le cose, e sono troppo pochi... quando serve non ci sono mai. Voglio imparare un po' di Bash per fare tante cose utili perchè questo sono qua... senza formazione specifica ma in fondo è unix che permette di fare le cose a pezzetti, no?
Avatar utente
eb-ash
Prode Principiante
 
Messaggi: 117
Iscrizione: febbraio 2019
Sesso: Maschile

Re: Salvare automaticamente l'output

Messaggioda UbuNuovo » venerdì 19 aprile 2019, 11:55

si potrebbe fare ma solo se non si superano i 256 caratteri e non sono presenti "/" cosa che credo nel tuo caso ci siano.
Nel caso in cui sia il primo a rispondere ad una richiesta di aiuto...chiunque abbia una soluzione migliore o anche solo diversa dalla mia è incoraggiato ad intervenire liberamente senza inviarmi alcun messaggio privato. In programmazione è basilare sapere che si può ottenere il medesimo risultato utilizzando metodi diversi.
Avatar utente
UbuNuovo
Imperturbabile Insigne
Imperturbabile Insigne
 
Messaggi: 3458
Iscrizione: dicembre 2009
Desktop: Mate
Distribuzione: Ubuntu 14.04
Sesso: Maschile

Re: Salvare automaticamente l'output

Messaggioda eb-ash » venerdì 19 aprile 2019, 16:32

UbuNuovo Immagine ha scritto:si potrebbe fare ma solo se non si superano i 256 caratteri e non sono presenti "/" cosa che credo nel tuo caso ci siano.



I caratteri sarebbero pocchissimi 5 o 6.

Per gli "/" eventualmente vedrei di adattare la situazione allo scopo

Dai! Mi suggerisci almeno un comandino da cui iniziare che in rete non riesco a trovare niente...
si è vero uso un mac. Ma detesto i maccisti del web. Se la tirano, non ti aiutano, sono abituati ad avere la pappa fatta e non costruirsi le cose, e sono troppo pochi... quando serve non ci sono mai. Voglio imparare un po' di Bash per fare tante cose utili perchè questo sono qua... senza formazione specifica ma in fondo è unix che permette di fare le cose a pezzetti, no?
Avatar utente
eb-ash
Prode Principiante
 
Messaggi: 117
Iscrizione: febbraio 2019
Sesso: Maschile

Re: Salvare automaticamente l'output

Messaggioda UbuNuovo » domenica 21 aprile 2019, 16:27

Non lo so cosa devi fare. La redirezione è quella che ti è stata detta, se devi modificare il nome del file basta usare una variabile che conterrà il contenuto del file.
Prova a spiegare meglio.

edit: ti faccio un esempio:
creo un file con del testo
Codice: Seleziona tutto
8-) echo 'Questo è il contenuto del file' > file_dati.txt
8-) ls
file_dati.txt

inserisco il contenuto del file in una variabile
Codice: Seleziona tutto
8-) contenuto_file=$(cat file_dati.txt)

creo il nuovo nome con il contenuto del file e il testo che vuoi
Codice: Seleziona tutto
8-) nome_nuovo_file="${contenuto_file}_altro_testo.txt"

ora puoi creare il nuovo file con il metodo che vuoi (toch, echo e redirezione, tea, ...)
Per esempio, un modo per avere il contenuto come nome del file e come vero contenuto del file:
Codice: Seleziona tutto
8-) echo "$contenuto_file" > "$nome_nuovo_file"
8-) ls -1
file_dati.txt
Questo è il contenuto del file_altro_testo.txt

controllo leggendo il nuovo file
Codice: Seleziona tutto
8-) cat "Questo è il contenuto del file_altro_testo.txt"
Questo è il contenuto del file
8-)
Nel caso in cui sia il primo a rispondere ad una richiesta di aiuto...chiunque abbia una soluzione migliore o anche solo diversa dalla mia è incoraggiato ad intervenire liberamente senza inviarmi alcun messaggio privato. In programmazione è basilare sapere che si può ottenere il medesimo risultato utilizzando metodi diversi.
Avatar utente
UbuNuovo
Imperturbabile Insigne
Imperturbabile Insigne
 
Messaggi: 3458
Iscrizione: dicembre 2009
Desktop: Mate
Distribuzione: Ubuntu 14.04
Sesso: Maschile

Re: Salvare automaticamente l'output

Messaggioda eb-ash » martedì 23 aprile 2019, 21:03

UbuNuovo Immagine ha scritto:Non lo so cosa devi fare.



Grazie, mi accingo a studiare quanto mi hai postato, è l'unico materiale che ho al riguardo e te ne sono grato.

Mi pare però che serva a prelevare dati da file già esistenti o mi sbaglio? Nel mio caso il file non è ancora stato creato.

Quello che vorrei fare è questo:

ho un eseguibile che lancia una ricerca e mi dà un conteggio e automaticamente lo salva in un file .txt che riporta la data e l'ora di creazione
nel titolo.
Ad ogni ricerca i file si aggiungono, avendo i titoli diversi per via della data, ovviamente.

Nel tempo si forma una serie di file che mi mostra l'evoluzione della ricerca e io vorrei che ci fossero anche i risultati nei titoli così potrei sapere i risultati precedenti
prima di lanciare la nuova ricerca, senza dover aprire i file.
si è vero uso un mac. Ma detesto i maccisti del web. Se la tirano, non ti aiutano, sono abituati ad avere la pappa fatta e non costruirsi le cose, e sono troppo pochi... quando serve non ci sono mai. Voglio imparare un po' di Bash per fare tante cose utili perchè questo sono qua... senza formazione specifica ma in fondo è unix che permette di fare le cose a pezzetti, no?
Avatar utente
eb-ash
Prode Principiante
 
Messaggi: 117
Iscrizione: febbraio 2019
Sesso: Maschile

Re: Salvare automaticamente l'output

Messaggioda UbuNuovo » martedì 23 aprile 2019, 23:28

Mi pare però che serva a prelevare dati da file già esistenti o mi sbaglio?

Credevo che i dati provenissero da altri script.
In ogni caso il procedimento non cambia, puoi leggere i dati da file o dall'output di un comando, cambia solo lo strumento per immagazzinare i dati da elaborare.
Nel caso in cui sia il primo a rispondere ad una richiesta di aiuto...chiunque abbia una soluzione migliore o anche solo diversa dalla mia è incoraggiato ad intervenire liberamente senza inviarmi alcun messaggio privato. In programmazione è basilare sapere che si può ottenere il medesimo risultato utilizzando metodi diversi.
Avatar utente
UbuNuovo
Imperturbabile Insigne
Imperturbabile Insigne
 
Messaggi: 3458
Iscrizione: dicembre 2009
Desktop: Mate
Distribuzione: Ubuntu 14.04
Sesso: Maschile

Re: Salvare automaticamente l'output

Messaggioda eb-ash » mercoledì 24 aprile 2019, 18:50

UbuNuovo Immagine ha scritto:In ogni caso il procedimento non cambia, puoi leggere i dati da file o dall'output di un comando, cambia solo lo strumento per immagazzinare i dati da elaborare.






L'output riesco ad indirizzarlo solo nel contenuto del file,
in certi casi viene anche sottratto alla stampa a schermo a seconda della posizione in cui colloco il comando.

Non riesco a capire quale comando indirizzerebbe l'output nel nome del file.


In pratica se il mio output è: "4" il file creato deve essere titolato "risultato 4, 24 aprile ora.txt"

e il giorno dopo mettiamo che il risultato sia ad es. "100" sarà "risultato 100, 25 aprile ora.txt" ecc...
se invece sarà sempre "4" sarà "risultato 4, 25 aprile ora.txt" ecc...

la data so come metterla e il risultato che non riesco
si è vero uso un mac. Ma detesto i maccisti del web. Se la tirano, non ti aiutano, sono abituati ad avere la pappa fatta e non costruirsi le cose, e sono troppo pochi... quando serve non ci sono mai. Voglio imparare un po' di Bash per fare tante cose utili perchè questo sono qua... senza formazione specifica ma in fondo è unix che permette di fare le cose a pezzetti, no?
Avatar utente
eb-ash
Prode Principiante
 
Messaggi: 117
Iscrizione: febbraio 2019
Sesso: Maschile

Re: Salvare automaticamente l'output

Messaggioda UbuNuovo » mercoledì 24 aprile 2019, 20:12

Non puoi reindirizzare direttamente nel nome del file, devi usare una variabile.
Non capisco qual è il tuo problema.
Sai come creare un file con un dato nome.
Puoi assegnare il contenuto di un file ad una variabile come ti ho fatto vedere con l'esempio precedente.
Codice: Seleziona tutto
contenuto=$(cat nome_file.txt)

Per assegnare lo standard output di un comando o uno script usi ugualmente $(...) ma non serve 'cat'
Codice: Seleziona tutto
8-) cat script.sh
#!/bin/bash

echo 'bla bla bla'
8-) out=$(./script.sh)
8-) echo "$out"
bla bla bla
8-)


Ma a quanto mi pare di capire, a te basta modificare il nome dei file al momento della creazione, dove il contenuto dovresti già averlo.
In pratica nello script che crea i file ti basta creare una stringa con il contenuto del file ed assegnarla ad una variabile che rappresenterà il nome del file.
Nel caso in cui sia il primo a rispondere ad una richiesta di aiuto...chiunque abbia una soluzione migliore o anche solo diversa dalla mia è incoraggiato ad intervenire liberamente senza inviarmi alcun messaggio privato. In programmazione è basilare sapere che si può ottenere il medesimo risultato utilizzando metodi diversi.
Avatar utente
UbuNuovo
Imperturbabile Insigne
Imperturbabile Insigne
 
Messaggi: 3458
Iscrizione: dicembre 2009
Desktop: Mate
Distribuzione: Ubuntu 14.04
Sesso: Maschile

Re: Salvare automaticamente l'output

Messaggioda eb-ash » giovedì 25 aprile 2019, 21:42

Ci sono riuscito! :popopo:
si è vero uso un mac. Ma detesto i maccisti del web. Se la tirano, non ti aiutano, sono abituati ad avere la pappa fatta e non costruirsi le cose, e sono troppo pochi... quando serve non ci sono mai. Voglio imparare un po' di Bash per fare tante cose utili perchè questo sono qua... senza formazione specifica ma in fondo è unix che permette di fare le cose a pezzetti, no?
Avatar utente
eb-ash
Prode Principiante
 
Messaggi: 117
Iscrizione: febbraio 2019
Sesso: Maschile


Torna a Programmazione

Chi c’è in linea

Visualizzano questa sezione: 0 utenti registrati e 4 ospiti