Как открыть одну вещь, затем другую

Итак, я сделал команду в ~ .bashrc, используя команду alias tunes='...'. Поэтому я хочу, чтобы эта команда выполняла одно открытое музыкальное видео, а затем, когда это видео было открыто, раскройте следующее видео в строке. Используемая мной команда:

alias tunes='cd /path/; xdg-open musicvideo.wav; xdg-open musicvideo2.wav;...; cd'

и т. Д. То, что он делает, это только открытие последнего музыкального видео, после чего оно заканчивается. Я попытался изменить ; на &&, и он дает мне тот же результат. Любая помощь? Заранее спасибо.

1
задан 21 February 2017 в 06:17

2 ответа

Похоже, у вас уже есть ответ на ваш конкретный код, но мне интересно, почему вы не делаете этого с каким-то плейлистом? Если вы пытаетесь сделать этот псевдоним применимым к самому широкому диапазону сред, вы можете запустить некоторые программы, которые не могут интерпретировать файл списка воспроизведения (например, mplayer требует вариант -playlist), но в большинстве случаев он должен работать .

Формат M3U, который широко поддерживается, представляет собой простой текстовый файл с одним файлом на строку, либо с полным путем, либо просто с именем файла (предполагается, что файл находится в текущем каталоге). Это означает, что вы можете создать его с помощью простой команды, например ...

ls *.wav > playlist.m3u

... затем запустить ...

[cd to the relevant directory]
xdg-open playlist.m3u

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

3
ответ дан 23 May 2018 в 01:16

Проблема в том, что вы используете xdg-open. Процесс умирает вскоре после вызова фактического приложения (vlc, mplayer и т. Д.), И поэтому запускается следующая команда.

Вы можете проверить, как это происходит, если вы запустите этот скрипт:

#!/bin/bash
xdg-open /path/to/video &
echo "xdg-open PID is $!."
while [ -e /proc/$! ]; do
    echo "$! is alive."
    sleep 1;
done
echo "$! is not alive anymore."

Вы можете запустить медиаплеер напрямую, например:

vlc /path/to/first/video && vlc /path/to/second/video
2
ответ дан 23 May 2018 в 01:16
  • 1
    Да, это можно сделать и для нескольких файлов, которые, вероятно, потребуют нескольких циклов для каждого файла – Sergiy Kolodyazhnyy 21 February 2017 в 08:17

Другие вопросы по тегам:

Похожие вопросы: