Pular para o conteúdo

Desligando o computador quando acabarem as músicas na sua lista de reprodução do MPD

O título é autoexplicativo.

Sobre o "#!/usr/bin/env bash", podemos quebrar em duas partes:

O sheebang é a forma padrão de especificar que um certo arquivo é um script.

O "/usr/bin/env" tem um artigo na Wikipédia só para ele ( https://pt.wikipedia.org/wiki/Env ) e várias perguntas/respostas no StackOverflow.

O comando grep é usado para filtrar a saída do comando mpc.

A opção "-F" tem o mesmo efeito do comando fgrep, mas é preferível devido a recomendação da manpage, "Direct invocation as either egrep or fgrep is deprecated".

A opção "-q" é usada por questões de desempenho. Como só estamos interessados em saber se o padrão "playing" está presente ou não, não faz sentido imprimir as ocorrências e, também, não faz sentido continuar a busca após descobrir que a ocorrência existe. Além do desempenho, nós realmente não queremos que a saída seja impressa.

A opção "-s" é usada para suprimir mensagens de erro.

Algumas pessoas gostam também de especificar a opção "-o", para instruir o grep a só imprimir o padrão que foi pesquisado, mas é inútil dada que a opção "-q" foi utilizada. Talvez seja útil como uma garantia maior em ambientes diferentes que usam implementações diferentes do bash, mas já utilizamos comportamento específico do grep GNU de qualquer forma (consulte a manpage).

O comando ":" é o comando que não faz nada (se não acredita, consulte "help :") e é usado, porque a construção while exige um corpo. Poderia ser substituído por "sleep 1", para não ficar consumindo processamento da CPU o tempo todo, mas como meu PC é um quad-core e esse script exige poucos recursos, não me importei com isso. Também poderia ser substituído por "mpc current -w", que faria o trabalho de esperar a música atual acabar, mas isso pode criar uma race condition não desejada.

Por último, temos o já conhecido comando "shutdown -h now", que hoje em dia poderia (algo desnecessário) ser substituído por "systemctl halt".
Vinícius dos Santos Oliveira vinipsmaker
Hits: 6.447 Categoria: Shell Script Subcategoria: Miscelânea
  • Download
  • Nova versão
  • Indicar
  • Denunciar

Descrição

O título é autoexplicativo.

Sobre o "#!/usr/bin/env bash", podemos quebrar em duas partes:

O sheebang é a forma padrão de especificar que um certo arquivo é um script.

O "/usr/bin/env" tem um artigo na Wikipédia só para ele ( https://pt.wikipedia.org/wiki/Env ) e várias perguntas/respostas no StackOverflow.

O comando grep é usado para filtrar a saída do comando mpc.

A opção "-F" tem o mesmo efeito do comando fgrep, mas é preferível devido a recomendação da manpage, "Direct invocation as either egrep or fgrep is deprecated".

A opção "-q" é usada por questões de desempenho. Como só estamos interessados em saber se o padrão "playing" está presente ou não, não faz sentido imprimir as ocorrências e, também, não faz sentido continuar a busca após descobrir que a ocorrência existe. Além do desempenho, nós realmente não queremos que a saída seja impressa.

A opção "-s" é usada para suprimir mensagens de erro.

Algumas pessoas gostam também de especificar a opção "-o", para instruir o grep a só imprimir o padrão que foi pesquisado, mas é inútil dada que a opção "-q" foi utilizada. Talvez seja útil como uma garantia maior em ambientes diferentes que usam implementações diferentes do bash, mas já utilizamos comportamento específico do grep GNU de qualquer forma (consulte a manpage).

O comando ":" é o comando que não faz nada (se não acredita, consulte "help :") e é usado, porque a construção while exige um corpo. Poderia ser substituído por "sleep 1", para não ficar consumindo processamento da CPU o tempo todo, mas como meu PC é um quad-core e esse script exige poucos recursos, não me importei com isso. Também poderia ser substituído por "mpc current -w", que faria o trabalho de esperar a música atual acabar, mas isso pode criar uma race condition não desejada.

Por último, temos o já conhecido comando "shutdown -h now", que hoje em dia poderia (algo desnecessário) ser substituído por "systemctl halt".
Download shutdown_on_mpd_stop.sh Enviar nova versão

Esconder código-fonte

#!/usr/bin/env bash

while mpc | grep -Fqs 'playing'; do
    :
done

shutdown -h now

Balanceamento e Redundância utilizando 2 Links Speedy (ip fixo)

Extração do áudio de um DVD

Shell Script para compilar o suporte À Logitech Quickcam Express no Slackware / Vector / Slax Linux

AVI para DVD - Cria seu DVD com menu e legendas

Postando no Twitter

Nenhum comentário foi encontrado.

Contribuir com comentário

Entre na sua conta para comentar.