Tab completion is an extremely helpful feature in nearly any command-line environment, whether you’re using the Bash shell on Linux, Command Prompt or PowerShell on Windows, or a terminal window on Mac OS X.
This feature can dramatically help you speed up typing commands. Just hit Tab while typing a command, option, or file name and the shell environment will automatically complete what you’re typing or suggest options to you.
Tab Completion on Linux
The Bash shell used by default on most Linux distributions has excellent support for tabe completion.
For example, let’s say you want to run the firefox command. You can just type fir or fire into the terminal and press Tab — if your system doesn’t have any other commands that begin with those letters, Bash will automatically fill in firefox and you can press Enter to run the command.
As another example, let’s say you want to run one the Apt package manager’s commands. You can type apt- and press Tab twice to see a list of commands beginning with apt-. To run one of the commands, continue typing it and press Tab again — for example, we could type a g, press Tab, and apt-get would appear.
Tab completion is especially useful when typing file names, directories, and paths. Rather than trying to type a long file name that may involve spaces and special characters you’ll need to properly escape, you can just start typing the beginning of the name and press Tab.
For example, if we have a long, complex file name beginning with the letter L, we’d just have to type L and press Tab to automatically complete it. If we had multiple file names beginning with L, we’d just need to type a bit more of the file’s name before pressing Tab again.
Tab completion can even be used to automatically complete options for some commands. For example, when installing a package with the apt-get install command, you can use tab completion to automatically complete a package’s name. This also helps you search for related packages, and is very useful when you’re not sure exactly what a package is named.
Try using tab completion with other commands to see what you can and can’t automatically complete.
Bash also supports other types of completion. For example, you can type a ~ and press Tab to automatically complete a user name, type an @ and press Tab to automatically complete a host name, or type a $ and press Tab to automatically complete a variable.
Tab Completion on Windows
The Windows Command Prompt doesn’t allow you to use tab completion for commands and their options. However, it does support tab completion for folder and file names.
For example, we can open a Command Prompt, type cd D, and press Tab. As we’re in our user folder by default, tab completion will automatically file in cd Desktop, so we can press Enter to change directories to our desktop directory. This also helps when trying to run a command on a specific file name.
Tab completion also works in PowerShell. It can be used to automatically fill in the name of a cmdlet, a parameter, or a file path.
Unlike in the Bash Shell, Windows requires you press Tab multiple times to cycle through available options — it won’t just show you them all in a list. This applies to both the Command Prompt and PowerShell’s tab completion features.
Tab Completion on Mac OS X
Mac OS X also includes the Bash shell, so tab completion works just like it does on Linux. Tap the tab key while typing a command, file path, or option — the shell will automatically fill in the rest or show you the available options you can type.
Any other operating system that uses the Bash shell will work the same. Tab completion features should also work similarly on many other shells on Unix-like systems.
If you’re someone who uses a terminal or command-line environment, you should use tab completion. It’s simple — basically, it’s all about tapping Tab while typing something at a command line to make the shell guess what you’ll type next. This is especially useful for long, complex file names, but it helps with many different things.
Tab completion works practically anywhere there’s a command-line environment, so give it a try the next time you need to type a command.
Image Credit: Sven on Flickr