Skip to main content
\(\require{cancel}\)
Physics LibreTexts

Learning About UNIX-GNU / Linux

Introduction

This page provides access to course notes for a series of talks on the UNIX-Gnu/Linux computing environment given by David M. Harrison, Department of Physics, University of Toronto.

UNIX-Gnu/Linux is an extremely powerful computing environment. The notes concentrate on using the tools provided by the environment as a user. They do not discuss using the environment as a desktop substitute for Windows or Macintosh. They also do not discuss issues of installation or system administration, except for some brief materials in the fifth module.

The data are fairly overwhelming that reading the sorts of material contained in the Modules is much more effective in hardcopy than on a screen for almost all people. Thus, below we provide access to both html and pdf versions of each document.

  • Because of different browsers, choices of fonts and point sizes, etc., I can not control how the hardcopy of an html document will come out.
  • I have inserted some <BR> tags etc. in the html document to produce a reasonably paginated pdf version. This means that there are a few blocks of empty lines in the html version.
  • You should use the html version for on-screen browsing: studies indicate that the usability of the pdf version for on-screen reading may be up to 300% worse.

Contents and Navigation

The modules, and their approximate sizes, are:

  1. Introduction: html (43k) pdf (156k)
  2. Getting Started: html (48k) pdf (214k)
  3. Working Effectively: html (52k) pdf (227k)
  4. Working Even More Effectively html (55k) pdf (215k)
  5. Internals and System Administration html (60k) pdf (230k)

Each Module in the series corresponds to a two-hour discussion. The first 4 modules are fairly generic treatments of UNIX/Linux for a typical user with some computing background in Windoze, Mac, or other non UNIX/Linux environment. Module 1 begins with some material aimed at relative computing novices, and further Modules become increasingly sophisticated. In Module 5 we "lift the hood" to discuss some internals and system administration . The modules were written in April/May 2002.

You will see references to the computer Faraday in the notes. This is the server used by many of the people to whom these talks were originally directed. Except for Module 5, we have attempted to make the use of the name fairly generic; Module 5, Internals and System Administration, contains some generic information but also some matters that are likely to be different for different computers.

This very rich UNIX/Linux computing environment has been worked on by many many smart people for over 30 years. Thus any set of notes such as these only "scratches the surface." These notes contain the material that the author believes is most important to learn first. Other authors will necessarily choose differently.

As you will learn, your interactions with UNIX/Linux are via a program called a shell. There are different "flavors" of shells, of which the two most popular are named bash and tcsh. In the Modules we concentrate on bash, and discussion of tcsh is fairly minimal. This is due to the preferences and biases of the author.

The modules end with some Exercises:

  • You, of course, hardly need reminding that actually doing the Exercises is important to your learning.
  • In later modules, your increasing knowledge is matched by increasing complexity of the Exercises.
    • This also means that later Exercises will take you somewhat longer to do than earlier ones.

In the notes, you will see up to three arrows at the top and bottom of the document:

Takes you to the html version of the previous Module in the series.
Returns you to this page.
Takes you to the html version of the next Module in the series.

At the end of each Section of a Module there is another arrow:

Go to the top of the page

Takes you to the top of the page.

An index of user commands discussed in the Modules is available here. This is probably most useful for reference after all the materials in all the Modules have been read and/or discussed.

Perl's logoThese notes have also been used in courses for people with considerable background in Perl but little or no background in UNIX-GNU/Linux. A small companion document cross-references some UNIX-GNU/Linux commands to the corresponding Perl version. Links to appropriate part of the Perl document appear in the Modules via the button that is shown to the right. When accessed from the html version of the Module, the Perl document will appear in a separate window. The document makes no attempt to offer instruction in Perl, since it is intended for Perl programmers. See the Other Resources section below for information on learning Perl.

Note that if you click on the camel to see a Perl reference from the html version of a Module, and then return to the Module window while leaving the Perl document's window in place, clicking on another camel will scroll to the appropriate part of the Perl document, but that window will not receive focus. This is a browser issue which I can not control without ungainly html programming.

Linux logoAlthough perhaps not of great use, the Perl cross-reference document provides "back-links" to the Section in the Modules that link to that section of the cross-reference document. These are accessed by the button shown to the right. The back-link will open in the current window: use the Back button of the browser to return to the Perl document.

Incidentally, the camel has become the unofficial logo of Perl. The Canonical Camel is named "Amelia." The use of the camel image in association with the Perl language is a trademark of O'Reilly & Associates, Inc. We use that image by permission.

The penguin, whose name is "Tux", is the mascot of GNU/Linux. A biography of Tux may be found at http://www.sjbaker.org/tux/.

Most educators believe that at the beginning of a session a review of the previous one is a good idea. The reviews used by the author, containing what I believe are the "high points," are available below in pdf. The fonts are chosen to be large enough to project to a group.

  1. RevModule1.pdf
  2. RevModule2.pdf
  3. RevModule3.pdf
  4. RevModule4.pdf

Other Resources

Besides the Linux Training Materials Project discussed in the next section, here we list a few other resources.

  • The Linux Documentation Project web site: http://www.tldp.org/.
  • Brian W. Kernighan and Rob Pike, The UNIX Programming Environment, Prentice Hall Computer Books; ISBN: 013937681X; (March 1984).
    • A "golden oldy" that, although a bit dated, is still a great introduction to UNIX/Linux.
    • Rob Pike was an undergraduate in Physics at U of T.
  • The Cygwin Linux environment for Windoze.
    • Envisioned by the developers as a migration tool, but features a fairly complete Linux environment running under all versions of Windoze except CE.
    • Developed by Red Hat and available at http://cygwin.com/.
  • Jerry D. Peek, Tim O'Reilly, and Mike Loukides, UNIX Power Tools, O'Reilly & Associates; ISBN: 1565922603; 2nd Bk&Cd edition (October 1997),
    • For taking your knowledge of UNIX/Linux up to the next level beyond the materials discussed in the Modules.
    • Designed for browsing instead of reading.
  • An excellent on-line tutorial for Perl may be found at: http://www.perl.com/pub/a/2000/10/begperl1.html.
    • Perl is a very powerful programming language.
    • A good choice when the shell and UNIX utilities are not enough.
    • The next listing, a book, goes more deeply into Perl than this tutorial.
  • Randal L. Schwartz and Tom Phoenix, Learning Perl, O'Reilly & Associates; ISBN: 0596001320; 3rd edition (July 15, 2001).
    • This is a nice introduction.
    • The "bible" of Perl is: Larry Wall, Tom Christiansen and Jon Orwant, Programming Perl, O'Reilly & Associates; ISBN: 0596000278; 3rd edition (July 2000).
  • Mike Loukides and Michael Kosta Loukides, Programming with GNU Software, O'Reiilly & Associates; ISBN: 1565921127; (December 1996) .
    • For C and C++ programmers.
      • Before Perl, the C and C++ programming languages were the tools of choice when the shell and UNIX utilities were not enough.
      • C and C++ are still invaluable for very complex or cpu-intensive tasks.