39 comments

[ 3.7 ms ] story [ 91.4 ms ] thread
I use this very often with my kids (3yo twins). It's fun for them to see animals, dragons and other things popping up on the white screen. I usually ask them what they what they want see, prepare it and then let them press on enter to display it. Simpler things e.g. 'gnu' or 'fox' they can type themselves.
If they like ponies then check out ponysay, just an alternative with some cute colorful ponies in the terminal!
next project: use sed (or your favourite shell/scripting language) as a filter in front of ponysay, to rewrite "anybody"->"anypony", "somebody"->"somepony", etc.
Colorful ponies? Blasphemy!

The Unix way is to do one thing and do it well:

    fortune | cowsay | lolcat
I like putting it at the end of scripts that take a long time, it's hard to miss the script having completed this way
That's an excellent idea. It neatly distinguishes a script that completes successfully from a script that exits prematurely.

    -----------------------------------------
    < pg says 'What problem does this solve?' >
     -----------------------------------------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||
The best startups always look like toys initially.
The worst too though.

I.e. watch out for survivorship bias.

Cowsay has been around for decades. It's here to stay.
Note that my reply was about startups, and not about cowsay (which is not a startup).
> cowsay (which is not a startup).

True, but just wait until we unleash the first CaaS (Cowsay as a Service) on the world in a few weeks...

We're going to make a gazillion dollars! I can feel it.

On every machine I operate, I put

> fortune | cowsay

in to my .bashrc. Every time I open a new terminal I get a cow telling me a fortune. I have done this for about 10 years now and it just feels right.

I know a guy who got fired for doing this.
I’d wager there was more going on than just this. He was under performing, or failing in some other way and this was just the excuse to get rid of him.
Well that doesn't seem reasonable or a valid excuse for firing someone (or at least in places with a minimum of employee protection). What problem does it cause if you customise your shell prompt?
I used to send fortune to a printer display. It did backfire as some of the fortune quotes can be offensive if they get cut-off by the display. Flags are required to do the true one-liners. Nobody actually got upset as much more offensive things were shouted across the room daily [1] but leadership suggested it should be avoided.

[1] - The Oracle system pw was intentionally as offensive as it could be and people would forget it on purpose so it could be shouted across the room. I have good memories of that place. It was laid back and the people were fun. It was acquired and parted out by a bank.

perhaps the only good program ever written?
Let’s not forget sl
Oh yeah, just for a second I thought it wasn’t irony. Let’s set up the guardrails.
All the best hackers pipe their script output to cowsay.
It's a bit weird finding `cowsay -f sodomized` though lol
If you have this installed on your system and run an Ansible playbook, all the playbook logging will be automatically piped through cowsay.

I'm not sure why anyone would want to, but you can disable this behavior by setting ANSIBLE_NOCOWS=1

It's a tad silly that they made this the default
That’s not the only silly thing they did. Ansible is awful.
I have a hard time finding where I land with this Easter egg.

Someone who doesn't appreciate a little fun, probably won't have cowsay installed on their controller

And yet... I've been toting around a role that's basically a list of packages to ensure are absent from the controller/managed hosts. Cowsay has been a long time resident

For such a little piece of fun, I 'have' to maintain a lot unnecessarily (if I want useful output)

I think this not being a "whoa neat" thing I encounter every now and then... but something I regularly endure, is part of it. We aren't all solo administrators

I found this out by accident. I wasn't mad.
Cowsay was one of the first "hacky show your friends" command.

I still use it when I want to impress someone.

I've been using this a lot. Check this out:

$ fortune | figlet | cowsay -n -f tux

or

$ fortune | cowsay -n -f dragon

even this!

$ fortune | cowsay -n -f dragon | cowsay -n | cowsay -n -tux

For more practical use try espeak, I often use it in long running scripts that runs somewhere in background, e.g. it tells me when keyboard get disconnected because of the soldering iron or when it's time for dinner, or a pomodoro timer, or reminds me I should turn off IM when I put new work in time tracking app.
> or a pomodoro timer,

That's one of my top uses for espeak. I have a script setup as /home/bin/work that looks like this:

    #!/bin/bash

    sleepTime="20m" # default is 20 minutes

    if [ -z "$1" ]; then
        echo "using sleepTime = $sleepTime"
    else
        echo "using sleepTime = $1"
        sleepTime=$1
    fi


    reset ; date ; echo "You should be working ($sleepTime)"  ; sleep $sleepTime ; reset ; echo "Time to take a break!" ; while true ;
       do
           espeak-ng "Time to take a break"; sleep 3s ;
       done
This was inspired by another HN poster from a post a few years ago. I'd credit them, but I don't remember exactly who it was now.

That said, I'm sure this script could be improved considerably, but for my purposes it suffices.

For Apple users, you can use the `say` command which is included in macOS.
(comment deleted)
For fans of neofetch, you can replace the OS logo with a cowsay animal.

  neofetch --ascii "$(fortune | cowsay -W 25)"

   __________________________    ...@fedora 
  / Q. Why is this so        \   ----------------- 
  | clumsy? A. The trick is  |   OS: Fedora Linux 39 (KDE Plasma) x86_64 
  | to use Perl's strengths  |   Host: Laptop 13 (AMD Ryzen 7040Series) A5 
  | rather than its          |   Kernel: 6.7.6-200.fc39.x86_64 
  | weaknesses.              |   Uptime: 3 hours, 48 mins 
  |                          |   Packages: 3936 (rpm), 50 (flatpak) 
  | -- Larry Wall in         |   Shell: bash 5.2.26 
  | <8225@jpl-devvax.JPL.NAS |   Resolution: 2256x1504 
  \ A.GOV>                   /   DE: Plasma 5.27.10 
   --------------------------    WM: kwin 
          \   ^__^               Theme: [Plasma], Breeze [GTK2/3] 
           \  (oo)\_______       Icons: [Plasma], breeze [GTK2/3] 
              (__)\       )\/\   Terminal: konsole 
                  ||----w |      CPU: AMD Ryzen 5 7640U w/ Radeon 760M Graphics (12) @ 4.971GHz 
                  ||     ||      GPU: AMD ATI c1:00.0 Phoenix1 
                                 Memory: 4702MiB / 27742MiB
> fortune | cowsay

Definitely be careful about using fortune in a corporate environment or public space if you don't know what dat files you are using or you might just get an extremely unwelcome surprise.

I was practicing a presentation and used to use fortune all the time. I forget exactly what it output but I remember being absolutely mortified about what could have happened if that had popped up during an internal company tech talk.

Kudos to brew for keeping unsuspecting people safe

https://github.com/Homebrew/homebrew-core/commit/3fb3c4c3e55...