Introduction to Unix – CS 21
Lecture 2
Lecture Overview Starting out in Unix
Getting help when needed Looking around a little
Environment and Environment Variables
The Unix file structure Organization Navigation
Logging In (And Logging Out) Your Unix experience begins with a
login prompt Login name and password
Always be sure to log out Why?
Malicious people shouldn’t have access to your account
Locking the screen…is it safe? Well, maybe, maybe not
Good Password Versus Bad Password What makes a bad password?
Any word in a dictionary Any word from a sci-fi movie/show 30 sec – 8 minutes to break
What makes a good password? Easily interpreted and remembered by user Looks like random gibberish to others
passwd normally changes your password
I’m In, Now What? No “tour of Unix” like Windows has You’re pretty much on your own Unix assumes you know what you
are doing You are given just enough leverage
to either do everything well or really mess everything up
Where To Get Help man
The most important command in all of Unix RTM
info More complete descriptions of certain
packages help
Shell specific commands apropos whatis
(RTFM)
Man Page Sections And What They Mean 1 – User commands 2 – System Calls 3 – C library routines 4 – Administrative files 5 – Miscellaneous 6 – Games 7 – I/O and special files 8 – System administration commands
More on man Other sections exist (such as the perl
reference manual and the tcl reference manual)
-a will show all the man pages that match First is shown by default
How would you find out more about man? man man
Example
How Am I Supposed To Read This? Name:
The name of the program and a brief description
Synopsis: How to run this command
Description: Listing of all flags and what they do
See also: Relevant related commands
What Do You Do If There Isn’t A Man Page? Option 1: run the program and hope
it doesn’t destroy anything Option 1b: run the program with random
flags and see what exactly it destroys Option 2: do a little snooping
Check for man pages or documentation on the web
See if there are any environment variables that it might use
Who is logged on and what are they doing? users
Shows a list of all currently logged on users who (and whoami)
Shows a list of all currently logged on users and where they are logged on from
w Shows a list of all currently logged on users
and what they are running finger
Tells a little more information about users
Privacy issue? You can tell when someone else is
logged on and exactly what they are doing
Everyone else can see what you are doing
Is this acceptable?
One User To Rule Them All The superuser – root
Root has the permission to do anything Including wiping the entire system clean
The system will allow root to do just about anything
Comparable to “Administrator” in Windows Of course, any user in Windows XP can be
designated an Administrator and install software
No, You Can’t Get Root For obvious reasons, you will not
be given root access Don’t feel bad though, very few
people at school have root You can always install your own
machine at home to play around with Knoppix
Environment And Environment Variables A set of preset variables that all
programs run from that shell can see
In order to see them, run the command: printenv
Set environment variables with the command: export VAR=VALUE
Clear environment variables with: unset VAR
Example
Stupid Analogy Of The Day
Each contain useful information Every program can check them out and
read them If someone changes them, the next person
to check them out will see those changes
Environment Variables =
Exporting Or Not If you don’t export the variable, it
is a local variable and not accessible to everyone
Get access to a local variable by using the dollar sign ($VAR)
A Very Important Environment Variable PATH
Tells Unix where to look in order to find programs to run
Very important hint: When typing a command, you should be able to
hit the tab key in order to complete it Called tab completion, this is a most invaluable tool The system searches your PATH for any program it
can run that matches what you have typed so far
Files, Files Everywhere Unix treats almost everything as a
file Standard text files and binaries Directories Links Even devices!
Your terminal is a file, your keyboard is a file, your hard drive is a file, everything is a file!
What Was That? To repeat, Everything in Unix is a
file! Why?
This goes back to the design of Unix trying to keep everything simple
Treating everything the same allows for a simple interface to interact with everything in the same way
Unix Directory Structure Everything is a file, and the directory
structure is like a filing cabinet
Inverted Tree Structure/
/usr /bin /home
/var/lib
/home/csmajs
/home/csgrads
/home/csmajs/undergrads
/home/csgrads/graduates
What Goes Where? /
Root of the entire system Comparable in Windows to C:\
Windows, however, has several roots depending on what partition and device you are looking at
/bin Commonly used binaries (programs)
And… /sbin
More programs to run Statically linked Still should run if you tinker around and
mess things up
/usr User related commands as well as a
whole bunch of random stuff
And… /lib
Libraries go in here /dev
All devices are located in here /home
Traditionally, this is where user accounts are stored
/etc Startup files and configuration files for
daemons and other programs
And… /var
Various files go in here Traditional location of mailboxes
/var/spool/mail
/proc Special files that contain information
about the system or info from running programs
Navigating The Directory Structure You are always located at one location
in the tree ls
Provides a listing of the current directory All files and directories are shown
cd Change directory “cd /” Moves your current directory to / cd without any arguments moves you to
your home directory
Creating And Removing Directories mkdir
Makes a directory “mkdir myDir”
rmdir Removes an empty directory “rmdir myDir”
A Couple Of Notes Unix is case-sensitive
myDir is different from MyDir and mydir Not all files are shown with ls
“ls –a” will show all files Hidden files in Unix always start with a .
Example: .hidden .plan
Command Line Options Almost all Unix commands have
options that change what they do Read the man pages for a listing
They have the form: -a Depending on the command, they
may be lumped together -a –l is the same as -al
How Different?
Special Directories .
This stands for the current directory ..
This stands for the directory directly above the current directory
~ Your home directory
These directories can be “stacked” “../..” stands for two directories directly
above the current directory
Relative Versus Absolute Pathnames Unix supports two different styles for
directories Absolute pathnames
Always start from / and contain the entire route
“/home/csgrads/villarre” Relative pathnames
Assumed to be relative to current directory Doesn’t start with a / “classes/cs21”
Advanced Navigation Through The Directory Structure pushd
“Push” a directory onto a stack popd
“Pop” a directory from a stack A Stack is what’s known as a LIFO
structure Last in, first out
How Does A Stack Work?
e
d
c
b
a
How Does A Stack Work?
e
d
c
b
a
d
How Does pushd and popd Work?
/var/spool/
/home/csmajs
/bin
/usr
/home
pushd /var/spoolpushd /home
popd
popd
Current Directory:
/home/csmajs/var/spool/home/var/spool/home/csmajs
Today In Lab Put all of the material from today
into practice Lab will be posted later today at:
www.cs.ucr.edu/~villarre/cs21/
Reading Assignment Read chapters 2-4 I will assign a homework beginning
of next week First quiz will be a week from next
Tuesday