CSE 303: Concepts and Tools for Software Development, Spring 2007

Course Glossary

Foreword: Especially with the furious pace of new tools and environments in CSE303, it is easy to get lost in unfamiliar terms. Here we provide useful working definitions for the purpose of this class. They may not be complete or even one-hundred percent accurate throughout the universe, but they should help us keep concepts straight. This list is to help you; it is not necessary to study the definitions.

This glossary will grow and change as the course proceeds. Feedback on entries and/or the general usefulness of the glossary is welcome.

The entries are divided by topic and are listed alphabetically within each topic.

Files, processes and shells

Files, processes and shells

absolute pathname
An absolute pathname starts with a forward slash (/). It describes the location of a file or directory relative to the root of the filesystem.

The name of the department's instructional Linux server. It is just the name of a computer on our network. That computer runs Linux and accepts remote connections so that you can do your work on it.

A stream editor, like sed, but slightly richer.

A file in a user's home directory. When a user logs in, the commands contained in this file are executed.

A particular shell. In general, many people find bash to be useful for shell scripting but a bit less convenient than, for example, csh for manual command-line interaction.

In the shell, any "first word" for the command-line that has special meaning, so the shell does not look for a program of the same name.

The command-line is the place in the shell where you type commands. It is "after" the prompt. A command-line interface is a mode of interaction with the computer via typing command-lines, as opposed to a GUI.

Sometimes called a folder on other operating systems, a directory is part of the file system that holds files and other directories. If a directory A is in a directory B, then we call B the parent directory of A.

dot files (hidden files)
If a file's name starts with a period, that file is automatically hidden by the ls command. Run "ls -a" to reveal dot files.

emacs is a powerful, extensible general-purpose text editor with support for many programming languages

file system
The file system is the tree of directories and files holding the persistent data, i.e., the data that exists even after programs stop and even the computer is turned off.

A command line tool that uses regular expressions to find patterns in text. grep has lots and lots of options; check the man page.

A graphical user-interface, typically using concepts including WIMP: Windows, Icons, Mice, and Pointers.

history variables
In the shell, history variables (e.g., !37) expand to previously executed commands. They are convenience for command-line users.

A free widely-available operating system that is by design very similar in use and functionality to the various UNIX operating systems.

The "manual" command for getting information about commands in UNIX and Linux

Metacharacters are characters like * and ? that the shell will change into some other character or characters. Metacharacters are useful for saving typing and flexibility in scripts. To literally write metacharacters, use quotes ("*") or backslashes (\?).

operating system
An operating system is the program that starts running when you boot a computer. The job of the operating system is to manage other programs, manage the file system, manage users and permissions, and manage resources (such as the screen and the disk) that different programs need.

Different users have different permissions, i.e. privileges. In UNIX, permissions correspond to files and whether a user can read and/or write and/or execute them.

A running program is a process. You may have multiple processes running the same program (e.g., emacs). Commands for working with processes: &, jobs, fg, bg, kill, ps, top.

The prompt is the text in the shell to the left of where you type a command.

Reflection-X is a piece of software for Windows that lets you make ssh connections to other machines (such as attu) and have windows for programs running on the remote machine actually display on your machine.

regular expression
Regular expressions are a "language" for patterns of characters that have some special properties that you will learn if you take a CS theory course. Simple example: ab*c is a pattern that matches "ac", "abc", "abbc", ... Regular expressions are used by many tools like grep and sed.

relative pathname
A relative pathname is one that does not start with a forward slash (/). The path describes a file or directory's location relative to the current wokring directory.

The shell can "redirect" standard in, standard out, and standard error to or from files instead of the screen or keyboard.

return code
Every program exits with a return code, accessible via the special variable $?. It is the convention that a successful exit has return code 0.

The root directory is the top-level directory (/ in UNIX). The root user is also known as the superuser, the special user who always has full access to everything. The two uses of root have essentially nothing to do with each other.

A script is a small program. A shell script is a small program written as a collection of shell commands. To confuse you, "script" also is the name of a program that logs all your shell interaction in a file; this program is badly named.

A command line tool that uses regular expressions to find patterns and replace in text. sed has lots and lots of options; check the man page. sed is short for "Stream EDitor".

A shell is a command-line interpreter for running other programs.

shell variable
Shell variables are storage locations managed by the shell that can store strings. Shell variables are useful for shell programming, and some special variables like PATH affect the way the shell works.

"Secure shell" A way to log-in to a Linux machine (such as attu) via the Internet rather than being physically at the keyboard. It is secure in the sense that all communication with the remote computer is encrypted (unintelligible to eavesdroppers).

Informally, UNIX is an operating system, or actually a general description for a related family of operating systems. For technical and legal reasons, Linux is not a UNIX operating system, but for all intents and purposes...

An operating-system concept describing an "account", which has a password, a home directory, and particular permissions.