Do My Bidding
When we open a terminal window and start issuing commands to our Linux computer, we rarely stop to think what software components within the operating system are reacting to our commands and carrying them out for us. We type the command, get the result, and move on with our workload.
Knowing how the commands are carried out gives us a better understanding of the way our Linux or other Unix-like operating system is constructed. Having a peek beneath the hood can make us a more informed driver.
The instructions we issue to the command line are in one of the following categories:
Alias: A user (or system) defined command that causes other, usually long-winded or complex, command sequences to take place. Disk file: A binary executable file, such as /usr/bin/top. Shell function: A user (or system) defined function that can be used on the command line or included in scripts. Builtin command: A command that is carried out by the shell itself, such as pwd. Reserved word: A word that is reserved by the shell such as if and elif. They are also called keywords.
The type command tells us which category any of the Linux commands belongs to. Here’s a quick tutorial to understanding the command’s output.
The type Command
Let’s rattle through some quick examples, for each of the command categories.
The date command is an executable disk file.
The ls command is an alias, wrapping the underlying ls command to use the –color=auto option by default.
The lowdown command is a user-defined function that was set up on the commuter used to research this article. It provides a quick snapshot of some system resources. It is a combination of whoami , w , free and df .
The pwd command is a built-in command of the Bash shell.
The elif command is a Bash shell reserved word.
Using Multiple Commands
You can give type multiple commands to identify at once.
The -t Option
None of the options that type will accept have names. So we can get our book of names out and christen them ourselves. If you think of the -t option as standing for “terse,” you won’t be far wrong. It reduces the responses from type to single word answers.
The -a Option
Let’s call this one the “all” option. It lists all of the locations that the command is located in. Note that this option will not work if you also use the -p option.
For example, if you have an alias with the same name as the underlying command, you can get information on the alias and the command.
The -f Option
The -f option forces type to not search for user or system defined functions. Think of this option as “function search off.” Note that if the command is a function, type will report that the command can’t be found.
The -P Option
If you use the -P option, type will only search the directories in $PATH. So we can call this option “path.” Note that this option uses an uppercase “P.”
The -p Option
If you use the -p option, type will only respond if the command is a hard disk file. Note that this option uses a lowercase “p.”
type does not give any response for ls because ls an alias, and not a disk file.
But if we include the -a option so that type looks for all instances of the ls command, it lists the underlying disk file that the ls alias makes use of.
Summary
That was nice and simple, but illuminating all the same.
We tend to think of anything we type at in a terminal window as a “command,” and we leave it at that. But actually, commands are implemented in a variety of ways in the Linux system. And type lets you find out which one it is.