Como fazer uma coisa abrir depois outra

4

Então eu fiz um comando em ~ .bashrc usando o comando alias tunes='...' . Então, o que eu quero que este comando faça é abrir um videoclipe, quando o vídeo acabar, abrir o próximo vídeo da fila. O comando que estou usando é:

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

e assim por diante. O que está fazendo é apenas abrir o último videoclipe e terminar. Eu tentei mudar o ; com && e me dá o mesmo resultado. Qualquer ajuda? Agradeço antecipadamente.

    
por Peyto 21.02.2017 / 02:39

3 respostas

4

Se xdg-open abrir imediatamente e não esperar, considere usar o nome real do reprodutor de música que você usa (o padrão para o Ubuntu seria totem ) em vez de xdg-open

Alternativamente, o que também pode ser feito é isto:

xdg-open file.wav ; while pgrep -f "file.wav" >/dev/null ; do : ; sleep 1 ; done

Isso provavelmente seria melhor em um script em vez de alias, então você teria várias linhas. Basicamente, aqui colocamos um laço while que nos impede de ir para a próxima instrução, e estamos repetidamente verificando se existe um processo que tenha file.wav em sua linha de comando. Uma vez que não há processo como esse, você pode ir para a próxima linha de xdg-open

    
por Sergiy Kolodyazhnyy 21.02.2017 / 03:59
3

Parece que você já tem uma resposta para o seu código específico , mas estou me perguntando por que você não está fazendo isso com algum tipo de playlist? Se você estiver tentando fazer com que esse alias seja aplicável à maior variedade de ambientes, é possível encontrar alguns programas que não podem interpretar um arquivo de lista de reprodução (por exemplo, o mplayer requer a opção -playlist ), mas na maioria dos casos deve funcionar .

O formato M3U , que é amplamente suportado, é um arquivo de texto simples com um arquivo por linha, com caminho completo ou apenas o nome do arquivo (assume que o arquivo está no diretório atual). Isso significa que você pode criar um com um comando simples como…

ls *.wav > playlist.m3u

… então corra…

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

... no seu alias. No entanto, se você estiver fazendo isso em um ambiente conhecido, provavelmente será mais confiável iniciar um programa específico que você saiba que suporta o formato.

    
por Moilleadóir 21.02.2017 / 04:55
2

O problema é que você está usando xdg-open . O processo morre logo depois de chamar o aplicativo real (vlc, mplayer, etc) e, assim, o próximo comando é executado.

Você pode verificar como isso ocorre se você executar este script:

#!/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."

Você pode iniciar o media player diretamente, por exemplo:

vlc /path/to/first/video && vlc /path/to/second/video
    
por Samuel Santana 21.02.2017 / 04:08