Command Line Mastery: All About Aliases

What is an alias?

An alias is a feature of command line shells. They are a way to store command and parameters that you use frequently against a memorable name. Basically, they’re like a function or method.

If that didn’t make sense, let me give you an example. Say you were working in a project that had a really awkward command for running all of the tests. You want them to run in a particular way.

For instance, let’s pretend you have to type in the below to run the tests in multithreaded mode to make them go faster.

tester --run-tests --in-parallel --nicely-formatted --with-coverage ./src/tests/actual-tests

Depending on the setup of your terminal, you might have to manually type that in every time!

Would it not be more productive and more accurate to just type this?:

tpc

tpc being an abbreviation for tests parallel coverage. It might be even better to use something more readable like this:

testall

How do I set up an alias?

  1. Open your terminal
  2. Open / make a bash profile
  3. Open / make a .alias file
  4. Link to the .alias file from the bash profile
  5. Add aliases

1. Open your terminal

On windows, open git bash if you have it installed.

If you are using macOS, open the app called Terminal or use iTerm 2 if you have it installed.

If you are using Ubuntu open the app called Terminal.

Alternatively, if you prefer, you can use the terminal built into your IDE.

2. Open / make a bash profile

If you prefer to manage files using your mouse, you can do this from your file manager. However, you will need to enable hidden files.

First we need to check if we already have one. Type in the following command

ls -lah ~

This will print out all of the files in your home directory.

Look for a file with one of these names. The files all start with a dot/period. These are called dot files and they are hidden by default.

  • .profile
  • .bash_rc
  • .zsh_rc
  • .bashrc
  • .alias

If you don’t have one of these files don’t worry. Create a file called .profile and .alias and open it in a text editor.

By the way, when I say bash profile, I mean your file with one of the names from the above list.

3. Make an alias file

Same as before, if you have a .alias file in your home directory open it in an editor, otherwise create it and then open it.

4. Link to the .alias file from the bash profile

If you have a .alias file already, this may be done for you.

You’ll need to find the path to your home directory. Your home directory is where these dot files normally live. It is also where your Documents, Desktop, Downloads (etc) folders are.

In your terminal, type in

cd ~

pwd

You will see output similar to

/users/home/yourname

In your bash profile, add the following line to the bottom, replacing the filepath with the one you found using pwd.

source /users/home/yourname/.alias

5. Add aliases

Now we can finally add some aliases. Let’s check it all worked by adding a hello world one to the .alias file.

alias hello="echo 'hello, world!'"

Then you will need to open a new terminal, or type in the following command to reload the alias profile.

source ~.yourbashprofile

Now type:

hello

You should see the following output:

hello, world!

Easy right? Now you can add all of the long or repetitive commands you frequently use.

Versioning

You don’t need to keep the .alias file in your home directory. You could keep it in a folder and link to it there.

This folder could contain shell scripts and be a git repo so you can publish it on GitHub/GitLab/BitBucket for your team to use or for the next time you get a new laptop.

For me, I have a folder called bin/ in my home directory where I keep my .alias and some handy custom commands. One of which you will see below.

My current bash profile

I’ve modified this to remove some of the work stuff but I’ve kept it mostly intact. Please note that I’m using macOS and the notification one only works on Macs.


# display a notification that the tests are done

alias testsdone="osascript -e 'display notification \"Tests have finished running have they passed?\" with title \"End to End Tests: DONE\"'"

# git commands

alias gs="git status"

alias gc="git commit"

# React JS shortcut

alias reduxify="touch Actions.ts Reducer.ts Types.ts AsyncActions.ts"

# Spring boot

alias runlocal='mvn something:run -Dspring.profiles.active=environment'

# frequently accessed directories

alias api='cd /Users/myname /api-project'

alias ui='cd /Users/myname/UUB-project'

# tests

alias e2e="cd ~/ebond-ui/; npm run e2e-with-mock-server; testsdone"

alias testall="ui; npm run testall; testsdone"

alias parallel="ui; npm run test-parallel; testsdone";

Notice that you can separate multiple commands in aliases with a semicolon. However, if the alias grows over 3 steps, you should create a function instead. This is very easy and it works in the same way as an alias.

I will be releasing a post soon about how I’ve used a shell function to extract the story id from the current branch in git to use in commit messages.

Update: You can find it here.

2 thoughts on “Command Line Mastery: All About Aliases

Leave a Reply

Your email address will not be published. Required fields are marked *