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

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

Оффлайн A_STAS

  • Пользователь
  • *
  • Topic Author
  • Сообщений: 16
Не получается перенаправить результат вывода в терминале в файл 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

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

Оффлайн Angel_ok

  • Интересующийся
  • Местный житель
  • ***
  • Сообщений: 485
  • Lenovo E440 Debain 9 Gnome 3.22.2
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

  • Пользователь
  • *
  • Topic Author
  • Сообщений: 16
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

  • Пользователь
  • *
  • Topic Author
  • Сообщений: 16
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

  • Ветеран
  • *****
  • Сообщений: 2565
  • Учтите, мы можем дать и вредный совет.
A_STAS, только вывод парсить, grep, sed или awk.
Все мы где-то, когда-то и в чем-то были новичками.
 

Оффлайн A_STAS

  • Пользователь
  • *
  • Topic Author
  • Сообщений: 16
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
Просмотров: 2074
Последний ответ 07 Декабрь 2015, 23:19:39
от vic5710