Як записати вихід live-f1 у файл


10

Я відкрив термінал і запустив live-f1, який відображає пряму трансляцію в терміналі (тексті), який змінюється щосекунди. Під час роботи цієї програми можна використовувати лише клавішу "Enter" (вона виходить із цієї програми). Таким чином, ви нічого не можете вводити в консоль.

Я хотів би записати вміст терміналу у файл, як після кожної секунди.

Як я можу це зробити?

Відкриваючи 2-ю консоль і використовуючи якусь команду?

Неможливо змусити його працювати з командою setterm -dump.

Відповіді:


8

live-f1перемальовує екран новими даними, використовуючи символи управління терміналом (ncurses), як topі mtr. Ось чому ви бачите все це сміття при переадресації на файл або нетермінальний пристрій.

На жаль, live-f1не передбачено можливість отримання результатів, відповідних для збереження та подальшого вилучення даних для статистики тощо. Якщо ви все ще хочете зберегти результат для подальшого відтворення, ви можете використовувати script.

Це дозволить записати live-f1 і створити два файли, машинопис і тимчасовий файл.

script -c live-f1 -t 2> timingfile

Це відтворить вихід

scriptreplay timingfile

7

Є декілька способів, які я використовую для збору результатів у файл, який може вам бути корисним.

script

Це створює нижню частину і додає до неї весь вихід. Тож зробіть script, тоді все, що вам захочеться, тоді exitзакінчіть свою підпрограму і ваш вихід буде у файлі під назвою "typecript"

tee

Ви можете перегукувати всю трубу десь в іншому місці. Таким чином, ви можете teeвимкнути стандартний вихід у файл:

$ mycommand | tee myoutput

Якщо вам потрібно також зафіксувати стандартну помилку, переадресуйте її:

$ mycommand 2>&1 | tee myoutput

6

Як щодо запуску програми так:

program > /path/to/file

Це миттєво перенаправляє вихід programна /path/to/file.

І якщо ви хочете мати вихід у своєму терміналі, а також збережіть його у файл. Перевірте Чи існує спосіб у баші перенаправити вихід, і все-таки слід перейти до stdout?


Дякую за швидку відповідь. Це майже працює, лише вміст файлів трохи заблокований. Це має бути в HTML, але замість цього, коли я відкриваю файл, з’являються деякі дивні символи, дивіться на скріншоті: upload.ee/image/1223166/ss_01.png . Назва програми - live-f1.
Густав

Це виглядає смішно. Ви впевнені, що програма виводить лише HTML? Чи є анімація чи щось дивне?
phunehehe

Це дозволить перенаправити лише стандартний вихід. Чи потрібна також стандартна помилка?
Faheem Mitha

2
@Gustav Там також захоплені ANSI-коди . Або ваша програма виводить якийсь лічильник прогресу (як це виглядає), або забарвлює його вихід, або подібне. Якщо є спосіб вимкнути це, вам потрібно буде використовувати його для отримання чистого виходу. Ваша програма не виводить HTML, тому для захоплення HTML вам знадобиться інша програма для перекладу результатів.
Меттью Шарлі

Чому я бачу його HTML, тому що я працював рік тому, але реформував диск, на якому я працював. Моя мета - отримати позиції водіїв Формули-1 з живої-f1 подачі у файл. Я працював минулого року, запустивши програму live-f1 в 1-му терміналі, потім запустивши 2-й термінал і використовуючи якусь команду, що захопив перший екран терміналу і зберег його у файл (копія з минулорічного файлу: upload.ee/download/1223347 /0b6545ce227661452c8/html.log ). Команда була щось подібне: tty "1-й покажчик терміналу" "ім'я файлу" "інтервал"
Густав

3

Ви можете використовувати екран GNU разом із його функціоналом журналу . Зауважте також, що logfile flush secsкоманда дозволяє керувати тим, як часто вихід передається на диск. З посібника користувача екрана:

- Команда: змивання файлів журналу

Визначає назву, яку отримають файли журналу. За замовчуванням - 'screenlog.% N'. Друга форма змінює кількість секунд, екран зачекає, перш ніж перенести буфер журналу файлів у файлову систему. Значення за замовчуванням - 10 секунд.


Я розберуся в це.
Густав
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.