Terminal on a Linux laptop
Fatmawati Achmad Zaenuri/Shutterstock.com

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 /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.

type date

The date command is an executable disk file.

type ls

Advertisement

The ls command is an alias, wrapping the underlying ls command to use the --color=auto option by default.

type lowdown

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 .

type pwd

The pwd command is a built-in command of the Bash shell.

type elif

The 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 -p option.

Advertisement

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

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.

type -f top
type -f lowdown

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.”

type -P date chmod adduser

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 -p mount
type -p ls
type -p -a ls

demonstration of the type -p option in a terminal widow

type does not give any response for ls because聽ls an alias, and not a disk file.

Advertisement

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.

Linux Commands
Files tar pv cat tac chmod grepdiff 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-keygenufw

RELATED:Best Linux Laptops for Developers and Enthusiasts

Profile Photo for Dave McKay Dave McKay
Dave McKay first used computers when punched paper tape was in vogue, and he has been programming ever since. After over 30 years in the IT industry, he is now a full-time technology journalist. During his career, he has worked as a freelance programmer, manager of an international software development team, an IT services project manager, and, most recently, as a Data Protection Officer. His writing has been published by聽 howtogeek.com, cloudsavvyit.com, itenterpriser.com, and opensource.com. Dave is a Linux evangelist and open source advocate.
Read Full Bio 禄

The above article may contain affiliate links, which help support How-To Geek.