- Understanding Different Classifications of Shell Commands and Their Usage in Linux
- 1. Program Executables (File System Commands)
- 2. Linux Aliases
- 3. Linux Shell Reserved Words
- 4. Linux Shell Functions
- 5. Linux Shell Built-in Commands
- Conclusion
- Type Command in Linux – (How to) Display Information About Command
Understanding Different Classifications of Shell Commands and Their Usage in Linux
When it comes to gaining absolute control over your Linux system, then nothing comes close to the command line interface (CLI). In order to become a Linux power user, one must understand the different types of shell commands and the appropriate ways of using them from the terminal.
In Linux, there are several types of commands, and for a new Linux user, knowing the meaning of different commands enables for efficient and precise usage. Therefore, in this article, we shall walk through the various classifications of shell commands in Linux.
One important thing to note is that the command line interface is different from the shell, it only provides a means for you to access the shell. The shell, which is also programmable then makes it possible to communicate with the kernel using commands.
Different classifications of Linux commands fall under the following classifications:
1. Program Executables (File System Commands)
When you run a command, Linux searches through the directories stored in the $PATH environmental variable from left to right for the executable of that specific command.
You can view the directories in the $PATH as follows:
$ echo $PATH /home/aaronkilik/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
In the above order, the directory /home/aaronkilik/bin will be searched first followed by /usr/local/sbin and so on, the order is significant in the search process.
Examples of file system commands in /usr/bin directory:
Sample Output
total 16284 drwxr-xr-x 2 root root 4096 Jul 31 16:30 ./ drwxr-xr-x 23 root root 4096 Jul 31 16:29 ../ -rwxr-xr-x 1 root root 6456 Apr 14 18:53 archdetect* -rwxr-xr-x 1 root root 1037440 May 17 16:15 bash* -rwxr-xr-x 1 root root 520992 Jan 20 2016 btrfs* -rwxr-xr-x 1 root root 249464 Jan 20 2016 btrfs-calc-size* lrwxrwxrwx 1 root root 5 Jul 31 16:19 btrfsck -> btrfs* -rwxr-xr-x 1 root root 278376 Jan 20 2016 btrfs-convert* -rwxr-xr-x 1 root root 249464 Jan 20 2016 btrfs-debug-tree* -rwxr-xr-x 1 root root 245368 Jan 20 2016 btrfs-find-root* -rwxr-xr-x 1 root root 270136 Jan 20 2016 btrfs-image* -rwxr-xr-x 1 root root 249464 Jan 20 2016 btrfs-map-logical* -rwxr-xr-x 1 root root 245368 Jan 20 2016 btrfs-select-super* -rwxr-xr-x 1 root root 253816 Jan 20 2016 btrfs-show-super* -rwxr-xr-x 1 root root 249464 Jan 20 2016 btrfstune* -rwxr-xr-x 1 root root 245368 Jan 20 2016 btrfs-zero-log* -rwxr-xr-x 1 root root 31288 May 20 2015 bunzip2* -rwxr-xr-x 1 root root 1964536 Aug 19 2015 busybox* -rwxr-xr-x 1 root root 31288 May 20 2015 bzcat* lrwxrwxrwx 1 root root 6 Jul 31 16:19 bzcmp -> bzdiff* -rwxr-xr-x 1 root root 2140 May 20 2015 bzdiff* lrwxrwxrwx 1 root root 6 Jul 31 16:19 bzegrep -> bzgrep* -rwxr-xr-x 1 root root 4877 May 20 2015 bzexe* lrwxrwxrwx 1 root root 6 Jul 31 16:19 bzfgrep -> bzgrep* -rwxr-xr-x 1 root root 3642 May 20 2015 bzgrep*
2. Linux Aliases
These are user defined commands, they are created using the alias shell built-in command, and contain other shell commands with some options and arguments. The ideas is to basically use new and short names for lengthy commands.
The syntax for creating an alias is as follows:
$ alias newcommand='command -options'
To list all aliases on your system, issue the command below:
$ alias -p alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*3\+\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 -alF' alias ls='ls --color=auto'
To create a new alias in Linux, go through some below examples.
$ alias update='sudo apt update' $ alias upgrade='sudo apt dist-upgrade' $ alias -p | grep 'up'
However, the aliases we have created above only work temporarily, when the system is restarted, they will not work after the next boot. You can set permanent aliases in your .bashrc file as shown below.
After adding them, run the command below to active.
3. Linux Shell Reserved Words
In shell programming, words such as if, then, fi, for, while, case, esac, else, until and many others are shell reserved words. As the description implies, they have specialized meaning to the shell.
You can list out all Linux shell keywords using type command as shown:
$ type if then fi for while case esac else until if is a shell keyword then is a shell keyword fi is a shell keyword for is a shell keyword while is a shell keyword case is a shell keyword esac is a shell keyword else is a shell keyword until is a shell keyword
4. Linux Shell Functions
A shell function is a group of commands that are executed collectively within the current shell. Functions help to carry out a specific task in a shell script. The conventional form of writing shell functions in a script is:
Let’s take a look at how to write shell functions in a script named shell_functions.sh .
#!/bin/bash #write a shell function to update and upgrade installed packages upgrade_system()< sudo apt update; sudo apt dist-upgrade; > #execute function upgrade_system
Instead of executing the two commands: sudo apt update and sudo apt dist-upgrade from the command line, we have written a simple shell function to execute the two commands as a single command, upgrade_system within a script.
Save the file and thereafter, make the script executable. Finally run it as below:
$ chmod +x shell_functions.sh $ ./shell_functions.sh
5. Linux Shell Built-in Commands
These are Linux commands that built into the shell, thus you cannot find them within the file system. They include pwd, cd, bg, alias, history, type, source, read, exit and many others.
You can list or check Linux built-in commands using type command as shown:
$ type pwd pwd is a shell builtin $ type cd cd is a shell builtin $ type bg bg is a shell builtin $ type alias alias is a shell builtin $ type history history is a shell builtin
Learn about some Linux built-in Commands usage:
Conclusion
As a Linux user, it is always important to know the type of command you are running. I believe, with the precise and simple-to-understand explanation above including a few relevant illustrations, you probably have a good understanding of the various categories of Linux commands.
You can as well get in tough through the comment section below for any questions or supplementary ideas that you would like to offer us.
Type Command in Linux – (How to) Display Information About Command
TYPE is a Linux command which helps to identify the type of the input command if it is an alias, built-in, function, or keyword. You can also pass multiple commands as the input parameters.
All the arguments to this command are optional.
- -a – display all locations containing an executable named NAME; includes aliases, builtins, and functions, if and only if the ‘-p’ option is not also used
- -f – suppress shell function lookup
- -P – force a PATH search for each NAME, even if it is an alias, builtin, or function, and returns the name of the disk file that would be executed
- -p – returns either the name of the disk file that would be executed or nothing if `type -t NAME’ would not return `file’.
- -t – output a single word which is one of `alias’, `keyword’, `function’, `builtin’, `file’ or `’, if NAME is an alias, shell reserved word, shell function, shell builtin, disk file, or not found, respectively
Name – Command name to be interpreted.
Exit Status – Returns success if all of the NAMEs are found; fails if any are not found.
In Linux, Unix, and Unix-alike system command may an alias, shell built-in, file, function, or keyword. So how to find the type of command you are running on the shell.