Mastering the Terminal

Much of the terminology used when discussing modern terminals comes from history, which can make understanding terminals seem more confusing than it should be. A small amount history can help provide some background information to help some of the concepts be more relatable.

Early computers were comprised of multiple refrigerator-sized cabinets, each of which performed one of the basic tasks of the system. For example, one cabinet would contain the "central processing unit" (CPU), while other cabinets held tape drives, disk drives, punched-card readers, a line printer, and any other peripherals that were available to the computer.

The user-interface to these computers consisted of a keyboard and some means of displaying the output from the computer, such as a sequence of light bulbs or later a Cathode-ray Tube (CRT) display, connected to the computer via cables. The user-interface was typically arranged into a "console", where the operator could sit and interact with the computer. Since the user-interface represented the point at which electrical signals "enter" and "exit" the network, the user-interfaces themselves became known as "terminals".

Standardization

As often happens in technology development, there were initially a wide range of competing technologies, but over time market forces and economies of scale led these competing technologies to converge towards standardization around a handful of those technologies, the names of which have become much of the jargon that surrounds the terminal today.

Early terminals were electro-mechanical "Teletype writers", generally shortened to "TTY", which is a term still used today when interacting with the terminal.

As with a modern keyboard, each key on the TTY represented a human-readable character such as a letter, number, punctuation, etc. As the user would press a key to input data into the computer, each key would be "encoded" into a sequence of 8 1s and 0s called bytes, which could be understood by the computer. These bytes were sent over the cable to the CPU, which performed the requested operations, then the resulting byte(s) were transmitted back to the terminal where they were "decoded" back into characters for human-consumption.

The rules used for encoding and decoding each character eventually became the ASCII standard. Despite the benefits of standardization, the ASCII standard was written to support US English, which led to several extensions in order to support other languages, which eventually led to the UTF-8 standard which unified the various extensions into a single encoding that is broadly in use today.

Over time display technologies evolved which led to the introduction of "video terminals" (VT) which allowed text and other graphical information to be displayed on a screen. Some of the most popular video terminals were the VT100 and later VT200 series, which introduced support for the ANSI escape codes that have become standards that are still in use today.

Emulation

As microprocessor technology advanced and the cost of memory and other peripherals dropped, terminals began to handle increasingly-advanced operations, which led to the introduction of "intelligent terminals", which differentiated them from the "dumb terminals" they replaced. In order to make the newer terminals "backward compatible" with existing software, these terminals included hardware to "emulate" the older devices. Over time the emulation functions were implemented in software, which eventually led to the introduction of fully-software "terminal emulators" that could offer features that would have been difficult to impossible to implement in hardware, such as command-line completion and syntax highlighting.

With the introduction of terminal emulators, "the terminal" became a software window that is opened in order to gain access to the operating system. The software that provides this access is called "the shell", which is the subject of the next section.