1.2. Unix

1.2.1. What is Unix?

Before several of the operating systems mentioned earlier were created, there was Unix, a family of computer operating systems derived from the proprietary UNIX® operating system created by Ken Thompson, Dennis Ritchie, and others in the 1970s at the Bell Labs research center with the intention of providing a convenient platform for programmers to develop and run their software [RAYMOND2003].

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.

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 that they are used to are only one way to interact with a computer.

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

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

In Fig. 1.3, 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.

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.

Optional Aside: The Creators of Unix
Dennis Ritchie (2011)
Dennis Ritchie

Ritchie is an American computer scientist, a Harvard University graduate (), and an ACM Turing Award winner.

He is best known for creating the C programming language and for creating the Unix operating system alongside Ken Thompson when he worked at Bell Labs.

Ken Thompson (2019)
Ken Thompson

Thompson is an American computer scientist, a UC Berkley graduate (MS in Electrical Engineering and Computer Science, 1966), and an ACM Turing Award winner.

He is best known for co-designing the Go programming language when he worked at Google and for creating the Unix operating system alongside Dennis Ritchie when he worked at Bell Labs.

1.2.2. Unix Systems

The term Unix system refers to computer systems that provide a Unix environment (or Unix-like environment); i.e., the user interface and basic set of utilities provided by the operating system are reminiscent of those provided by a Unix operating system. Several of the modtern operating systems mentioned earlier are considered Unix operating systems and automatically provide a Unix environment (see Table 1.2).

Table 1.2 Operating Systems used for Personal Computing and Development

Operating System

Unix-Based?

Unix Shell?

Android

Yes

No[1]

ChromOS

Yes

Yes

iOS

Yes

No[2]

macOS

Yes

Yes

Linux

Yes

Yes

Windows

No

No[3]

Some of the basic utilities provided by a Unix system include, but are not limited to, the following:

  • command-line shell

  • path-based, hierarchical filesystem

  • small, modular programs

  • standardized operating system API

We will explore the first three kinds of utilities throughout the remainder of this chapter and throughout the book. The last kind of utility is something that is typically discussed in a system’s programming or operating systems class.

Optional Aside: The Growth of Unix

As a computing student, you will likely have to work in a Unix environment sometime during your career. Since its inception, Unix has seen explosive growth in software development (see Table 1.3) and personal computing (see Table 1.2).

Table 1.3 Recent yearly trends in the usage statistics of operating systems for web servers. Retrieved from W3Techs.

Operating System

2020

2021

2022

2023

2024

2025

Unix-like

71.0%

72.5%

78.8%

80.5%

83.2%

88.1%

Windows

29.0%

27.6%

21.4%

19.8%

17.1%

12.1%


Rapid Fire Review
  1. What is an operating system?

  2. What is the name of the Unix server used in the CSCI 1302 course?

    1. thor

    2. odin

    3. loki

    4. zeus

  3. What is the purpose of the shell?

    1. to interpret and execute commands entered by the user.

    2. to provide a graphical interface for interacting with the computer.

    3. to allow access to the Unix system from the operating system on your computer.

    4. to display icons and folders for navigation.

  4. What is the key difference between interacting with a Unix-like system through a shell and a graphical interface?

    1. the graphical interface provides more features than the shell.

    2. the underlying system and files differ between the two interfaces.

    3. the shell relies on typing commands, while the graphical interface uses point-and-click actions.

    4. the shell is used only for programming tasks, while the graphical interface is used for all other tasks.

  5. Consider the example in the text where terminal output and the Finder app display similar information. What conclusion can you draw about these interfaces?

    1. terminal emulators are faster than graphical interfaces for all tasks.

    2. both interfaces access and display the same underlying system and files in different ways.

    3. graphical interfaces cannot display file structures like terminal emulators can.

    4. terminal interfaces are exclusive to Unix-based operating systems.