UNIX is a very powerful operating system. Its industrial strength make it popular among professional computer scientists. However, its inscrutibility challenges new users. UNIX is user-friendly, but not necessary learner-friendly. Here we can only cover the simplest UNIX concepts and commands.
Shell. This is the application that starts when you begin a UNIX session. The commands you type are the inputs to the shell and what you see on the monior are its outputs. Most of the time the shell is totaly transparent, but it is useful to know that alternative shells are available. As you advance, you may want to find out about some of the alternatives.
Working Directory, Home Directory. The computer's file system
consists of directories (called "folders" in windowing systems)
which contain files and other directories. At any given time, UNIX considers
one directory to be your working directory. When you start a UNIX
session, your working directory starts out as your home directory,
which is abbreviated with a "~
" (tilde) followed
by your login name. My home directory is ~wittels
. Your working
directory can be changed to any directory which you are allowed to access.
Your home directory can only be changed by a system administrator.
Path. This is the logical location or address of a file
inside the computer's file system. It starts with a single directory called
"/
" and known as the root of the file system.
The path to a file is a list of all of the enclosing directories
separated by "/
" and without spaces. For example,
if my home directory is /usr7/wittels
and there is a directory,
called cs4731
, inside my home directory and a file called main.c
inside the cs4731
directory, then the path to the file
is /usr7/wittels/cs4731/main.c
. This is the file's absolute
address. A file can also has a relative address which tells how
to get to it from the your working directory. Using the above example, if
my working directory is /usr7/wittels
then the file's relative
address is cs4731/main.c.
If the working directory is /usr7/wittels/cs4731
then the relative address is main.c
. Two abbreviations useful
in specifying a relative path are ".
" (single
dot) meaning "my working directory" and "..
"
(double dots) meaning "the directory that my working directory is in".
Thus, from my home directory ~wittels
, I can specify the pah
to wilson's home directory by the symbolic address ~wilson
,
the absolute address /usr7/wilson
, or the relative
address ../wilson
.
pwd - print working directory. This command printts out the absolute path to your working directory. This is the result when I'm in my home directory:
wpi.WPI.EDU> pwd /usr7/wittels
ls - list working directory. Print the contents of your working directory. This is the result when I'm in my home directory:
wpi.WPI.EDU> ls cs4731 public_html
You can also add the option -l
to get a "long"
listing:
wpi.WPI.EDU> ls -l total 16 drwxr-xr-x 2 wittels 1174 8192 Jan 16 16:51 cs4731 drwx-----x 3 wittels 1174 8192 Jan 13 16:10 public_html
cd - change working directory. This example shows how the command is used.
wpi.WPI.EDU> pwd /usr7/wittels wpi.WPI.EDU> ls cs4731 public_html wpi.WPI.EDU> cd cs4731 wpi.WPI.EDU> pwd /usr7/wittels/cs4731 wpi.WPI.EDU> cd .. wpi.WPI.EDU> pwd /usr7/wittels
cat - concatenate. There are two uses of this command.
cat file1
displaysfile1
on the screen.
cat > file1
stores everything you type intofile1
. UNIX stops storing when you typecontrol-d
.
more - diplay a file one screenful
at a tme. Whereas cat file2
will whip a large file2
across the screen stopping only at the end, more file2
will
display it one screenful at a time. Press space
to move to
the next screenful; press q
to stop the display.
cp - copy a file. cp file1 file2
copies the
contents from file1
into file2
. If file2
did not already exist, it is created. If file2
did exist, its
old contents are erased and replaced by the contents of file1
.
Note that file1
and file2
can be the absolute
or relative paths to the files. Note cp
can also be used to
copy an entire directory and its contents.
mv - move a file. mv
is same as cp
except that the first file is destroyed. This can also be thought of as
a way to rename a file.
rm - remove a file. Delete a file without warning and without
hope of recovery. You can use rm
to delete a directory (and
all of its contents) by using the -r
option. If I were to type
rm -r ~wittels
, it would significantly ruin my day.
mkdir - make directory. Create a directory in your working directory.
For example, to make the cs4731
directory I went to my home
directory and typed mkdir cs4731
.
rmdir - remove directory. But only if the directory is already empty. rmdir cs4731 won't work unless everything inside has already been removed.
man - manual. This command shows you the manual page for
a UNIX command. For example, man ls
will tell you what the
UNIX ls command does and what options are available. The manual pages will
be displayed using the more command (space
to show the next
screen; q
to quit). To find out more about this command type,
of course, man man
.
Some UNIX features combine great power with great danger. Here are a few.
Safety Features and Confirmation - There aren't any. UNIX assumes you know what you are doing. If you tell it to destroy your entire MQP, UNIX won't ask "are you sure you want to do that?". Nor will it tell you when the destruction is complete. UNIX is efficient; it is generally not possible to recover what you told UNIX to destroy.
Case Sensitivity - UNIX is case sensitive. That means the files wpi.c, WpI.c, wPi.c and WPI.c are all different. This can sometimes cause confusion. For example, if a file is generated in an environment which is case insensitive (eg, DOS), it may not work properly on a UNIX system.
WildCards - pathnames can contain "wildcards" which allow you to specify the path when you only know part of a file's name, when you wnnt to work on more than one file at a time, or when you are too lazy to type the whole name.
"?" means "ignore any single character". For example,
rm wil?on.c
will remove files wilson.c
, wilton.c
,
and wilxon.c
but not willton.c
and not wilon.c
.
"*" means "ignore any number of characters, including
no characters". For example, rm wil*on.c
will remove all
five of the previous examples. The most dangerious command in UNIX is rm
-r *
.
There are other wildcard symbols available.
Control-C - This key combination stops almost anything in UNIX. That is useful because some programs, especially when you are trying to get them to work, won't stop by themselves.
Quotes - If you put "quotes" around an address, wild
cards are ignored. Thus, you can create file names such as my file.c
(note the space) or my*file.c
. (note the *
). Perhaps
you can even find a way to create a path name that includes a quote.