Pimp My Terminal

As software developers, we spend a lot of time staring at the good old terminal. By default, terminal looks rather dull. However, under that boring black & white layout, there are plenty of highly customizable options.

In this blog post, we're going to customize the command prompt so that it looks cool & also gives us extremely useful information.

Note: This post was written for OSX. Customizing terminal in other environments such as Linux should be fairly similar.

Emojis 🎉

Let's be honest here. Life is incomplete without emojis. 😍 We're going to add some emoji awesomeness to our terminal.

Open the terminal & modify the .bash_profile in your preferred editor. One such example is nano

nano ~/.bash_profile  

Add a new line at the bottom of the file & add the following code

PS1=🎉  

Save your changes and reload the .bash_profile file by using the following command.

source ~/.bash_profile  

Hurrah! You should see the 🎉 emoji as your terminal prompt now.

The next step is to randomize the emoji every time the terminal restarts. We will do this by picking a random emoji from a hard-coded list.

In the example above, EMOJIS is a hard coded list of emojis. Feel free to throw any emoji you like in there and as many as you want.

RANDOMEMOJI just grabs a random element of that array of emojis. I have 36 emojis so I have capped the random number to that value by using RANDOM%36.

Save the file & reload the source profile several times. You should see a new emojis pop up every time. Not bad eh!

Username

Emojis are cool but our prompt isn't very useful right now. The next thing I'd like to add is the username I'm logged in as. Edit the bash profile file & add \u at the beginning of the PS1 variable.

Now your PS1 should look like this PS1="\u $RANDOMEMOJI ". Save & reload the bash profile. Voila!

Current working directory

The next thing we're going to add to the prompt is the current working directory. Adding the current working directory is as simple as adding \w to the PS1 variable.

Git branch

In my opinion, this is one of the most useful things to add to the prompt. In order to accomplish this, we will write a function to parse the git branch information & add that to the PS1

parse_git_branch() {  
     git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/'
}

PS1="\u@\w \$(parse_git_branch) $RANDOMEMOJI $ "  

Colors

We have a lot of useful information but let's be honest, it could use a bit of color.

Let's start off by defining a few variables that will hold the color values

yellow="\e[1;33m";  
white="\e[1;37m";  
cyan="\e[1;36m";  

Now change the PS1 variable

PS1="\[${yellow}\]\u@\[${white}\]\w: \[${cyan}\]\$(parse_git_branch) $RANDOMEMOJI \[${white}\]$ "  

Save & reload. You should a beautiful prompt similar to this

That's it. We have a colorful, exciting & useful prompt.

If you liked this post, or have a configuration you'd like to share drop a comment or get in touch with me via twitter.