Objective: The alias
command can be used to launch any command or a group of commands (inclusive of any options, arguments and redirection) by entering a pre-set string. But how to pass an argument to alias
or let an alias
handle a variable?
ll
‘ to run ‘ls -l
‘. This is how you define the alias.
1 |
$ alias ll="ls -l" |
Alias with Arguments
Now, let’s say that you want to list the last two modified files in a specific directory. You could use the following command to list the two latest files based on modification date.
1 |
$ ls -lt /path/to/directory | tail -2 |
To define the above command as an alias
which takes in a directory path, we can use the following syntax.
1 |
$ alias last2='function _(){ ls -lt $1 | tail -2; }; _' |
We have to define a function
within alias
to achieve our goal. Note the use of semicolons after the tail
command and after the closing brace. You can run the alias
like this.
1 |
$ last2 /path/to/directory |
Alias with Variables
Let’s say you have a variable called BACKUP_DIR that points to a directory. You need to make a tar gzip backup of that directory and you need to touch a file once you are done. To do that, you will need to run:
1 |
$ tar czvf /path/to/backup/backup.tar.gz $BACKUP_DIR ; touch /path/to/backup/last_backup |
To use an alias for the above command, use one of the following syntax. One uses single quotes and another uses double quotes with escape strings.
1 |
$ alias dobackup='tar czvf /path/to/backup/backup.tar.gz $BACKUP_DIR ; touch /path/to/backup/last_backup' |
1 |
$ alias dobackup="tar czvf /path/to/backup/backup.tar.gz \$BACKUP_DIR ; touch /path/to/backup/last_backup" |
After defining the alias, make sure that the variable BACKUP_DIR is not interpreted. The variable should be printed without being interpreted by the shell. You can verify this by running:
1 2 |
$ alias dobackup alias dobackup='tar czvf /path/to/backup/backup.tar.gz $BACKUP_DIR ; touch /path/to/backup/last_backup' |
If the output is something like the one below (BACKUP_DIR
is replaced by “/path/to/backup/directory
“, then most probably you did not define the alias
properly. Check the quotes and make sure the variables are escaped properly.
1 2 |
$ alias dobackup alias dobackup='tar czvf /path/to/backup/backup.tar.gz /path/to/backup/directory ; touch /path/to/backup/last_backup' |