1.1. Introduction

Unix is a family of computer operating systems that derive from work performed in the 1970s at the Bell Labs research center by Ken Thompson, Dennis Ritchie, and others. In this course, we use the term Unix to refer to systems that are Unix-like; i.e., their user interface and basic set of utilities are reminiscent of a Unix system.

In Unix, the primary end-user, command-line interface to the system is a program called the shell. This program can usually be accessed via another program called a terminal emulator. In the shell, you enter commands at a prompt. Here are some examples of what such a prompt might look like:

bash$
zsh%

The shell is just another way to interact with the computer. Think of it as an interface that allows you to type your commands on the keyboard instead of clicking icons on the screen. Both interfaces allow you to do the same things, just in a different way. These days, all students are familiar with the point-and-click graphical windowing systems provided in operating systems like Windows, macOS, and even phones. However, only some realize that the windowing system they’re used to is only one way to interact with a computer. Consider the figure below.

Terminal output on the left corresponding to the visual interface on the right.

In the figure, two different interfaces to the same computer running the Unix-like macOS operating system are presented. On the left, the window of a terminal emulator (or a “terminal window,” for short) is displayed containing the output of the commands ls and tree (discussed later). On the right, the graphical Finder app is displayed containing some of the same information. Take a moment to convince yourself that both images display roughly the same information in two different ways. On the left, the output of the tree command looks very similar to the output on the right. The only difference is that the user typed the command with the keyboard instead of double-clicking a folder icon as they would on the right.