Command line completion
is a common feature of command line interpreters
, in which the program automatically fills in partially typed tokens. Depending on the specific interpreter and its configuration, these elements may include commands, arguments, environment variable
names and other entities. Command line completion generally only works in interactive mode
. Command line completion is often invoked, by default, by pressing the tab key
and frequently called tab completion
even when bound to a different key or key combination.
Tab completion showed up early in computing history; one of the first examples appeared in the Berkeley Timesharing System
for the SDS 940
, where if a typed string were ambiguous, the interpreter would do nothing, but if the string was not
ambiguous, it would automatically complete it without any command from the user. This feature did not work well with the all too frequent typos
, and so was a mixed blessing. This feature was imitated by Tenex
's developers who made an important change: Tenex used "escape recognition", in which the interpreter would not attempt to autocomplete unless the escape key
was struck (thus the name) by the user. The domain was also expanded from only program names on the Berkeley system to both program names and files on Tenex. From there it was borrowed by Unix.
Completion in different command line interfaces
- Unix shells, including bash (the default shell in Linux and Mac OS X) and ksh among many others, have a long-standing tradition of advanced and customizable completion capabilities (see the external links section below for some examples).
- For Korn shell users, file name completion depends on the value of the EDITOR variable. If EDITOR is set to vi, you type part of name, and then click Escape followed by a backslash () character. If EDITOR is set to emacs, you type part of the name, and then click the Escape key twice to complete the file name.
- Windows PowerShell, the new extensible command shell from Microsoft, which is based on object-oriented programming and the Microsoft .NET framework provides powerful and customizable completion capabilities similar to those of traditional Unix shells.
- The cmd.exe command processor of Windows NT-based systems supports basic completion. It is possible to use a separate key-binding for matching directory names only.
- The MS-DOS command processor COMMAND.COM did not have command line completion: pressing the tab key would just advance the cursor. Before the release of Windows however various enhanced shells for MS-DOS, such as 4DOS, or the FreeDOS version of command.com, would feature Unix-style tab completion.
Windows command interpreters
(Be sure to check the "Applies to" section in each article)
Windows 2000/NT 4
- Directory name completion
- Filename completion