Comment écrire le contenu du terminal dans un fichier

13

Voici ma situation: j'ouvre le terminal et exécute un programme qui affiche le flux en direct dans le terminal (texte) ce 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 de ce terminal dans un fichier, comme après chaque seconde.

Comment fait-on ça? En ouvrant la 2ème console et en utilisant une commande? Impossible de le faire fonctionner avec la commande setterm -dump.

Gustav
la source
1
Hm, quelle application est-ce? Si vous n'avez pas bien vérifié, vous devez vous assurer que l'application dispose d'une option pour enregistrer la sortie quelque part.
Severo Raz
J'ai vérifié cela. Ce n'est pas le cas. Sinon, je n'aurais pas ce problème. Le programme est live-f1, launchpad.net/live-f1
Gustav

Réponses:

16

Vous pouvez diriger votre sortie vers le teeprogramme ( description ):

my_program ... | tee my_program.log

Cela montrera la sortie sur le terminal, mais aussi l'écrira dans le fichier my_program.log

steabert
la source
Même résultat qu'avec la 1ère réponse. : /
Gustav
1
La capture d'écran que vous avez publiée semble contenir de nombreuses séquences d'échappement de terminal. À partir des informations du tableau de bord, il utilise ncurses (j'ai téléchargé la source avec bzr branch lp:live-f1, puis je suis allé chercher dans le README). Pouvez-vous exécuter le programme sans couleurs en définissant TERMsur dumb ( export TERM=dumb)? La source a également un TODOfichier, notant sur la liste de souhaits pour garder un historique des pilotes. Vous pouvez peut-être contacter les développeurs pour voir ce qu'ils prévoient ou s'ils ont un moyen pour vous d'enregistrer les résultats.
steabert
12

Lorsque vous exécutez votre commande à partir du terminal au lieu de voir la sortie sur votre console, vous pouvez la rediriger directement vers un fichier. Pendant l'exécution du programme, la sortie va être écrite dans le fichier. Un exemple permet de dire que vous souhaitez écrire le contenu de votre dossier avec une commande ls dans un fichier appelé list.txt

ls > list.txt

L' >opérateur redirige votre sortie selon vos besoins.

aux seins nus
la source
Thx, cela fonctionne mais en partie. Le contenu doit être HTML, mais lorsque j'ouvre le fichier, c'est quelque chose comme ça (extrait du fichier): VETTEL [21G (B [m [39; 49m. Le nom du programme est "live-f1". Live-f1> live_f1_dump. journal
Gustav
@Gustav vous voulez dire que dans la console, il affiche html et dans le fichier les lignes ci-dessus?
seins nus
Oui. C'est ce que j'obtiens lorsque j'exécute votre commande suggérée: upload.ee/image/1223166/ss_01.png . 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 "1st terminal pointer" "filename". Possible que ce soit autre chose que "tty" ce que j'ai utilisé pour ça.
Gustav
2

Essayez d'utiliser la scriptcommande. Malheureusement, cela met beaucoup de caractères de contrôle engloutis dans la transcription. Cependant, si vous voyez ce lien sur le site NCSSM CS, vous trouverez une solution imparfaite mais plutôt bonne au problème.

ncmathsadist
la source