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

10

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

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

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

Открывая 2-ю консоль и используя какую-то команду?

Не могу заставить его работать с командой setterm -dump.

Gustav
источник

Ответы:

8

live-f1перерисовывает экран новыми данными, используя управляющие символы терминала (ncurses), как topили mtr. Вот почему вы видите весь этот мусор при перенаправлении на файл или нетерминальное устройство.

К сожалению, live-f1не предоставляет возможность получения выходных данных, подходящих для сохранения и последующего извлечения данных для статистики и тому подобного. Если вы все еще хотите сохранить выходные данные для воспроизведения позже, вы можете использовать script.

Это запишет live-f1 и создаст два файла: машинопись и файл синхронизации.

script -c live-f1 -t 2> timingfile

Это воспроизведет вывод

scriptreplay timingfile
forcefsck
источник
7

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

script

Это создает подоболочку и помещает в нее весь вывод. Так что делайте script, тогда все, что вы хотите, затем exitзавершите свою подоболочку, и ваш вывод будет в файле с именем «машинопись»

tee

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

$ mycommand | tee myoutput

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

$ mycommand 2>&1 | tee myoutput
starfry
источник
6

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

program > /path/to/file

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

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

phunehehe
источник
Спасибо за оперативный ответ. Это почти работает, только содержимое файла немного искажено. Это должно быть в 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 секунд.

Фахим Митха
источник
Я посмотрю на это.
Густав