As it is known, Linux and Unix were created as command line based systems, which means having control of the commands typed is basically the most important thing to be a *nix SysOp. This is where ‘alias’ command comes to the show and can be extremely useful, especially for security purposes and to simplify work for a system administrator.
Linux alias command
The shell alias is simply a way to reference another command. It can be used to avoid repetitive long typing of commands and shell lines and simplify work or to even make things safer or dumb-proof.
Take a simple example where you have to use ls command to show everything in reverse chronological order. You can type ls -lrta all the time or you create an alias (say) ‘ll’ that will be equivalent to ls -lrta. It will save you a few keystrokes.
In a similar fashion, you can substitute long and complicated commands with small and simple commands by using alias in Linux.
Let’s see how to make alias in Linux.
How to create alias in Linux
I’ll continue with the same example I used above.
alias ll='ls -lrta'
You must note a few things:
- The substituted command is always used under the inverted commas (‘).
- There must be no spaces before or after the equals sign in the alias command. If you mistakenly put a space, you’ll see an error like alias not found.
- Be careful in choosing the name of the alias. There are no reserved keywords so you may replace an existing command with a totally irrelevant command.
Now, the alias you just is temporary. If you exit the shell, you’ll lose the alias. You need to make the alias permanent.
In order to add aliases that can work in a system all the time, you need to simply edit your user’s (or any other user’s) .bashrc file. This file is located in your /home/<username>/ folder. You can use vim command to edit the file in terminal.
user@system:~$ vim ~/.bashrc
This will immediately open your .bashrc file and you must start adding aliases by the end of the file, just after the last written line of it.
I suggest creating either blocks or at least adding commentaries in the file for each of the aliases created so it’s easier in the future to know what is each thing for maintenance purposes.
How to see all the alias set on your Linux system for you
If you want to see all the alias set on the system for you, you can check the configuration file of your shell like ~/.bashrc, ~/.zshrc etc.
However, a much easier way to see all the alias would be to simply run the alias command without any arguments.
A typically Ubuntu system has the following alias set by default.
alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '''s/^s[0-9]+s//;s/[;&|]s*alert$//''')"'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l='ls -CF'
alias la='ls -A'
alias ll='ls -lrt'
alias ls='ls --color=auto'
My favorite alias in Linux I cannot live without
Let me share some aliases that I always use to work more effectively in Linux.
1. Making ‘rm’ safer
As it is well known, rm command is very commonly used day by day and can be also very destructive and disruptive of a system if not properly used.
This is why, I use the following alias:
#make rm command safer alias rm="rm -i"
This makes ‘rm’ command safer as whenever you use it, it will always ask if you are sure you want to perform the infamous removal operation before proceeding, giving you a second and last chance to not break things unintentionally.
2. Making ssh to other systems easier and faster
Sometimes, especially if you use private keys instead of credentials to log in to other Linux systems, it can be easier to set up aliases for each of them with mnemonic names.
As a SysOp, I use SSH for logging in to different Linux servers and I have several private keys, depending on my clients, therefore it helps me to have aliases such as:
#alias for servers SSH alias sshserver1='ssh -i ~/Documents/IT/SSH-keys/server1.pem email@example.com' alias sshserver2='ssh -i ~/Documents/SSH-keys/server2.pem firstname.lastname@example.org' alias sshplexserverhome='ssh email@example.com' alias sshclientserver='ssh -i ~/Documents/IT/SSH-keys/client.pem firstname.lastname@example.org'
As you can see, I have all my private keys in a folder named “SSH-keys” inside my own user’s folder and then I simply create aliases to connect each of them, following a standard of “ssh”+”name of the server”.
This way I only have to remember the name of the server I want to connect and not where the key is located, the name of each key (if they are different) or even the username that needs to be used for each server to connect.
3. Show time or date for day to day things
Some people either because they script things that use specific times or need to consult time and/or date and want to have in specific formats, can get some benefit of aliases by doing:
alias nowtime='date +"%T"' #this will show the current time in 24hrs format as HH:MM:SS alias nowdate='date +"%d-%m-%Y"' #this will show the current date in format dd-MM-YY
4. Easily manage your iptables information
Let’s face it: iptables is not the easiest nor friendly thing in the world and even though it’s not hard, the first time you deal with it is not that easy. This is why using aliases such these ones can make things a lot easier:
#Displaying iptables information the easy way :) alias iptlist='sudo /sbin/iptables -L -n -v --line-numbers' #this will display all lines of your current iptables alias iptlistin='sudo /sbin/iptables -L INPUT -n -v --line-numbers' #this will display all your INCOMING rules in iptables alias iptlistout='sudo /sbin/iptables -L OUTPUT -n -v --line-numbers' #this will display all your OUTGOING rules in iptables
5. Update Debian based servers in one single command
I use Ubuntu myself, but you can adapt this for any Red Hat, CentOS servers and ‘yum’ command. On Debian/Ubuntu, updating a server in a single command could be done through an alias such as this one:
# update on one command alias update='sudo apt-get update && sudo apt-get upgrade'
6. Add an alias to run alias with sudo
You cannot run an alias with sudo by default. If you want to run an aliased command with root access, you’ll have to create an alias with sudo like this:
As you can see, it all depends on what you do and your creativity, but you can basically take the time to create as many aliases as you need for your day to day tasks and make them easier by using this useful ‘alias’ command in Linux.