Automation via shell aliases
When working on software development projects there are many repetitive tasks to do, may it be the deployment of a binary, starting of different servers in docker containers or standalone, the exchange of config files for different environments, the migration of a database or something simple as the navigation to deep paths on the command line to do some editings or server starts there. All this tasks can be annoying and over time they add up to a significant amount of time which is not very productive. The logical counter measure for a developer should be to automate as much as possible of this recurring tasks. For example you can bundle up the start of different docker containers via docker compose or delegate some tasks to a CI server but in the end some tasks will remain which you have to trigger manually -at least on your development machine- which is where your shell can become handy with a feature called ‘alias’. An alias is an automation feature which at least every popular Linux/Unix/macOS shell provides. With an alias you can define a new command that executes a series of shell commands completely automatic.
I have a rule of thumb defined where I try to automate every manual task by an alias which I have to do at a minimum of three times a week (to be honest I also do an alias if I have to do a task two times every week just because it is such a handy feature).
To define a new alias all you have to do is to add it to the config file of your shell. In the case of the very popular bash shell this file is called .bashrc (on macOS you have to use the .bash_profile file when you use bash) while for zsh it is called .zshrc but in both cases the file sits in the users home folder. All you have to do is to open your rc file with an text editor, scroll to the end and add a new line starting with the keyword ‘alias’ followed by the alias name you chose and the command that should be executed. A sample command could look like this:
alias cdwildfly="cd ~/programming/java/servers/wildfly/"
This alias would change the directory to the folder wildfly which lies under my home directory (the ~ is a shortcut for the home directory). Before you can use the alias you have to make sure the shell reads it’s config file again. The easiest way to do so is to logout and login again. After that you are now able to change to the wildfly directory by typing “cdwildfly” and this is it.
Often you want to have a more complex shortcut where multiple commands should be execute after one another. To achieve this the only thing you have to do is to separate the different commands via a semicolon. An example could be the copy of the creation of a subfolder followed by copying a config file there:
alias cpconfig="mkdir ~/server/config/; cp serverconfig ~/server/config/"
You can get really complex here but I would not recommend doing much more then two or three commands here. If it gets more complicated then that I would recommend creating a shell script that does the complex work which could then be triggered again by an alias.
I use this technique as much as possible. When I start my computer in the morning I have one alias starting my database docker container, another one checking for database migrations and a third for starting a development server. All this three tasks are done via autocompletion in just a few seconds. Without it I wouldn’t even have navigated to the right directory in the same time.