Автор Тема: Перенаправление результата в текстовый файл [РЕШЕНО]  (Прочитано 3906 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн A_STAS

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

#!/bin/sh
gnome-terminal -x bash -c "ffmpeg -i '/home/user/file.avi'; $SHELL" | tee "/home/user/doc.txt"; exit
« Последнее редактирование: 04 Апреля 2013, 20:54:51 от A_STAS »
 

Оффлайн redVi

Re: Перенаправление результата в текстовый файл
« Ответ #1 : 29 Сентября 2012, 09:48:55 »
Можете попробовать команду script.
$ script file.txt
И пишем, что душе угодно. Когда закончили, командуем:
$ exit
Смотрим свой вывод в файле file.txt
Debian Sid, Openbox || Gentoo, Openbox
 

Оффлайн Angel_ok

Re: Перенаправление результата в текстовый файл
« Ответ #2 : 29 Сентября 2012, 09:52:49 »
Попробуйте вместо tee использовать >

#!/bin/shgnome-terminal -x bash -c "ffmpeg -i '/home/user/file.avi'; $SHELL" > "/home/user/doc.txt"; exit
Вы думаете, всё так просто? Да, всё просто. Но совсем не так…
                                                                                                          Альберт Эйнштейн
 

Оффлайн A_STAS

Re: Перенаправление результата в текстовый файл
« Ответ #3 : 29 Сентября 2012, 14:45:03 »
Попробуйте вместо tee использовать >
Пробовал. Не получается. Создается пустой файл doc.txt

вот так работает:
gnome-terminal -x bash -c "ls -la | tee '/home/user/doc.txt'; $SHELL"; exit

вот так, нет:
gnome-terminal -x bash -c "ffmpeg -i '/home/user/file.avi' | tee '/home/user/doc.txt'; $SHELL"; exit
Создает пустой файл doc.txt, а в терминал все выводится как надо.

По логике должно работать!?
 

Оффлайн Alexey_F

  • Местный житель
  • ***
  • Сообщений: 153
Re: Перенаправление результата в текстовый файл
« Ответ #4 : 29 Сентября 2012, 23:31:23 »
Ой-вей... Всё просто.

Всё работает как надо, только вот перенаправление настроено неправильно: дело в том, что ffmpeg выводит информацию в stderr, а перенаправляется stdout. Т.е. нужно либо использовать конструкцию вида
$ ffmpeg -i era\ voxifera\ \(High\).flv 2>/path/to/fileили
$ ffmpeg -i era\ voxifera\ \(High\).flv &>/path/to/fileлибо, если всё же нужен вывод в терминал:
$ ffmpeg -i Софт\ \(Low\).flv 2>&1 | tee /path/to/file
Гайд по теме: тык.
 

Оффлайн A_STAS

Re: Перенаправление результата в текстовый файл
« Ответ #5 : 30 Сентября 2012, 08:58:26 »
либо, если всё же нужен вывод в терминал:
Все получилось как надо!

gnome-terminal -x bash -c "ffmpeg -i '/home/user/file.avi' 2>&1 | tee '/home/user/doc.txt'; $SHELL"; exit
Спасибо.

Alexey_F может знаешь как вытащить в переменную только размер видео из самого видеофайла, так как это делает ffmpeg?
 

Оффлайн Malaheenee

A_STAS, только вывод парсить, grep, sed или awk.
Все мы где-то, когда-то и в чем-то были новичками.
 

Оффлайн A_STAS

Malaheenee
только вывод парсить, grep, sed или awk.
Я так и делаю, но получается лажа.
Stream #0.0: Video: mpeg4, yuv420p, 320x240 [PAR 1:1 DAR 4:3], 15 tbr, 15 tbn, 15 tbc
Вырезаю Stream #0.0: Video:  вместе с пробелом после Video:
Потом поиск до запятой. Вроде все ОК! получаю mpeg4, но бывает вот так:
Stream #0.0[0x1e0]: Video: mpeg2video (Main), yuv420p, 720x576 [PAR 1:1 DAR 5:4], 9000 kb/s, 25 fps, 25 tbr, 90k tbn, 50 tbc
и попадает  (Main) вместе с пробелом!

Это я вытаскиваю кодек, а с размерами все ОК! Получилось.
« Последнее редактирование: 01 Октября 2012, 20:29:00 от A_STAS »
 

Теги:
     

    bash скрипт и перенаправление ввода вывода заданное внутри скрипта

    Автор zCirill

    Ответов: 3
    Просмотров: 2330
    Последний ответ 07 Декабря 2015, 23:19:39
    от vic5710