04
Jul
09

Futurama ascii with Slashdot header quotes in your terminal

Fry, now with quotes!

Fry, now with quotes!

I know you want this. And here’s how. The tutorial even noobs can follow.

There is an easter-egg in the application apt. Have a look for yourself:

Code:
apt-get moo

If you want to have a silly cow greet you when you open up a terminal window, by all means put this command at the top of your bashrc. But there is a better way of doing it. Install this application:

Code:
sudo apt-get install cowsay

Now try running it with something you want to say,

Code:
cowsay Hello! I am awesome!
Code:
 ______________________
< Hello! I am awesome! >
 ----------------------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||

Now by using the -f option, you can choose other characters to greet you. Try out some of these:

Code:
cowsay -f tux "Hello I am groovy!"
cowsay -f sheep "Baaaaaaaa"
cowsay -f dragon "Rarr!"

To see all of the available options, run

Code:
cowsay -l

Wouldn’t it be great if you could have these characters say something different each time? Well, why the hell not, huh?

First make sure you have these packages:

Code:
sudo apt-get install fortunes fortunes-off

Now try running

Code:
fortune

to see a quote. Fortune has options too.

Code:
fortune -s   # for short quotes
fortune -l   # for long quotes
fortune -o   # for offensive quotes

You can combine those options a little, too. So for short, offensive quotes, go ahead and run

Code:
fortune -so

So how about combining these two awesome things? Go ahead and run this:

Code:
cowsay -f tux "$(fortune)"
Code:
 ____________________________________
/ To thine own self be true. (If not \
\ that, at least make some money.)   /
 ------------------------------------
   \
    \
        .--.
       |o_o |
       |:_/ |
      //   \ \
     (|     | )
    /'\_   _/`\
    \___)=(___/

Now we’re really getting somewhere! Combine some of the techniques we already know and we can do quite a few cool things. Let’s try a few more commands!

Code:
cowsay -f dragon "Hello, the time is $(date "+%k:%M, on %A, %d of %B, %Y.")"
cowsay -f tux "$(fortune -so)"

Well, now we have lots of cool things for a fancy welcoming prompt. Let’s try and incorporate the old geek-stable, Slashdot html-headers! You’ll need an internet connection for this stuff, and faith in Slashdot’s servers not exploding for some reason. First of all let’s have a look at them:

Code:
curl -Is slashdot.org

If you look closely you’ll see a random Futurama quote in there. Brilliant! We should use those for our greeting. And it turns out we can, by running the following command:

Code:
curl -Is slashdot.org | egrep '^X-(F|B|L)' | sed 's/^..//'

which strips all the information except for the quote. Have a look at the “(F|B|L)” section. This part of the command dictates whether you receive a Fry, Bender, or Leela quote. At the moment it will get any of them, so for individual characters, you must run

Code:
curl -Is slashdot.org | egrep '^X-(F)' | sed 's/^..//'  # for Fry
curl -Is slashdot.org | egrep '^X-(B)' | sed 's/^..//'  # for Bender
curl -Is slashdot.org | egrep '^X-(L)' | sed 's/^..//'  # for Leela

Wouldn’t it be awesome if we could use the ascii art from the cowsay application for these quotes? We could, but it might look a little odd:

Code:
cowsay -f tux "$(curl -Is slashdot.org | egrep '^X-(F|B|L)' | sed 's/^..//')"
 ____________________________________
< Fry: I'll be whatever I wanna do.  >
 ------------------------------------
   \
    \
        .--.
       |o_o |
       |:_/ |
      //   \ \
     (|     | )
    /'\_   _/`\
    \___)=(___/

We’re going to need some ascii art for Fry, Bender and Leela. Luckily for you, I’m going to give you some [gotfuturama.com]. All you need to know is that cowsay uses cowfiles, which are stored in “/usr/share/cowsay/cows/”

For Fry,

Code:
gksudo gedit /usr/share/cowsay/cows/fry.cow

And paste the following into it:

Code:
the_cow = <<EOC;
   $thoughts
    $thoughts
             u
      .  x!X
    ."X M~~>
   d~~XX~~~k    .u.xZ `\ \ "%
  d~~~M!~~~?..+"~~~~~?:  "    h
 '~~~~~~~~~~~~~~~~~~~~~?      `
 4~~~~~~~~~~~~~~~~~~~~~~>     '
 ':~~~~~~~~~~(X+"" X~~~~>    xHL
  %~~~~~(X="      'X"!~~% :RMMMRMRs
   ^"*f`          ' (~~~~~MMMMMMMMMMMx
     f     /`   %   !~~~~~MMMMMMMMMMMMMc
     F    ?      '  !~~~~~!MMMMMMMMMMMMMM.
    ' .  :": "   :  !X""(~~?MMMMMMMMMMMMMMh
    'x  .~  ^-+="   ? "f4!*  #MMMMMMMMMMMMMM.
     /"               .."     `MMMMMMMMMMMMMM
     h ..             '         #MMMMMMMMMMMM
     f                '          (MMMMMMMMMMM
   :         .:=""     >       dMMMMMMMMMMMMM
   "+mm+=~("           RR     HMMMMMMMMMMMMM"
           %          (MMNmHHMMMMMMMMMMMMMMF
          uR5         dMMMMMMMMMMMMMMMMMMMF
        dMRMM>       dMMMMMMMMMMMMMMMMMMMF
       RMHMMMF=x..=" RMRMMMMMMMMMMMMMMMMF
      MMMMMMM       'MMMMMMMMMMMMMMMMMMF
     dMMRMMMK       'MMMMMMMMMMMMMMMMM"
     RMMRMMME       3MMMMMMMMMMMMMMMM
    XMMMMMMM>       9MMMMMMMMMMMMMMM~
   'MMMMMMMM>       9MMMMMMMMMMMMMMF
   tMMMMMMMM        9MMMMMMMMMMMMMM
   MMMMMMMMM        9MMMMMMMMMMMMMM
  'MMMMRMMMM        9MMMMMMMMMMMMM9
EOC

For Bender,

Code:
gksudo gedit /usr/share/cowsay/cows/bender.cow

And paste the following:

Code:
$the_cow = <<EOC;
   $thoughts
    $thoughts
     ( )
      H
      H
     _H_
  .-'-.-'-.
 /         $thoughts
|           |
|   .-------'._
|  / /  '.' '. $thoughts
|  $thoughts $thoughts @   @ / /
|   '---------'
|    _______|
|  .'-+-+-+|
|  '.-+-+-+|
|    """""" |
'-.__   __.-'
     """
EOC

For Leela,

Code:
gksudo /usr/share/cowsay/cows/leela.cow

And paste the following:

Code:
$the_cow = <<EOC;
             $thoughts
              $thoughts

                    '#%n.
            ..++!%+:/X!!?:              .....
              "X!!!!!!!!!!?:       .+?!!!!!!!!!?h.
              X!!!!!!!!!!!!!k    n!!!!!!!!!!!!!!!!?:
             !!!!!!!!!!!!!!!!tMMMM!!!!!!!!!!!!!!!!!!?:
            X!!!!!!!!!!!!!!!!!5MMM``""%X!!!!!!!!!!!T4XL
            !!!!!!!!!X*")!!!!!!!?L       %X!!!!!!!!!k `
           '!!!!!!X!`   !!XX!!!!!!L       'X!!!!!!!!!>
           'X!!!!M`    '" X!!!!!!!X        !!!!!!!!!!X
            X!!!f^~('>   X!!!!!!!!!        '!!!!!!!!!X
            X!!X     `.  X!!!!!!!!f        '!!!!!!!!!!
            !Xf  O    '  '!!!!!!X"         '!!!!!!!!!X
           "`f-.     :~  MX*t!X"           X!!!!!!!!!>
             >.         W! ~!             '!!!!!!!!!X
            :`             ':             X!!!!!!!!!!
            ~ ^`          '              '!!!!!!!!!X
            `~~~~~~~~     !              X!!!!!!!!!X
                `~~~      !             '!!!!!!!!!!>
                  >       !             (!!!!!!!!!X
                          !             !!!!!!!!!!X
                  >       '             '!!!!!!!!!!
                .:         /:`^-.        X!!!!!!!!!>
           /`  ~/         /(     `:       X!!!X!!!!!:
         /   : f         f'        !       `XX!M!!!!!%
        ~   / ~        :  >         4            "*!!!*
       ~   ~ '        ~   >          :
EOC

So now go ahead and try out your skills, run them to see if they work:

Code:
cowsay -f fry "$(curl -Is slashdot.org | egrep '^X-(F)' | sed 's/^..//')"
cowsay -f bender "$(curl -Is slashdot.org | egrep '^X-(B)' | sed 's/^..//')"
cowsay -f leela "$(curl -Is slashdot.org | egrep '^X-(L)' | sed 's/^..//')"

Now you may have noticed that the quotes don’t always come through. That’s mainly because there is only ever one quote in the headers at any one time. Searching for a Leela quote when there is only a Bender quote available will fail! Luckily, there is a way around this. What we need to do is search the headers for the quote, and then depending on whose quote it is, bring up the cowsay application accordingly. Well lucky for you I’ve already done it for you. Paste this code at the top of your bashrc:

Code:
function futurama() { wee=$(curl -Is slashdot.org | egrep '^X-(F|B|L)' | sed 's/^..//'); if [[ $wee = "Fry"* ]]; then cowsay -f fry $(echo $wee | sed 's/^Fry: //'); fi; if [[ $wee = "Ben"* ]]; then cowsay -f bender $(echo $wee | sed 's/^Bender: //'); fi; if [[ $wee = "Lee"* ]]; then cowsay -f leela $(echo $wee | sed 's/^Leela: //'); fi; }

Now the quotes match. Save your bashrc or zshrc file and close. Now every time you’re in the mood for your Futurama fix, just fire up that command.

So you know how to have a random quote greet you. And you know how to have a funny ascii character greet you. Wouldn’t it be great if you could have both? Well you can!

Code:
cowsay -f tux "$(fortune)"
Code:
 ____________________________________
/ To thine own self be true. (If not \
\ that, at least make some money.)   /
 ------------------------------------
   \
    \
        .--.
       |o_o |
       |:_/ |
      //   \ \
     (|     | )
    /'\_   _/`\
    \___)=(___/

Now we’re really getting somewhere! Combine some of the techniques we already know and we can do quite a few cool things. Let’s try a few more commands!

Code:
cowsay -f dragon "Hello, the time is $(date "+%k:%M, on %A, %d of %B, %Y.")"
cowsay -f tux "$(fortune -so)"

Pretty cool. Maybe you would like one of these, hrmm?


1 Response to “Futurama ascii with Slashdot header quotes in your terminal”



Leave a Reply




 

July 2009
M T W T F S S
    Aug »
 12345
6789101112
13141516171819
20212223242526
2728293031  

Stuff goes here

Hijack this blog

You want to use something from this blag? What the hell is wrong with you? Do you want to fail at life? If you reuse the crap I post here, people will say, "Wow, I never knew anybody could be so ignorant!" Then they will go and find a weapon to beat you with. That's right. There's your god-damned copyright notice. You really care about that shit? Fine. Take it, copy it, pretend it's your own work. Do whatever the hell you want with it, I don't care.

Blog Stats

  • 3,145 people hate me.