Come scrivere l'output di live-f1 in un file


10

Ho aperto il terminale e ho eseguito live-f1 che visualizza il feed live nel terminale (testo) che cambia ogni secondo. Solo il tasto "Invio" può essere utilizzato mentre questo programma è in esecuzione (esce da quel programma). Quindi non puoi digitare nient'altro nella console.

Vorrei scrivere il contenuto del terminale in un file, come dopo ogni secondo.

Come posso farlo?

Aprendo la seconda console e usando qualche comando?

Non riesco a farlo funzionare con il comando setterm -dump.

Risposte:


8

live-f1ridisegna lo schermo con nuovi dati utilizzando i caratteri di controllo del terminale (ncurses), proprio come topo mtr. Ecco perché vedi tutta questa spazzatura quando reindirizzi a un file o dispositivo non terminale.

Sfortunatamente, live-f1non fornisce un'opzione per ottenere l'output appropriato per salvare e successivamente estrarre dati per statistiche e simili. Se si desidera ancora salvare l'output per riprodurlo in un secondo momento, è possibile utilizzare script.

Questo registrerà live-f1 e creerà due file, dattiloscritto e file di temporizzazione.

script -c live-f1 -t 2> timingfile

Questo riprodurrà l'output

scriptreplay timingfile

7

Ci sono alcuni modi che uso per catturare l'output in un file che potrebbe esserti utile.

script

Questo crea una subshell e inserisce tutto l'output in essa. Quindi script, fai quello che vuoi, quindi exittermina la tua subshell e il tuo output sarà in un file chiamato "dattiloscritto"

tee

Puoi fare eco ad una pipa da qualche altra parte. Quindi puoi teedisattivare l'output standard in un file:

$ mycommand | tee myoutput

Se è necessario acquisire anche l'errore standard, reindirizzarlo:

$ mycommand 2>&1 | tee myoutput

6

Che ne dici di eseguire il programma in questo modo:

program > /path/to/file

Questo reindirizza l'output di programper /path/to/fileistantaneamente.

E se vuoi avere l'output nel tuo terminale, oltre a salvarlo in un file. Scopri C'è un modo in bash per reindirizzare l'output e farlo passare allo stdout?


Grazie per la rapida risposta Questo funziona quasi, solo il contenuto dei file è leggermente alterato. Dovrebbe essere in HTML, ma invece, quando apro il file ci sono alcuni simboli strani, vedi lo screenshot: upload.ee/image/1223166/ss_01.png . Il nome del programma è live-f1.
Gustav,

Sembra divertente. Sei sicuro che il programma produca solo HTML? C'è qualche animazione o qualcosa di strano?
phunehehe,

Questo reindirizzerà solo l'output standard. È richiesto anche un errore standard?
Faheem Mitha,

2
@Gustav Ci sono anche codici ANSI intrappolati lì dentro. L'applicazione genera una sorta di contatore di avanzamento (che è quello che sembra) o colora il suo output o simile. Se esiste un modo per disattivarlo, sarà necessario utilizzarlo per acquisire un output pulito. Tuttavia, l'applicazione non genera HTML, quindi per acquisire HTML è necessaria un'altra applicazione per tradurre l'output.
Matthew Scharley,

Perché sto dicendo che è HTML, perché l'ho fatto funzionare un anno fa, ma ho riformato il disco in cui avevo l'ambiente di lavoro. Il mio obiettivo è quello di ottenere le posizioni dei conducenti di Formula 1 dal feed live-f1 in un file. L'ho fatto funzionare lo scorso anno eseguendo il programma live-f1 nel 1 ° terminale, quindi accendendo il 2 ° terminale e usando alcuni comandi ciò che ha catturato la schermata del 1 ° terminale e salvato in un file (copia dal file dell'anno scorso: upload.ee/download/1223347 /0b6545ce227661452c8/html.log ). Il comando era qualcosa del genere: tty "1 ° puntatore terminale" "nomefile" "intervallo"
Gustav

3

È possibile utilizzare lo schermo GNU , insieme alla sua funzionalità di registrazione . Si noti inoltre che il logfile flush secscomando consente di controllare la frequenza con cui l'output viene scaricato su disco. Dal manuale dell'utente dello schermo:

- Comando: logfile flush secs

Definisce il nome che riceveranno i file di registro. L'impostazione predefinita è 'screenlog.% N'. Il secondo modulo modifica il numero di secondi che lo schermo attenderà prima di svuotare il buffer del file di log nel file system. Il valore predefinito è 10 secondi.


Ci penserò.
Gustav,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.