DEV Community

Cover image for Combinando o ls com o comando shuf ... "and more":
SÃĐrgio AraÚjo
SÃĐrgio AraÚjo

Posted on

Combinando o ls com o comando shuf ... "and more":

IntroduçÃĢo

English version

Alguns comandos nÃĢo geram uma lista de arquivos ou de sua saída, embora lidem com listas geradas por outros comandos, o shuf (embaralhador) ÃĐ um desses exemplos, se desejo pegar o nome de uma imagem aleatÃģria no meu diretÃģrio de imagens eu faço:

ls -1A ~/img/backgrounds/* | shuf -n 1
ðŸ”ī Hot News: voyegr/combinando o ls com o comando shuf and more i - āļ›āļĢāļ°āđ€āļ”āđ‡āļ™āļĢāđ‰āļ­āļ™ ðŸ”ī Hot News: voyegr/combinando o ls com o comando shuf and more i - āļ›āļĢāļ°āđ€āļ”āđ‡āļ™āļĢāđ‰āļ­āļ™

O comando acima pode ser usado para criar uma variÃĄvel a ser usada em outro comando, no caso um comando que alÃĐm de setar o seu papel de parede, baseado nas cores do wallpaper, vai configurar as cores do seu terminal.

sudo pip3 install pipx
pipx install pywal
ðŸ”ī Hot News: voyegr/combinando o ls com o comando shuf and more i - āļ›āļĢāļ°āđ€āļ”āđ‡āļ™āļĢāđ‰āļ­āļ™ ðŸ”ī Hot News: voyegr/combinando o ls com o comando shuf and more i - āļ›āļĢāļ°āđ€āļ”āđ‡āļ™āļĢāđ‰āļ­āļ™

O comando pipx instala seus programas em um sandbox, evitando conflitos no namespace. ApÃģs instaldo o pywal vocÊ terÃĄ um comando wal, usando ele criei o seguinte script:

/home/sergio/.local/bin/wal -i "$(ls -1A ~/img/backgrounds/* | shuf -n 1)"
ðŸ”ī Hot News: voyegr/combinando o ls com o comando shuf and more i - āļ›āļĢāļ°āđ€āļ”āđ‡āļ™āļĢāđ‰āļ­āļ™ ðŸ”ī Hot News: voyegr/combinando o ls com o comando shuf and more i - āļ›āļĢāļ°āđ€āļ”āđ‡āļ™āļĢāđ‰āļ­āļ™

Altere o caminho de acordo com o seu sistema e usuÃĄrios, apÃģs isso abra um novo terminal e rode esse comando:

AtualizaçÃĢo!

Assistindo vídeos sobre o pywal descobri que na verdade nÃĢo ÃĐ necessÃĄrio usar o comando shuf ou qualquer outro para pegar uma imagem aleatÃģria, apenas fornecendo o caminho da pasta dos papeis de parede o wal escolherÃĄ uma imagem aleatoriamente, contudo o conhecimento adquirido com o shuf fica, como dizem os norte americanos: "in the back burner", guardado, como por exemplo para escolhar uma mÚsica aleatÃģria em um momento qualquer.

wal --preview
ðŸ”ī Hot News: voyegr/combinando o ls com o comando shuf and more i - āļ›āļĢāļ°āđ€āļ”āđ‡āļ™āļĢāđ‰āļ­āļ™ ðŸ”ī Hot News: voyegr/combinando o ls com o comando shuf and more i - āļ›āļĢāļ°āđ€āļ”āđ‡āļ™āļĢāđ‰āļ­āļ™

Assim cada vez que vocÊ rodar o comando ...

wal -i "caminho-do-arquivo
ðŸ”ī Hot News: voyegr/combinando o ls com o comando shuf and more i - āļ›āļĢāļ°āđ€āļ”āđ‡āļ™āļĢāđ‰āļ­āļ™ ðŸ”ī Hot News: voyegr/combinando o ls com o comando shuf and more i - āļ›āļĢāļ°āđ€āļ”āđ‡āļ™āļĢāđ‰āļ­āļ™

... vocÊ verÃĄ um preview de como ficarÃĄ o tema do seu terminal.

No caso do meu "tiling window manager" o bspwm eu tenho um atalho no sxhkdrc:

# change background
super + b
    ~/.local/bin/wal -qi ~/img/backgrounds/
ðŸ”ī Hot News: voyegr/combinando o ls com o comando shuf and more i - āļ›āļĢāļ°āđ€āļ”āđ‡āļ™āļĢāđ‰āļ­āļ™ ðŸ”ī Hot News: voyegr/combinando o ls com o comando shuf and more i - āļ›āļĢāļ°āđ€āļ”āđ‡āļ™āļĢāđ‰āļ­āļ™

tambÃĐm uma linha no início do bspwmrc:

~/.local/bin/wal -qi ~/img/backgrounds/
ðŸ”ī Hot News: voyegr/combinando o ls com o comando shuf and more i - āļ›āļĢāļ°āđ€āļ”āđ‡āļ™āļĢāđ‰āļ­āļ™ ðŸ”ī Hot News: voyegr/combinando o ls com o comando shuf and more i - āļ›āļĢāļ°āđ€āļ”āđ‡āļ™āļĢāđ‰āļ­āļ™

E finalmente eu tenho uma linha no meu crontab que roda esse mesmo script a cada cinco minutos:

# crontab -e
# vim:et:sw=4:ts=4:cms=#%s:
# >/dev/null 2>&1   <- used to preven sending e-mail's
# env | grep -i display  to get your DISPLAY variable
# otherwhise feh will not be abble to change your background
# source: https://superuser.com/a/1122245/45032
DISPLAY=':0'
SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/home/sergio/.dotfiles/algorithm/shell/bash/
XDG_PICTURES_DIR=/home/sergio/img
WALLPAPER_DIR=$XDG_PICTURES_DIR/backgrounds/
WAL=/home/sergio/.local/bin/wal
MAILTO=""
*/5    *    *    *    *  $WAL -qi $WALLPAPER_DIR
ðŸ”ī Hot News: voyegr/combinando o ls com o comando shuf and more i - āļ›āļĢāļ°āđ€āļ”āđ‡āļ™āļĢāđ‰āļ­āļ™ ðŸ”ī Hot News: voyegr/combinando o ls com o comando shuf and more i - āļ›āļĢāļ°āđ€āļ”āđ‡āļ™āļĢāđ‰āļ­āļ™

Aleatoriedade em outros comandos

Para escolher uma mÚsica aleatoriamente eu poderia rodar o seguinte comando:

mpg123 $(ls **/*.mp3 | shuf -n 1)
ðŸ”ī Hot News: voyegr/combinando o ls com o comando shuf and more i - āļ›āļĢāļ°āđ€āļ”āđ‡āļ™āļĢāđ‰āļ­āļ™ ðŸ”ī Hot News: voyegr/combinando o ls com o comando shuf and more i - āļ›āļĢāļ°āđ€āļ”āđ‡āļ™āļĢāđ‰āļ­āļ™

Mas mesmo o comando mpg123 tem a opçÃĢo -Z que tambÃĐm faz a escolha aleatÃģria

Top comments (0)