Find out if a command resolves to an alias, a disk file, a shell function, a built-in command, or a reserved word. Use
type to discover how your Linux commands are executed and understand your system better.
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
- 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
- Reserved word: A word that is reserved by the shell such as
elif. They are also called keywords.
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.
date command is an executable disk file.
ls command is an alias, wrapping the underlying
ls command to use the
--color=auto option by default.
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
pwd command is a built-in command of the Bash shell.
elif command is a Bash shell reserved word.
Using Multiple Commands
You can give
type multiple commands to identify at once.
type date top ls
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.
type -t date
type -t pwd
type -t lowdown
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
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.
type -a ls
The -f Option
-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.
type -f top
type -f lowdown
The -P Option
If you use the
type will only search the directories in $PATH. So we can call this option “path.” Note that this option uses an uppercase “P.”
type -P date chmod adduser
The -p Option
If you use the
type will only respond if the command is a hard disk file. Note that this option uses a lowercase “p.”
type -p mount
type -p ls
type -p -a ls
type does not give any response for
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.
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.
|Files||tar · pv · cat · tac · chmod · grep · diff · sed · ar · man · pushd · popd · fsck · testdisk · seq · fd · pandoc · cd · $PATH · awk · join · jq · fold · uniq · journalctl · tail · stat · ls · fstab · echo · less · chgrp · chown · rev · look · strings · type · rename · zip · unzip · mount · umount · install · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · patch · convert · rclone · shred · srm|
|Processes||alias · screen · top · nice · renice · progress · strace · systemd · tmux · chsh · history · at · batch · free · which · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · timeout · wall · yes · kill · sleep · sudo · su · time · groupadd · usermod · groups · lshw · shutdown · reboot · halt · poweroff · passwd · lscpu · crontab · date · bg · fg|
|Networking||netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · dig · finger · nmap · ftp · curl · wget · who · whoami · w · iptables · ssh-keygen · ufw|
- › Logitech MX Mechanical Keyboard Review: Easy on the Eyes, Not the Fingertips
- › Logitech MX Master 3S Mouse Review: Muted Refinements
- › AMD’s Ryzen 7000 Series Are the First 5nm Desktop CPUs Ever
- › What’s New in Chrome 102, Available Now
- › What Do “FR” and “FRFR” Mean?
- › The Origins of Ctrl+C, Ctrl+V, Ctrl+X, and Ctrl+Z Explained