Comment écrire la sortie de live-f1 dans un fichier

10

J'ai ouvert le terminal et exécuté live-f1 qui affiche le flux en direct dans le terminal (texte) qui change à chaque seconde. Seule la touche "Entrée" peut être utilisée pendant l'exécution de ce programme (il quitte ce programme). Vous ne pouvez donc rien taper d'autre dans la console.

Je voudrais écrire le contenu du terminal dans un fichier, comme après chaque seconde.

Comment puis-je le faire?

En ouvrant la 2ème console et en utilisant une commande?

Impossible de le faire fonctionner avec la commande setterm -dump.

Gustav
la source

Réponses:

8

live-f1redessine l'écran avec de nouvelles données en utilisant des caractères de contrôle de terminal (ncurses), tout comme topou mtr. C'est pourquoi vous voyez toutes ces ordures lors de la redirection vers un fichier ou un périphérique non terminal.

Malheureusement, live-f1ne fournit pas d'option pour obtenir une sortie appropriée pour enregistrer et extraire ultérieurement des données pour les statistiques et autres. Si vous souhaitez toujours enregistrer la sortie pour la relire ultérieurement, vous pouvez utiliser script.

Cela enregistrera live-f1 et créera deux fichiers, dactylographié et fichier de synchronisation.

script -c live-f1 -t 2> timingfile

Cela rejouera la sortie

scriptreplay timingfile
forcefsck
la source
7

Il y a quelques façons que j'utilise pour capturer la sortie dans un fichier qui peut vous être utile.

script

Cela crée un sous-shell et y met toutes les sorties. Alors faites scriptce que vous voulez, puis exitterminez votre sous-shell et votre sortie sera dans un fichier appelé "dactylographié"

tee

Vous pouvez faire écho à tous les tuyaux ailleurs. Vous pouvez donc teedésactiver votre sortie standard dans un fichier:

$ mycommand | tee myoutput

Si vous devez également capturer l'erreur standard, redirigez-la:

$ mycommand 2>&1 | tee myoutput
étoilé
la source
6

Que diriez-vous d'exécuter le programme comme ceci:

program > /path/to/file

Cela redirige instantanément la sortie de programvers /path/to/file.

Et si vous voulez avoir la sortie dans votre terminal, ainsi que l'enregistrer dans un fichier. Check out Y a-t-il un moyen dans bash de rediriger la sortie et de la faire passer à stdout?

phunehehe
la source
Merci pour la réponse rapide. Cela fonctionne presque, seul le contenu du fichier est un peu altéré. Il devrait être en HTML, mais à la place, lorsque j'ouvre le fichier, il y a des symboles étranges, voir la capture d'écran: upload.ee/image/1223166/ss_01.png . Le nom du programme est live-f1.
Gustav
Ça a l'air drôle. Êtes-vous sûr que le programme ne produit que du HTML? Y a-t-il une animation ou quelque chose de bizarre?
phunehehe
Cela ne redirigera que la sortie standard. Une erreur standard est-elle également requise?
Faheem Mitha
2
@Gustav Il y a aussi des codes ANSI piégés là-dedans. Soit votre application génère une sorte de compteur de progression (à quoi elle ressemble), soit colore sa sortie, ou similaire. S'il existe un moyen de désactiver cette option, vous devrez l'utiliser pour capturer une sortie propre. Cependant, votre application ne génère pas de code HTML. Pour capturer le code HTML, vous aurez besoin d'une autre application pour traduire la sortie.
Matthew Scharley
Pourquoi je pense que c'est HTML, parce que je l'ai fait fonctionner il y a un an, mais j'ai reformaté le disque où j'avais l'environnement de travail. Mon objectif est d'obtenir les positions des pilotes de Formule 1 à partir d'un flux live-f1 dans un fichier. Je l'ai fait fonctionner l'année dernière en exécutant le programme live-f1 dans le 1er terminal, puis en allumant le deuxième terminal et en utilisant une commande qui a capturé l'écran du premier terminal et l'a enregistré dans un fichier (copie du fichier de l'année dernière: upload.ee/download/1223347 /0b6545ce227661452c8/html.log ). La commande était quelque chose comme ça: tty "1er pointeur de terminal" "nom de fichier" "intervalle"
Gustav
3

Vous pouvez utiliser l' écran GNU , ainsi que sa fonctionnalité de journalisation . Notez également que la logfile flush secscommande vous permet de contrôler la fréquence de vidage de la sortie sur le disque. Dans le manuel d'utilisation de l'écran:

- Commande: vidage du fichier journal secs

Définit le nom que les fichiers journaux obtiendront. La valeur par défaut est 'screenlog.% N'. Le second formulaire modifie le nombre de secondes que l'écran attendra avant de vider le tampon du fichier journal dans le système de fichiers. La valeur par défaut est 10 secondes.

Faheem Mitha
la source
Je vais y jeter un œil.
Gustav