Hello! Hope you’re doing great. In my last post I have written about working with files and directories in linux CLI. In this post, lets discuss what actually is a “command” and how to create a command of our own.
Topics covered in this post:
- What is a “command”?
- Identifying a command
- Know your commands via CLI
- Create your own command using alias
1. What is a “command”?
Command(s) in general means an instruction or a set of instructions given to a machine to perform an action. A command in linux world can be any of the following:
a. An executable program-
/usr/bin in linux has all the compiled binaries(installed programs). These are written in C, C++, Python, Shell and etc.
b. Shell bulit-in- bash shell supports a number of commands called as *shell built-ins. Ex:
c. Shell function- Shell scripts that are included in the environment.
d. Alias- Aliases, like the name suggests, we can give an alias to the built-in functions
2. Identifying a command
typecommand is a shell bult-in that displays the kind of the command. For example:
type cdwill displays “cd is a shell builtin". It means when we use
cdcommand, it will refer to the shell built-ins in the bash shell.
type ls command on the other hand shows that
ls is in fact an alias to the command
ls --color=auto. When we use
ls command, the results will be displayed with color coding as above. An alias will work just like any command and when we use the alias it will invoke the command it is pointing to.
A common practice in software development is using different versions of same software in one environment(machine) simultaneously. For example: testing a website on two different versions of nodejs runtimes.
which <command>command will show the paths of one or more versions of an installed program. For example:
which javawill show
It works only for executable programs, not built-ins nor aliases that are substitutes for actual executable programs. In the below example, there is no result displayed for the
which cdcommand as it is a shell-built-in.
which commands are two ways we can determine the type of a command and where it is referenced(installed) from.
3. Know your command
To know more about any command we can use
--help option for any command.
<command> --help will show all the options for the command. In the below example, we can see the documentation for
Each option will give additional functionality to the command. For example:
mv command with option
-u will only move those files from source directory that are new or updated than the destination directory.
- manual (
man short for manual will provide the formal documentation for any executable programs. man command will provide all the information for the command in different sections like name, synopsis, description and others.
- apropos command
apropos <search_term> command will show the appropriate commands by scanning the man pages based on the search term.
The results of the apropos command covers a wide range of cases from man pages thus very different results. It is recommended to use those commands that are suitable for a scenario. A brief description of the command is given after the command in the results.
4. Create your own command using alias
Till now we saw the examples that had only one command. We can use semicolon(
;) between each command to run all of them at once(
cmd1; cmd2; cmd3;).
echo "Hi, there!"; ls; ls destdir.
echo command is the print statement of the linux cli and
ls command will list the files and directories.
Now, we can use these commands and create an alias and use the alias to perform the same action every time. Note that the user-defined alias is specific to machine.
alias <name> = '<command_string>' will create an alias with the supplied name. Now, let’s create the alias and see it in action.
After creating alias with
alias mycommand="echo \"Hi, there\"; ls; ls destdir” command, we can invoke the alias like any linux command shown above. When we check the type of the alias using
type mycommand, it shows
mycommand is aliased toecho "Hi, there"; ls; ls destdir'`.
To list all the aliases that are currently in the system, use
alias command and to remove any alias use
unalias <alias_name>. For example,