You are on page 1of 67

Introduction to UNIX

What is UNIX?

 An Operating System (OS)


 Mostly coded in C
 Machine independence
 It provides a number of facilities:
 management of hardware resources
 directory and file system
 loading / execution / suspension of
programs
History (Brief)
 1969  1980’s
 First UNIX at Bell Labs  System V release 4
 The MULTICS  TCP/IP
 Kernighan, Ritchie,  Sun Microsystems
Thompson Solaris
 1970’s  Microsoft Xenix, SCO
 Bell Labs makes UNIX  MIT X-Windows
freeware  1990’s
 Berkeley UNIX (BSD)  GNU, LINUX
 Bill Joy vi editor, C  Stallman, Torvalds
Shell
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
Your Account
 Each user has their own space called their
account.

 Type your login ID and password to enter


your account.
 Only if the login ID and password match
will you be let in.
Login to your Account

login: ad You type your ID and RETURN.

Password: You type your password and


RETURN. It does not appear.

$ The UNIX prompt (or similar).


You can now enter
commands.
Logout from your Account
logout

or
^D Press CONTROL and D
together
or
exit
On-line Help

 man Manual pages


Spacebar to go on; ^C to stop
man gnuchess
man man

 apropos topic Lists commands


related to topic
apropos game
apropos help
UNIX Books
 The Unix Programming Environment,
Brian W. Kernighan and Rob Pike.
Prentice Hall, Inc., 1984.
 Sumitabha Das, "Unix : Concepts and
Applications"
 A Student’s Guide to UNIX, Harley Hahn,
McGraw-Hill, 1993
 A Practical Guide to the UNIX System, Mark
G. Sobell, Benjamin-Cummings,
3rd Edition, 1995
Kernel-Shell Relationship
t e m
s
Sy
n/

er
ti o

s
a

U m
ic

U
pl

ni m

ll
Co
U

e
x an
Ap

Sh
s

S
er

r
he are
h e

t
ll

O ftw

ds
So

Hardware

To ernet
Da cka
Pa
tab ges

ols
Int
as
e

Kernel
Sh
el
l Compilers
e ll
h
U

S
se

e r
r

Us
The Shell

 The UNIX user interface is called the shell.


 The shell does 4 jobs repeatedly:

display
prompt
read execute
command the shell command

process
command
Typing Commands

 Try these:
date
cal 3 2005
who
ls -a
man cal
clear
Changing your Password
 The command is:
passwd

 It will ask you for the new password twice.


Date Commands
 date Gives time and date

 cal Calendar
cal 1997
cal 3
cal 7 1962
cal 9 1752
You and the System
 uptime Machine’s ‘up’ time
 hostname Name of the machine

 whoami Your name


 who
Calculators

 expr e Simple arithmetic


expr 3 + 5 + 7

 bc Programmable
Calculator
Some General Purpose Commands

date locate
cal more
who passwd
ls echo
man banner
clear tty
uptime uname
hostname tput
quota spell
whoami ispell
apropos cat
whatis sort
which pwd
Redirection, pipes , processes
 Output can be redirected to a file with‘>‘:
ls > dir.txt
cal 2004 > year2004
 Output can be appended to a file with ‘>>‘
cal 2004 > years
cal 2005 >> years
 Pipes : sending the output of one program to
the input of the other
ls | sort
who | sort
 Processes : Running two commands
sequentially
locate mj > xxx; date
locate usr > xxx &
The UNIX File System
The File
 Ordinary Files

 Directory Files

 Device Files
The Parent Child Relationship

 A simplified UNIX directory/file system:


/

etc bin usr1 dev tmp


... ... ...
date . . . cal faculty

mj
Some System Directories
 / root directory

 /bin commands

 /etc system data files


(e.g. /etc/passwd)

 /dev files representing I/O devices


Pathnames
 A pathname is a sequence of directory
names (separated by /’s) which identifies
the location of a directory.

 There are two sorts of pathnames


 absolute pathnames
 relative pathname
Absolute Pathnames
 The sequence of directory names
between the top of the tree (the root) and
the directory of interest.
 For example:
/bin
/etc/terminfo
/export/user/home/ad
/export/user/home/s3910120/proj1
Relative Pathnames
 The sequence of directory names below
the directory where you are now to the
directory of interest.

 If you are interested in the directory proj1:


proj1 if you are in
s3910120
s3910120/proj1 if you are in home
home/s3910120/proj1 if you are in user
Commands and Pathnames
 Commands often use pathnames.

 For example:
/usr/games/fortune
cat /etc/passwd List the password file
Moving between Directories
 s3910120’s home directory:

s3910120

proj1 proj2
hobby.c
... ...
 If you are in directory s3910120 how do
you move to directory proj1?
cd proj1

 You are now in proj1. This is called the


current working directory.
 pwd Print name of current
working directory

 Move back to directory s3910120 (the


parent directory):
cd ..
 When in proj1, move to proj2 with one
command:
cd ../proj2

 ../proj2 is a relative pathname


Special Directory Names

 / The root directory


 . The current working
directory
 .. The parent directory
(of your current directory)
Examples
 cd / Change to root directory
 cd ~ Change to home directory
 cd (Special case; means cd ~)
 cd ../.. Go up two levels.
Investigate the System
 Use cd
 cat file List file
cd /etc
cat passwd
 ls Directory listing
ls List current dir.
ls /etc List /etc
Making / Deleting / Renaming Directories

 Usually, you can only create directories


(or delete or rename them) in your
home directory or directories below it.

mkdir Make a directory


rmdir Delete a directory
mv Rename a directory
Permissions
 ls –l /etc/passwd
-rw-r--r-- 1 root root 2365 Jul 28 16:19 /etc/passwd
 read, write, execute (r w x)
 - rw- r-- r--
directory owner group everyone
 chmod
-w, +w ….
Commands to work with files
 cat > filename
 less
 head
 tail
 cp
 mv
 rm
 wc
 grep
 spell
 ispell
Communicating with People
Information on Others
 users Who else is logged on?

 who Information on current users

 ps What are people doing?


ps -au
 w What are people doing?
w -sh A shorter report

 Examine password info:


more /etc/passwd
grep s38 /etc/passwd
Fingering People
 finger Info. on current users
finger -l Longer information

 finger user Information on user


(need not be logged in)
finger ad
 finger @machine-name User info. for

that
machine
finger @catsix
finger @ratree.psu.ac.th

 ping machine-name Is machine


alive (on)?
ping catsix (^C to stop)
Your Finger Information
 chfn Change your finger entry

 finger also prints the contents of the


.plan and .project files in your home
directory. List ‘.’ files with:
ls -a
Talking
 talk user Talk to user
(on any machine)
talk ad
talk bill-gates@ratree.psu.ac.th

Get out by typing ^C


 write user Send a message to
user
on this machine
write ad

 mesg n Switch off talk / write


acceptance.
mesg y Switch on
Sending E-mail
 Send mail :

mail Add

Subject: Shoe Problem


What colour are my shoes? I cannot
see them at the moment because of my
desk.
- Jim
^D
The vi Editor
 Two modes
 Insert i
 Command <ESC>
 Append a
 Replace character r, Replace word R …..
 Deleting character x, Deleting line dd
 Exit
Goto command mode press :wq
……
The Shell
Exploring the Shell
 Making a new command
 Create a directory called ‘bin’ inside your directory
mkdir bin
 Create a file containing a set of commands

cat > nuls


echo ‘Welcome to your directory’
ls –l
echo ‘Thank you’
^D
 Make nuls executable

Chmod +x nuls

 The Convention filename.sh


Exploring the Shell
 Command arguments and parameters
 Argument 1 to 9 $1, ….,$9
 All the arguments $*
 $0 – The name of the shell script
 $# - The Number of arguments
 Shell Variables
 Set a variable
Variable name = value
$ x = Good Day
$ echo $x
$ set
Exploring the Shell
 Making the script interactive : read
echo ‘Enter file name’
read fname
echo $fname
 Exit status of a command
 $? - exit status
 0 command succeeds
 Any other non zero value command fails
Exploring the Shell
 Conditional Execution.
Delimits two commands
 && : The second command is executed only when

the first command is executed successfully


 || : The second command is executed only when

the first command fails.


 Script Termination
 exit
Exploring the Shell
 Conditional statements
if (conditional is true)
then
execute commands
else
execute commands
fi

Example
if grep “professor” employee.list
then echo “record found”
else echo “record not found”
fi
Exploring the Shell Operator meaning
-eq =
-ne !=
 Numeric comparison -gt >
test $x –eq $y -ge >=
-lt <
if test $# -eq 0 -le <=
then echo "no input argument"
else echo $1 Test True if
fi
-n stg stg is not a null
 String Comparison string
if [ -z "$1" ]; -z stg stg is a null string
then echo "no input argument"
else echo $1
s1 = s2 s1 = s2
fi s1 != s2 s1 != s2

stg stg is assigned and


not null
Exploring the Shell
 The case structure
case expression in
pattern1) Commands ;;
pattern2) Commands ;;

pattern9) Commands ;;
esac
Exploring the Shell
 Computation
 expr 3 + 5
 expr $x + $y
 Command Termination
 P1 ; P2 - does P1 then P2
 P1 & P2 - does P1 then P2 but does not wait
for P1 to finish.
Exploring the Shell
 Looping  while true ;
while (condition is true) do
do
date
commands
done sleep 100;
 Looping with a list done &
for var in list  for file in *.c
do do
commands cc –o $file{x} $file
done
done
Filters
 The UNIX programs that read some input,
perform a simple transformation on it and
write some output.

 grep, egrep, fgrep


 tr, dd, sort
 Sed, awk – programmable filters
grep
 grep options pattern format filename(s)

 Some option
 -c Counting number of occurrences
 -n Line numbers along with lines
 grep Mamata –e mamata database
 grep [Mm]amata database
grep : Regular Expressions
 Character sets
 [mM] , [aeiou] , [a-zA-Z0-9]
 Immediately preceeding character
 G*, [gG]*
 Matching a single character
 2… A four character pattern starting with 2
 .* A number of characters or none
grep : RE c Any non-special character
c matches
\c Turn off any special
meaning of character c
^ Beginning of line
 Specifying pattern
boundaries $ End of line
 ^r pattern beginning
with expression r . Any single character

[…] Any one of character in


 ^[^r] pattern not
…; ranges like a-z are
beginning with
legal
expression r [^…] Any single character not in
…; ranges are legal
 r$ pattern ending with r* Zero or more occurrences
expression r of r
r1r2 RE r1 followed by RE r2
egrep : Regular Expressions
 r+ : one or more occurrences of r
 r? : zero or more occurrences of r
 r1|r2 : r1 or r2
 (r) : nested r
fgrep
 Searches for multiple patterns
 Does not accept regular expression
 Multiple patterns are separated by new
line character.

The disadvantage of grep family is that


none of them has a separate facility to
identify fields.
sort
 -f : eliminates distinction between
uppercase and lowercase letters.
 -n : numeric comparison
 - r : largest to smallest
 +m : comparison skips first m fields
 +0 : beginning of the line
 -u : discard duplicates
comm
 File comparison command
 Gives three columns of the output
 Lines that occur only in file 1
 Lines that occur only in file 2
 Lines that occur in both
 One or more columns can be suppressed
 Comm –12 f1 f2
tr
 Transliteration of character in the input
 tr a-z A-N
 Mostly used for character conversion
Assignment
1. Try all the UNIX commands. Store the output
in a file appropriately using redirection
operators.
2. Read a word from the terminal and check if the
spelling is correct. Suggest few alternatives.
3. Create a file using Vi. Store few names in the
file. Search all the names containing the letter
M or m.
4. Create another file using cat command
5. Compare both the files to find the diffirences
6. Use calculator commands to compute 5
arithmetic expressions.

You might also like