First steps =========== .. _sphinx_helpers: Shell ----- On a computer a *shell* is a program for interacting with the operating system. In general there are **two types of shells**: * Text-only command-line shells using a **command-line interface (CLI)** * Graphical shells using a **graphical user interface (GUI)** Common uses for both types include * file & folder management (e.g. creating, copying, moving, deleting), * process management (e.g. launching or terminating a program), and * system configuration (e.g. connecting to a network or installing, updating, removing programs). Though command-line interfaces with their often very abbreviated, text-only commands and strict syntax are everything but intuitive to learn, with a little bit of knowledge and practice they can be very efficient and convenient for certain tasks. Simlar to the fact that different GUIs exist, there are also different CLIs. A good starting point to learn how to use a CLI is the *Bourne Again Shell* (`bash `__) since it is the default for most versions of Linux and macOS, though, with the launch of macOS 10.15 Catalina, the default for macOS was changed to *Z shell* (`zsh `__) because of licensing restrictions but keeping bash still installed as an alternative. On Windows 10 the default is `PowerShell `__, though bash can also be used after `installing `__ the *Windows Subsystem for Linux* (`WSL `__). .. list-table:: :header-rows: 1 * - - **bash** - **zsh** - **PowerShell** * - **Linux** - **default** - optional - optional * - **macOS** until 10.14 - **default** - optional - optional * - **macOS** since 10.15 - installed - **default** - optional * - **Windows 10** - optional - optional - **default** Almost all frequently used bash commands also work with zsh and most of them even with PowerShell. Terminal -------- In a :abbr:`GUI (graphical user interface)` a terminal (or more precisely *terminal emulator*) nowadays is a program that emulates (= imitates) a former piece of hardware known as *computer terminal* that was once used to control an at that time room- or cabinet-sized computer. Computer terminals have been a combination of a keyboard and a video display and started to replace teleprinters in the 1960s which combined a keyboard and a printer. Connected to a (somtimes remote) computer, every keystroke was sent to and processed by the computer and the result was sent back and displayed on the video display. Since actual commands consist of more than just a single keystroke most of the time the keystrokes where just sent back without processing to be displayed as feedback.