Description
Learning Linux/Unix
What’s Linux?
Linux is the operating system that the CSE labs machines run. It was written and developed as a free
operating system modeled after a popular system called UNIX created by Bell labs in the late 1970s. It is
popular amongst programmers and computer scientists.
This is weird! Why do we have to use Linux?
Although modeled after operating systems used in the 70s, Linux is a cutting edge programming
environment that is constantly being updated. Contrary to popular belief, Linux is installed on more
hardware than any other OS in the world, including most supercomputing systems. Its free and open
nature makes it an ideal choice for developing software in academic and industrial settings. While it may
seem weird at first, Linux was designed around simple design principles which, as you will see, allow you
to interact with the computer using many different interfaces that are referred to in the computing world
as shells.
Breaking out of your SHELL
Computer scientists get a kick out of clever names. Since modern computer hardware has been widely
available there has been a constant effort to abstract away all the ugly, esoteric aspects of the machine
and replace it with interfaces that humans can interact with. The computer’s hardware is rarely ever dealt
with directly. Instead, the operating system was developed and most if not all direct interaction with the
computer is done through simple abstractions such as files, directories, URLs, and programs. All of the
specifics of these are handled behind the scene by the operating system and silently converted to their
bitwise equivalents. In order to interact with the OSs efficiently, special programs called shells were
designed to provide arguments to programs written to interact with the operating system. The word shell
is used to describe the outermost program meant to hide away all the complicated aspects of the
machine; it’s the program that has the most interaction with humans! Shells are like any other program
under the hood and come in a variety of flavors; in fact you might be surprised that you are interacting
with a shell right now!
Clicking and dragging graphical icons and buttons provides an interface between you and the computer
that allows you to easily access files, open URLs, and change directories! These types of shells are called
graphical user interfaces (GUIs) and are the most familiar way we interact with machines. Another type
of interface is called the command line interface (CLI), which is the default for most popular shells out
there. Most things you can do with a GUI shell, you can also do with the CLI shell. So why bother learning
how to navigate Linux using the command line? Although it might be sore on the eyes, text-based shells
provide a much more efficient, reproducible work environment than graphical interfaces. Have you ever
had to explain to someone how to access their email or edit an Excel spreadsheet over the phone? The
shell provides a step-by-step protocol (strangely similar to a protocol for isolating DNA or running a gel,
for example) for running programs in order to perform a task, and by nature, it is extremely specific. So
don’t be afraid to break out of your proverbial graphical shell interface. Like most things that look
complicated, once it has been broken down into sizeable chunks, it becomes apparent that is wasn’t that
hard all along.
A short Linux Tutorial
There are a few key commands that will be helpful in getting around the shell on the lab machines.
Throughout the rest of this document, text following a “%” and formatted in fixed width font is meant to
be executed from the shell. Filenames will be italicized and command names will be enclosed in `back
ticks`. Below is a short summary of the key Linux commands or you can go to a full tutorial by following
this link:
http://www.ee.surrey.ac.uk/Teaching/Unix/unix1.html
Using the Linux commands you’ve learned in class, perform the following tasks:
– Open a shell. Click the “Terminal” icon in the toolbar on the left of the desktop.
– Create a directory in your Documents directory called CSCI3003 using the `mkdir` command:
% mkdir Documents/CSCI3003
– Change to the newly created directory using the `cd` command:
% cd Documents/CSCI3003
– Create a subdirectory in the CSCI3003 directory called Lab1 and `cd` into it:
% mkdir Lab1
– Check that the newly created directory has been made using the `list` command:
% ls
% cd Lab1
– Download and move Lab1.py into your lab directory. You need to substitute which folder you
downloaded the python file into.
% mv
– You can remove files using the `rm` command. Remember, when you remove a file from the shell,
it is GONE FOREVER! Always back up your code with the copy (`cp`) command:
% cp
% rm
Your first Python script:
Using the commands outlined above, you should have set up a working space to run your first script. Make
sure you are in the directory containing the script and open it with a text editor:
% gedit Lab1.py &
– Look over the script, notice how the commands are structured and start guessing what the
program might do.
– There are two different flavors of python installed in the lab machines: python 2 and python 3
(with multiple different subversions of each of them). The commands used to invoke python 2
and 3 are ‘python’ and ‘python3’ respectively. For this class, we are going to use python3. The
command ‘python3’ will run the default python3 version installed in the system. To use a specific
version of python 3 from a list of available options, load the module corresponding to the version.
An example is shown below:
% module load soft/python/3.7
– Run the script from the terminal using the `python3` command. Follow the instructions on the
screen for some brief information about python. When the script has finished running, there
should be an output file called ‘lab1_output.txt’.
% python3 Lab1.py
– Change the script any way you would like and see what the changes do. Explore.
Running your script using Spyder:
The goal of this section is to show you how to program using an integrated development environment
(IDE). You will see how an IDE works compared to the standard “text editor + terminal” configuration (you
may notice that they are basically the same – one is just fancier!).
Spyder (installation instructions below) is an IDE for python. An IDE is a piece of software that combines
a text editor, a terminal, and other useful tools such as autocompletion, a debugger, and a variable
explorer in one package. IDEs can be very convenient, and especially so for learning programming as a
beginner. In all future python exercises, we would like you to use Spyder to write and run your code.
Spyder is part of the Anaconda python distribution. This is already installed on CSELabs computers. To
load this software, first load the anaconda module.
% module load soft/python/anaconda
Then, open the spyder software (this will take a little while to load)
% spyder &
Click on the large folder icon in the upper right of the Spyder window and set the working directory to
your lab 1 folder. Open Lab1.py so that it appears in the text editor.
Since you will be running your script again, it will be important to change the names of files exported by
the script so you do not overwrite older files! Search for “lab1_output.txt” in Lab1.py and create a
different filename for this second run (e.g., “lab1_output_2.txt“), using Spyder.
Use “Run” in the Run menu to run Lab1.py from within Spyder!
Extra: Installing python on your personal machine:
One of the major attractive features of python is that it is cross platform. We will be using python3 in this
course. If you prefer to complete labs on your personal machine, make sure the code will run in python3.
You can download the exact same version of python and the Spyder IDE (integrated development
environment) software that you will use on the lab computers. This will give you the same experience
whether you work on your assignments in the computer lab or on your personal computer. (note: this will
require ~2.8GB of hard drive space)
We need to install the Anaconda python distribution (the latest is 2019.07), which includes python and
the Spyder IDE. To install, go to https://www.anaconda.com/download/ and download the appropriate
installer for your operating system; make sure you install the python3 version (Click on ‘Python 3.7
version’ as for now). Download the installer appropriate for your operating system, and choose the
graphical installer where available (Windows and Mac).
Follow the installation instructions, which are quite straightforward. Feel free to contact the TA if you are
having issues.
With this python installation, you will also be to run python from the command line or from Spyder. If you
want to run python from the command line, make sure that during the installation, you say “yes” if it asks
you to make Anaconda your default python distribution.
Submit to Canvas
You should submit two files on Canvas: the Lab1.py script and the output file lab1_output.txt generated
from running this script.
You’re finished with Lab 1!