Randomizar bichos cowsay

Cowsay é um pequeno aplicativo divertido que desenha uma vaca que diz coisas, mas você pode fazer muito mais do que uma vaca, há todos os tipos de criaturas de arte ascii divertidas lá; mas como vamos chegar até eles? Muitas soluções simplesmente encontram o diretório onde os arquivos de vaca (os modelos que definem as criaturas) são armazenados e codificam isso; mas como você sabe onde eles estão?

Acontece que o cowsay dirá se você passar a bandeira -l assim:

cowsay -l

que produz o diretório e uma lista de todos os arquivos de vaca disponíveis – muito mais simples do que usar find. Mas se houver uma lista de arquivos de vaca lá, por que se preocupar em usar ls para obter a lista de diretórios? simplesmente apare a primeira linha canalizando para sed e peça a ele para excluí-la

cowsay -l  | sed "1 d"

agora temos uma boa lista limpa para randomizar; Você pode usar o shuf ou os utilitários integrados de eliminação de matrizes do bash; por uma questão de portabilidade, este script usa ambos:

#! /bin/bash
if type shuf > /dev/null; then
cowfile
="$(cowsay -l | sed "1 d" | tr ' ' 'n' | shuf -n 1)"
else
cowfiles
=( $(cowsay -l | sed "1 d") );
cowfile
=${cowfiles[$(($RANDOM % ${#cowfiles[*]}))]}
fi
cowsay
-f "$cowfile"

armazene isso como um script (ou seja, cowsay.sh ), coloque-o no seu caminho e logo você encontrará a felicidade aleatória da vaca. Confira

fortune | cowsay.sh