1.1. Introduction¶
The primary piece of software on most computers these days is known as an operating system, a program which manages the computer’s resources for its users and the other programs that those users use [AD2014]. Android, iOS, Linux, macOS, Windows, etc., are the names of just a few, but popular, operating systems that you are likely to have encountered prior to reading this book. At the time of this writing, Android is the most used operating system according to Stats Counter with 45% of the worldwide marketshare.
Before any of the operating systems mentioned above were created, there was Unix. 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.
What we wanted to preserve was not just a good environment in which to do programming, but a system around which a fellowship could form. We knew from experience that the essence of communal computing, as supplied by remote-access, time-shared machines, is not just to type programs into a terminal instead of a keypunch, but to encourage close communication. – Dennis Ritchie [RITCHIE1984]
In this course, we use the term Unix to refer to systems that provide a Unix-like environment; i.e., their user interface and basic set of utilities are reminiscent of those provided by a Unix operating system, including systems running operating systems like macOS, Linux, etc.
Note
At the time of this writing, recent versions of the Windows operating system also provide a Unix-like environment via the Windows Subsystem for Linux (WSL); however, it is typically not enabled by default and not needed to follow along with this book.
If you are a Computer Science student in UGA’s School of Computing, then you will need to make sure that you can access Odin, the UGA School of Computing’s instructional Unix server, by completing the setup instructions provided in the next section. Before you do that, it is important to understand some basic terminology.
You will access the Odin system using a program called a terminal emulator. We will assume that you are using a specific terminal emulator program when accessing Odin, depending on your computer’s operating system, and installation instructions will be provided in the next section to help you get started.
In Unix, the primary end-user, command-line interface to the system is a program called the shell. 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. After you type a command, the shell program is responsible for interpreting the command and executing it.
When you login to a Unix system like Odin, the shell presents you with a prompt where you will type out commands for the system to perform.
Note
In CSCI 1302, we will use the bash
shell on Odin. There are
other shell programs available, but bash
is popular and used by
default on our system. As soon as you log into Odin, you are
interacting with bash
.
Both graphical and command-line 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 are used to is only one way to interact with a computer.
Important
Whether you are interacting with the computer through a graphical (windows-like) interface or a terminal interface, the underlying system and files are the same. The only difference is how they are presented to you, the user.
As an example, consider the figure below:

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.
Rapid Fire Review
What is an operating system?
What is the name of the Unix server used in the CSCI 1302 course?
thor
odin
loki
zeus
What is the purpose of the shell?
to interpret and execute commands entered by the user.
to provide a graphical interface for interacting with the computer.
to allow access to the Unix system from the operating system on your computer.
to display icons and folders for navigation.
What is the key difference between interacting with a Unix-like system through a shell and a graphical interface?
the graphical interface provides more features than the shell.
the underlying system and files differ between the two interfaces.
the shell relies on typing commands, while the graphical interface uses point-and-click actions.
the shell is used only for programming tasks, while the graphical interface is used for all other tasks.
Consider the example in the text where terminal output and the Finder app display similar information. What conclusion can you draw about these interfaces?
terminal emulators are faster than graphical interfaces for all tasks.
both interfaces access and display the same underlying system and files in different ways.
graphical interfaces cannot display file structures like terminal emulators can.
terminal interfaces are exclusive to Unix-based operating systems.