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

Publicado por Vinícius dos Santos Oliveira (última atualização em 19/02/2014)

[ Hits: 5.631 ]

Homepage: https://vinipsmaker.github.io/

Download shutdown_on_mpd_stop.sh




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".

  



Esconder código-fonte

#!/usr/bin/env bash

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

shutdown -h now

Scripts recomendados

Localizando tentativas de invasão

Scanning com Matriux

tira_usb.sh - Remover dispositivo USB

Instalação do Java Runtime Environment em distros Debian-like

Shell script para duplicação de CD's


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts