Как записать вывод live-f1 в файл


10

Я открыл терминал и запустил live-f1, который отображает прямую трансляцию в терминале (текст), который меняется каждую секунду. Во время работы этой программы можно использовать только клавишу «Ввод» (она выходит из этой программы). Таким образом, вы не можете вводить что-либо еще в консоли.

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

Как я могу это сделать?

Открывая 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завершите свою подоболочку, и ваш вывод будет в файле с именем «машинопись»

tee

Вы можете повторить все трубы куда-то еще. Таким образом, вы можете teeотключить стандартный вывод в файл:

$ mycommand | tee myoutput

Если вам нужно также зафиксировать стандартную ошибку, перенаправьте ее:

$ mycommand 2>&1 | tee myoutput

6

Как насчет запуска программы следующим образом:

program > /path/to/file

Это перенаправляет вывод programна /path/to/fileмгновенно.

И если вы хотите иметь вывод в вашем терминале, а также сохранить его в файл. Проверьте, есть ли способ в bash перенаправить вывод, и все же он должен идти на стандартный вывод?


Спасибо за оперативный ответ. Это почти работает, только содержимое файла немного искажено. Это должно быть в HTML, но вместо этого, когда я открываю файл, появляются странные символы, см. Скриншот: upload.ee/image/1223166/ss_01.png . Название программы live-f1.
— Густав

Это выглядит смешно. Вы уверены, что программа выводит только HTML? Есть ли какая-нибудь анимация или что-то странное?
— phunehehe

Это перенаправит только стандартный вывод. Требуется ли стандартная ошибка?
— Фахим Митха

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

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

3

Вы можете использовать экран GNU вместе с его функциональностью регистрации . Также обратите внимание, что logfile flush secsкоманда позволяет вам контролировать, как часто выходные данные записываются на диск. Из руководства пользователя экрана:

- Команда: logfile сбрасывает секунды

Определяет имя, которое получат файлы журнала. По умолчанию используется screenlog.% N. Вторая форма изменяет количество секунд, которое будет ждать экран, прежде чем очистить буфер файла журнала в файловой системе. Значение по умолчанию составляет 10 секунд.


Я посмотрю на это.
— Густав
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.