For example, if we type and enter ls to list files, it is reasonable to think that we were running the command. It is possible, but we often will be running an alias. Aliases exist in memory as a shortcut to commands or commands with options; these aliases are used before we even check for the file. Bash's built-in type command can come to our aid here. The type command will display the type of command for a given word entered at the command line. The types of command are listed as follows:
- Alias
- Function
- Shell built-in
- Keyword
- File
This list is also representative of the order in which they are searched. As we can see, it is not until the very end where we search for the executable file ls.
The following command demonstrates the simple use type:
$ type ls
ls is aliased to 'ls --color=auto'
We can extend this further to display all the matches for the given command:
$ type -a ls
ls is aliased to 'ls --color=auto'
ls is /bin/ls
If we need to just type in the output, we can use the -t option. This is useful when we need to test the command type from within a script and only need the type to be returned. This excludes any superfluous information, and thus makes it easier for us humans to read. Consider the following command and output:
$ type -t ls
alias
The output is clear and simple, and is just what a computer or script requires.
The built-in type can also be used to identify shell keywords such as if, and case. The following command shows type being used against multiple arguments and types:
$ type ls quote pwd do id
The output of the command is shown in the following screenshot:
You can also see that the function definition is printed when we stumble across a function when using type.