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
First UNIX at Bell Labs The MULTICS Kernighan, Ritchie, Thompson
1970’s
Bell Labs makes UNIX freeware Berkeley UNIX (BSD) Bill Joy vi editor, C Shell
1980’s
System V release 4 TCP/IP Sun Microsystems Solaris Microsoft Xenix, SCO MIT X-Windows
1990’s
GNU, LINUX Stallman, Torvalds
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
or exit
Press CONTROL and D together
On-line Help
man
Manual pages Spacebar to go on; ^C to stop
man gnuchess man man
apropos topic apropos game apropos help
Lists commands related to topic
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
e as tab ges Da cka Pa
Sh el
l
Hardware
ll e Sh
Ap r he are t O ftw So
Int To ernet ols
a
ds x an ni m U m Co
S h e ll
U s er
ic pl
/ n o ti
m e t s Sy
Kernel Compilers
U r se
S
ll e h
e Us
r
er s U
Kernel-Shell Relationship
The Shell
The UNIX user interface is called the shell. The shell does 4 jobs repeatedly: display prompt read command
the shell process command
execute 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
hostname
Machine’s ‘up’ time 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 cal who ls man clear uptime
locate more passwd echo banner tty uname
hostname
tput
quota
spell
whoami apropos whatis which
ispell cat sort 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 date . . . cal
usr1 faculty mj
dev ...
tmp ...
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 s3910120 s3910120/proj1 home/s3910120/proj1
if you are in if you are in home 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 hobby.c
proj1
proj2
...
...
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.
Print name of current working directory
pwd
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
/ . directory ..
The root directory The current working The parent directory (of your current directory)
Examples
cd /
cd ~
cd
cd ../..
Change to root directory Change to home directory (Special case; means cd ~) Go up two levels.
Investigate the System
Use cd
cat file
List file
cd /etc cat passwd
ls ls ls /etc
Directory listing List current dir. 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 rmdir mv
Make a directory Delete a directory Rename a directory
Permissions
ls –l /etc/passwd -rw-r--r--
root
2365 Jul 28 16:19 /etc/passwd
read, write, execute (r w x) rw- r-- r--
directory
1 root
owner
chmod -w, +w ….
group everyone
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 w -sh
What are people doing? A shorter report
Examine password info: more /etc/passwd grep s38 /etc/passwd
Fingering People
finger finger -l
finger user finger ad
Info. on current users Longer information
Information on user (need not be logged in)
finger @machine-name
User info. for that
machine finger @catsix finger @ratree.psu.ac.th
ping machine-name ping catsix
Is machine alive (on)? (^C to stop)
Your Finger Information Change your finger entry
chfn
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
[email protected]
Get out by typing ^C
write user user
Send a message to on this machine
write ad
mesg n mesg y
Switch off talk / write acceptance. 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 != -gt > -ge >= -lt < -le <=
Numeric comparison test $x –eq $y if test $# -eq 0 then echo "no input argument" else echo $1 fi
String Comparison if [ -z "$1" ]; then echo "no input argument" else echo $1 fi
Test
True if
-n stg -z stg
stg is not a null string stg is a null string
s1 = s2
s1 = s2
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 (condition is true) do commands done
Looping with a list for var in list do commands done
while true ; do date sleep 100; done &
for file in *.c do cc –o $file{x} $file 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
Immediately preceeding character
[mM] , [aeiou] , [a-zA-Z0-9] 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 Turn off any special meaning of character c Beginning of line
$
End of line
.
Any single character
[…]
Any one of character in …; ranges like a-z are legal Any single character not in …; ranges are legal Zero or more occurrences of r RE r1 followed by RE r2
\c
Specifying pattern boundaries
^r pattern beginning with expression r ^[^r] pattern not beginning with expression r r$ pattern ending with expression r
[^…] r* r1r2
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.