Этим вручают udev
в современных системах Linux. udev
демон, запущенный с системы, будет искать в /etc/udev/rules.d
и /lib/udev/rules.d
и выполнит соответствие правилам для событий ядра. Вставка Карты памяти инициирует событие, udev
будет искать правило соответствия и выполнит его.
Сами правила определят то, что делает Ваша система. В последние годы, udev
связался с HAL, который предупредил бы приложения через DBUS. Этот подход является теперь устаревшим в пользу объединенного udev
решение, которое я предполагаю, включит udevd
передача через dbus
непосредственно, или через dbus-отправляют.
Можно контролировать операции udev
через udevadm monitor
.
Вы забыли использовать обратные галочки - или лучше: $( )
подоболочка - в seq
вызов. Это работает:
for i in $( seq 50 );
do ffmpeg -i input.mpg -sameq -ss 00:`expr $i \* 2 - 2`:00 -t 00:02:00 output.mpg; done
Другая вещь состоит в том, что Вы, вероятно, не хотите output.mpg
быть перезаписанным в каждом выполнении, не так ли?:) Использовать $i
в выходном имени файла также.
Кроме этого: В ударе можно просто использовать $(( ))
или $[ ]
вместо expr
- это также выглядит более ясным (по-моему). Кроме того, нет никакой потребности в seq
- расширение фигурной скобки - все, что необходимо получить последовательность. Вот пример:
for i in {1..50}
do ffmpeg -i input.mpg -sameq -ss 00:$[ i* 2 - 2 ]:00 -t 00:02:00 output_$i.mpg
done
Другая хорошая вещь о фигурных скобках состоит в том, что у Вас могут быть начальные нули на имена (очень полезный для сортировки файла в будущем):
for i in {01..50}
do ffmpeg -i input.mpg -sameq -ss 00:$[ i* 2 - 2 ]:00 -t 00:02:00 output_$i.mpg
done
Заметьте также, это i*2 - 2
может быть легко упрощен до i*2
если Вы просто изменяете диапазон:
for i in {00..49}
do ffmpeg -i input.mpg -sameq -ss 00:$[ i*2 ]:00 -t 00:02:00 output_$i.mpg
done