Introduction To UNIX: Motivate The Use of UNIX Introduce Basic UNIX Features (E.g. Using Directories, Files) Introduce
Introduction To UNIX: Motivate The Use of UNIX Introduce Basic UNIX Features (E.g. Using Directories, Files) Introduce
CET 421
Objectives
Motivate the use of UNIX
Introduce basic UNIX features (e.g. using
directories, files)
Introduce vi and emacs
Contents
1. Background on UNIX
2. Starting / Finishing
3. Typing UNIX Commands
4. Commands to Use Right Away
5. UNIX help
continued
6. The UNIX File System
7. Working with Directories
8. Working with Files
9. Communicating with People
10. E-mail
11. vi/emacs
1. Background on UNIX
1.1. What is UNIX?
1.2. History
It provides a number of facilities:
management of hardware resources
directory and file system
loading / execution / suspension of programs
History
Beginnings in 1969
AT & T Bell Laboratories
Ken Thompson and Dennis Richie
Working version (in 1970) on a DEC PDP 11/70
UNIX and C Relationship
June 81: Berkeley UNIX 4.1 BSD (enhanced with vi, csh, and
virtual memory management)
1983: Berkeley UNIX 4.2 BSD (added TCP/IP networking,
sockets and a new file system)
Later UNIX/32V, SYSTEM III, SYSTEM V
and then Linux
1.2. (Brief) History
1969 First UNIX at Bell Labs
1975 Bell Labs makes UNIX freeware
1970’s Berkeley UNIX (BSD)
1980’s TCP/IP
MIT X-Windows
1990’s The Web,
LINUX
1.3. Why Use UNIX?
multi-tasking / multi-user
lots of software
networking capability
graphical (with command line)
easy to program
portable (PCs, mainframes,
super-computers)
continued
free! (LINUX, FreeBSD, GNU)
popular
profitable
1996 Sales: US$34.5 Billion, up 12%
not tied to one company
active community
UNIX
Hardware is surrounded by the operating system
software
Operating system is called the system kernel
The kernel is the core of an operating system and
manages the machine’s hardware resources (including
the processor and the memory), and provides and
controls the way any other software component can
access these resources.
The kernel runs with a higher privilege than other programs
(so-called user-mode programs).
Comes with a number of user services and interfaces
Shell
Components of the C compiler
GUI or Command Line Interface
UNIX
Modern UNIX Systems
System V Release 4 (SVR4)
Solaris 9
4.4BSD
Linux
Unix is Made Up of
Processes
• Running Programs
User owned
System owned
Files
• Regular Files:
– Data
– Executables <-- usually start a process
• Directory Files
– Contain other files and directories
• Special Files
UNIX Kernel
Modern UNIX Kernel
Unix Help
There is online help available on any Unix
system.
The help system is call the "Unix man pages"
set of help files and a command to view them.
the book has some of the same information, but
you might need to check the man pages for your
specific system for details.
RTFM
The acronym RTFM (commonly found in
newgroups and other sources of information for
Unix users and System Administrators) stands
for:
Read The … Man page
(or Read The … Manual).
You need to spend time playing on a Unix
system to learn!
Operating Systems
An Operating System controls (manages)
hardware and software.
provides support for peripherals such as
keyboard, mouse, screen, disk drives, …
software applications use the OS to communicate
with peripherals.
The OS typically manages (starts, stops, pauses,
etc) applications.
Single vs. Multitasking
Some old operating systems could only do one
thing at a time (DOS).
Most modern systems can support multiple
applications (tasks) and some can support
multiple users (at the same time).
Supporting multiple tasks/users means the OS
must manage memory, CPU time, network
interfaces, ...
User Interfaces
The User Interface is the software that
supports interactions with a human.
Some operating systems directly provide a
user interface and some don't.
Windows is an example of an Operating
System that includes a user interface.
Unix (the OS) does not directly provide a
user interface.
Unix and Users
Most flavors of Unix (there are many) provide the
same set of applications to support humans
(commands and shells).
Although these user interface programs are not
part of the OS directly, they are standardized
enough that learning your way around one flavor
of Unix is enough.
Flavors of Unix
There are many versions of Unix that are
used by lots of people:
SysV (from AT&T)
BSD (from Berkeley)
Solaris (Sun)
IRIX (SGI)
AIX (IBM)
LINUX (free software)
POSIX
POSIX is a standard that describes a single
interface to a Unix like operating system.
POSIX is not an implementation - it is a
description!
Most vendors are supporting POSIX (by making
sure their version of Unix adheres to the
standard).
Unix History and Motivation
The first version of Unix came from AT&T in the
early 1970s (Unix is old!).
Unix was developed by programmers and for
programmers.
Unix is designed so that users can extend the
functionality - to build new tools easily and
efficiently (this is important for programmers).
Some Basic Concepts
Unix provides a simple interface to peripherals
(it's pretty easy to add support for a new
peripheral).
Unix includes a basic set of commands that
allow the user to view/change the system
resources (filesystem, processes, peripherals,
etc.).
What we will look at
In this course we will learn about:
Unix user accounts
the core set of Unix commands
the Unix filesystem
A couple of special programs called "shells".
A number of commonly used applications:
Window system, text editors, programming tools.
The power of Unix is that you can
extend the basic commands
We will also look at how to extend the basic
functionality of Unix:
customize the shell and user interface.
string together a series of Unix commands to create
new functionality.
create custom commands that do exactly what we
want.
Our View of the World as Users
Your Shell
A shell is a process
that acts as an
interface to the OS. It
Unix Shell allows the user to run
programs individually
and together to
accomplish a task.
Use the command line
While graphical user interfaces are available and
often used on Unix systems you must have a working
knowledge of the standard command line utilities,
pipes, and I/O redirection to benefit from the
considerable strengths of Unix.
Simple Unix
Directory Structure
/
u1 u2 ...
Your First Command
Man(manual) -- Documentation is your friend
Syntax: man topic
man provides online documentation on nearly every
standard command and configuration file.
Optional Syntax: man -k keyword
man man for more details
Special Directories
Home Directory
/home/u1
~u1
~
A user generally has permission to freely manipulate
files within this directory and its children.
Users start with their home directory as their pwd
when they login.
Changing Directories
The cd(Change Directory) command is used to change
directories
cd path
Paths can be relative or absolute
pwd reports present working directory
cd when entered by itself sets the pwd to the user’s home
directory.
Your Prompt Helps you Navigate
Some Examples:
csy12:~/bin>
csy12:/home
csy12:/usr/man
Other File System Utilities
ls Lists all files in a directory
cp Copies files
mv Moves files
rm Deletes files
mkdir Makes directories
rmdir Removes directories
Basic Syntax
ls ls
cp cp source dest OR
cp source … dir
mv mv source dest OR
mv source … dir
rm rm file
mkdir mkdir new directory name
rmdir rmdir directory to be removed
Other Comands
Every Unix distribution comes with hundreds of other standard
commands that can be used for everything from viewing and
searching files to developing software.
cat Echoes file contents to the screen
grep Searches a file for a string
more Echos a file a line at a time
less Same as more but more features
wc Counts the words in a file and more
sort Sorts the contents of a file
Pipes and Redirection
The Unix “philosophy” involves a set of generic tools
which each do one thing well. Using these tools together
allows you to appreciate the power of the Unix command.
stdin stderr
Standard File Handles
All standard shells provide a facility to re-map
these three file handles to other devices and files
in addition to other commands.
Program 1
stdout
Pipe Program 2
stdin
stdout
Pipe Program 3
stdin
Shell/Environment Variables
Shell Variables Environment Variables