UNIX ® OPERATING SYSTEM
FUNDAMENTALS
STEVEN STEPANEK
CALIF STATE UNIV, NORTHRIDGE
COMPUTER SCIENCE DEPARTMENT
NORTHRIDGE, CA 91330
sgs@csun.edu
UNIX OPERATING SYSTEM Copyright © 2000 by Steven Stepanek
1
UNIX ® Operating System
Fundamentals
UNIX is a registered trademark
of X/Open
Copyright © 2000 by Steven Stepanek
All rights reserved. No part of this publication may be reproduced, stored in
a retrieval system, or transmitted, in any form or by any means, electronic,
mechanical, photocopying, recording, or otherwise, without the prior written
permission of the publisher.
UNIX OPERATING SYSTEM Copyright © 2000 by Steven Stepanek
2
TABLE OF CONTENTS
Introduction:
Functional properties of UNIX 5
UNIX philosophy 8
Origins of UNIX 10
Movement towards a standard 12
Relationship between C and UNIX 14
Shell Operations:
Command interpretation shells 16
Command line structure 18
Correcting typing errors 20
Some useful utilities 21
Shell input/output redirection 27
Pipes and filters 29
Extended I/O redirection in the Bourne shell 32
Foreground / background 33
UNIX OPERATING SYSTEM Copyright © 2000 by Steven Stepanek
3
File System:
File system organization 35
File naming conventions 36
Common file name extensions 37
Hidden files 38
File types 39
File name wildcard characters 41
File paths 45
Directory entries . and . . 47
Directory utilities 49
File utilities 52
Text Processing:
Common editors 59
Regular expressions 64
UNIX OPERATING SYSTEM Copyright © 2000 by Steven Stepanek
4
FUNCTIONAL PROPERTIES OF THE
UNIX OPERATING SYSTEM
PROVIDE:
• MULTI-TASKING SUPPORT
MIGHT BE TIME-SHARING A MULTI-USER
ENVIRONMENT OR DRIVING A SINGLE USER,
MULTI-APPLICATION BASED WORKSTATION
• A PROCESS ORIENTED ENVIRONMENT
• INTER-PROCESS COMMUNICATION METHODS
UNIX OPERATING SYSTEM Copyright © 2000 by Steven Stepanek
5
• A HIERARCHICAL FILE SYSTEM WITH I/O
DEVICES MAPPED TO BEHAVE LIKE
ORDINARY FILES
DEVICE BINDINGS OCCUR AT RUN-TIME
• AN OPERATING SYSTEM DESIGNED TO BE
INDEPENDENT OF ANY SINGLE VENDOR'S
CPU ARCHITECTURE
• LOCAL AND LONG DISTANCE NETWORKING
SUPPORT
UNIX OPERATING SYSTEM Copyright © 2000 by Steven Stepanek
6
WHAT ADVANTAGES DO THESE
PROPERTIES PROVIDE?
• LOWER TRAINING COSTS
• THE ABILITY TO MIX VENDOR HARDWARE ON
THE SAME NETWORK
• A HIGH LEVEL OF SOFTWARE COMPATIBILITY,
LOWERING SOFTWARE CONVERSION COSTS
• A VARIETY OF THIRD PARTY APPLICATION
SOFTWARE, PROGRAMMING LANGUAGES,
AND SOFTWARE DESIGN AND DEVELOPMENT
PACKAGES
UNIX OPERATING SYSTEM Copyright © 2000 by Steven Stepanek
7
UNIX PHILOSOPHY
KEEP IT: SIMPLE
SMALL
MODULAR
FLEXIBLE
HAVE LIBRARIES OF BASIC TOOLS THAT CAN BE USED
TO BUILD SOLUTIONS WITH A MINIMUM AMOUNT OF
PROGRAMMING EFFORT
UNIX OPERATING SYSTEM Copyright © 2000 by Steven Stepanek
8
WORD
PROCESSING
EDITORS C BOURNE
SHELL SHELL E-MAIL
UNIX
KERNEL
HARD-
WARE
WORK DBMS
BENCHES SYSTEM
COMPILERS
UTILITIES
APPLICATION
PACKAGES
UNIX OPERATING SYSTEM Copyright © 2000 by Steven Stepanek
9
THE ORIGINS OF UNIX
1969 FIRST VERSION OF UNIX, PDP-7
KEN THOMPSON & DENNIS RITCHIE
AT BELL LABS
1970 DEVELOPMENT OF FIRST PDP-11
| VERSION OF UNIX, WRITTEN IN
1971 ASSEMBLY
1973 UNIX KERNEL REWRITTEN IN C
1974 CACM PAPER:
"THE UNIX TIME-SHARING SYSTEM"
UNIX OPERATING SYSTEM Copyright © 2000 by Steven Stepanek
10
1975 SIXTH EDITION (V6), PDP-11
1979 SEVENTH EDITION (V7), PDP-11
32V EDITION, VAX
1980's
AT&T UC BERKELEY
SYSTEM III 2.8, 2.9, 2.10
SYSTEM V 4.1, 4.2, 4.3, 4.4
V8, V9 ,V10
1988 IEEE 1003.1 POSIX STANDARD APPROVED
1990’s OPEN SOFTWARE FOUNDATION & X/OPEN
UNIX OPERATING SYSTEM Copyright © 2000 by Steven Stepanek
11
MOVEMENT TOWARDS A STANDARD
USERS AND INDUSTRY ARE WORKING ON STANDARDS
FOR A UNIX-LIKE PORTABLE OPERATING SYSTEM
ORGANIZATIONS INVOLVED:
IEEE UniForum
X/OPEN OSF
ANSI NIST (FIPS)
ISO others . . .
UNIX OPERATING SYSTEM Copyright © 2000 by Steven Stepanek
12
IEEE 1003 POSIX STANDARD
1003.0 GUIDE
1003.1 SYSTEM SERVICES, C BINDINGS
1003.2 SHELLS AND TOOLS
1003.3 COMPLIANCE TESTS
1003.4 REALTIME EXTENSIONS
1003.5 ADA LANG BINDINGS
1003.6 SECURITY
1003.7 SYSTEM ADMINISTRATION
1003.8 NETWORK FILE ACCESS
1003.9 FORTRAN LANG BINDINGS
1003.10 SUPERCOMPUTING
1003.11 TRANSACTION PROCESSING
1003.12 PROTOCOL INDEPENDENT IPC
1003.13 REALTIME APPLICATION ENVIR
1003.14 MULTIPROCESSING
1003.15 BATCH SERVICES
UNIX OPERATING SYSTEM Copyright © 2000 by Steven Stepanek
13
RELATIONSHIP BETWEEN C AND UNIX
• C WAS DESIGNED FOR UNIX
• C IS A HIGHER LEVEL "SYSTEM PROGRAMMING
LANGUAGE"
• C IS NOT A HIGH LEVEL PROGRAMMING
LANGUAGE LIKE ADA OR PASCAL; IT PERMITS
LOW LEVEL MANIPULATION OF DATA SIMILAR
TO ASSEMBLY LANGUAGES
UNIX OPERATING SYSTEM Copyright © 2000 by Steven Stepanek
14
• THE "HIGH LEVEL" STATEMENT STRUCTURES
IN C ARE DESIGNED TO ALLOW GENERATION
OF EFFICIENT MACHINE CODE
• CURRENT VERSIONS OF UNIX ARE DEPENDENT
ON C; OVER 90% OF THE SYSTEM IS WRITTEN
IN C
• THE POWER OF C LIES IN THE INTERFACE
LIBRARIES PROVIDED BY THE OPERATING
SYSTEM
UNIX OPERATING SYSTEM Copyright © 2000 by Steven Stepanek
15
COMMAND INTERPRETATION SHELLS
A COMMAND LINE INTERPRETER PLACED INTO
EXECUTION AFTER A SUCCESSFUL LOG ON
SHELL PROMPTS:
$ BOURNE OR KORN SHELL
% C SHELL
UNIX OPERATING SYSTEM Copyright © 2000 by Steven Stepanek
16
UC BERKELEY AT&T
STANDARD
sh BOURNE
SHELL
BERKELEY
C csh
SHELL
SYSTEM V
sh or
BOURNE
sh5
SHELL
KORN
ksh SHELL
UNIX OPERATING SYSTEM Copyright © 2000 by Steven Stepanek
17
COMMAND LINE STRUCTURE
SIMPLE COMMAND:
cmd parameter . . .
$ sort -r report
$ cal 2 2001
February 2001
S M Tu W Th F S
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28
UNIX OPERATING SYSTEM Copyright © 2000 by Steven Stepanek
18
MULTIPLE SIMPLE COMMANDS CAN BE PLACED ON
ONE LINE WITH SEMICOLONS USED TO SEPARATE
THEM
$ cal 2 2001 ; cal 2 2002
February 2001
S M Tu W Th F S
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28
February 2002
S M Tu W Th F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28
UNIX OPERATING SYSTEM Copyright © 2000 by Steven Stepanek
19
CORRECTING TYPING ERRORS
DELETING CHARACTERS: backspace delete
DELETING CURRENT LINE: control-u
PROCESS TERMINATION: control-c break
END OF FILE FROM TERMINAL: control-d
UNIX OPERATING SYSTEM Copyright © 2000 by Steven Stepanek
20
SOME USEFUL UTILITIES
• FILE LISTING
cat [file] . . .
more [file] . . . (BSD)
pg [file] . . . (SVID)
• FILE COPY
cp old new
• FILE RENAME
mv old new
UNIX OPERATING SYSTEM Copyright © 2000 by Steven Stepanek
21
• FILE REMOVAL
rm file . . .
• QUEUE FOR PRINTING
lpr [file] . . .
print [file] . . .
• DIRECTORY LISTING
ls
• MAIL A MESSAGE
mail [acctname] . . .
UNIX OPERATING SYSTEM Copyright © 2000 by Steven Stepanek
22
• LIST WHO IS LOGGED ON
who
sgs tty02 Feb 7 09:15
cxb tty04 Feb 7 08:59
• DISPLAY SYSTEM DATE, TIME
date
Thu Aug 3 19:38:06 PDT 2000
• CHANGE PASSWORD
passwd
UNIX OPERATING SYSTEM Copyright © 2000 by Steven Stepanek
23
• SET / DISPLAY TERMINAL
CHARACTERISTICS
stty [arg] . . .
$ stty
speed 1200 baud; evenp
intr = ^c; erase = ^?; kill = ^u;
brkint echo
$ stty -tabs erase '^H'
$ stty
speed 1200 baud; evenp
intr = ^c; erase = ^h; kill = ^u;
brkint tab3 echo
UNIX OPERATING SYSTEM Copyright © 2000 by Steven Stepanek
24
• ACCESS ON-LINE REFERENCE MANUAL
man [section] entry
man -k keyword
SECTIONS:
1. COMMANDS
2. SYSTEM FUNCTIONS
3. LIBRARY FUNCTIONS
4. FILE FORMATS (BSD 5)
5. MACROS (BSD 7)
6. GAMES
7. SPECIAL FILES (BSD 4)
8. MAINTENANCE
UNIX OPERATING SYSTEM Copyright © 2000 by Steven Stepanek
25
passwd(1)
NAME
passwd - change login password
SYNTAX
passwd [ name ]
DESCRIPTION
The passwd command changes or installs a password associated with the
user name (your own name by default).
The program prompts for the old password and then for the new one. The
caller must supply both. The new password must be typed twice, to
forestall mistakes.
New passwords must be at least four characters long if they use a
sufficiently rich alphabet and at least six characters long if monocase.
These rules are relaxed if you are insistent enough.
Only the owner of the name or the superuser may change a password; the
owner must prove he knows the old password.
RESTRICTION
The passwd command will not change your password if your login entry is
served by the yellow pages (YP) since the /etc/passwd file is referenced
and not the yp map. Refer to yppasswd(1yp) for more information.
FILES
/etc/passwd
SEE ALSO
login(1), yppasswd(1yp), crypt(3), passwd(4yp)
UNIX OPERATING SYSTEM Copyright © 2000 by Steven Stepanek
26
SHELL INPUT/OUTPUT REDIRECTION
stdout
stdin SCREEN
PROCESS
KEYBOARD SCREEN
stderr
cat try it
stdout
SCREEN
cat try it
SCREEN
stderr
cat try it > abc
stdout
FILE "abc"
cat try it
SCREEN
stderr
UNIX OPERATING SYSTEM Copyright © 2000 by Steven Stepanek
27
cat > data
stdout
stdin FILE: "data"
cat
KEYBOARD SCREEN
stderr
cat abc >> data
APPEND
stdout
TO: "data"
cat abc
SCREEN
stderr
cat < old > new
stdout
stdin FILE "new"
FILE: "old" cat
SCREEN
stderr
UNIX OPERATING SYSTEM Copyright © 2000 by Steven Stepanek
28
PIPES AND FILTERS
PIPES ARE A FORM OF INTER-PROCESS
COMMUNICATION
WITHOUT PIPES:
$ who
sgs tty02 Feb 7 09:15
cxb tty04 Feb 7 08:59
$ who > temp
$ sort temp
cxb tty04 Feb 7 08:59
sgs tty02 Feb 7 09:15
$ rm temp
UNIX OPERATING SYSTEM Copyright © 2000 by Steven Stepanek
29
WITH PIPES:
$ who | sort
cxb tty04 Feb 7 08:59
sgs tty02 Feb 7 09:15
stdout stdin stdout
SCREEN
who sort
SCREEN
stderr SCREEN stderr
UNIX OPERATING SYSTEM Copyright © 2000 by Steven Stepanek
30
A FILTER IS ANY UTILITY CAPABLE OF RECEIVING INPUT
FROM stdin AND GENERATING OUTPUT TO stdout
$ who | sort > users
$ who | sort | lpr
$ ls | sort -r | more
UNIX OPERATING SYSTEM Copyright © 2000 by Steven Stepanek
31
EXTENDED I/O REDIRECTION IN THE
BOURNE SHELL
2> file REDIRECT stderr TO file
2>&1 REDIRECT stderr TO CURRENT stdout
$ cat abc test > hold 2>&1
$ cat abc test 2>&1 | lpr
UNIX OPERATING SYSTEM Copyright © 2000 by Steven Stepanek
32
FOREGROUND / BACKGROUND
BOURNE SHELL:
$ who | sort > users &
2709 2710
$ ps
PID TTY TIME COMMAND
2709 05 0:00 who
2710 05 0:00 sort
2712 05 0:01 ps
$ kill 2709 2710
UNIX OPERATING SYSTEM Copyright © 2000 by Steven Stepanek
33
C SHELL:
% who | sort > users &
[1] 2728 2729
% jobs
[1] + Running who | sort > users
% jobs
[1] Done who | sort > users
% kill %1
UNIX OPERATING SYSTEM Copyright © 2000 by Steven Stepanek
34
FILE SYSTEM ORGANIZATION
HIERARCHICAL:
(acct log on directory)
proj1 proj2 proj3
bin src bin doc src
cat ls cat.c ls.c
UNIX OPERATING SYSTEM Copyright © 2000 by Steven Stepanek
35
FILE NAMING CONVENTIONS
RESTRICT LENGTH TO 14 CHARACTERS TO BE SAFE
CAN CONSIST OF ANY CHARACTERS
RECOMMEND CHOOSE FROM:
LOWER/UPPER CASE LETTERS
DIGITS
UNDERSCORE
PERIOD
COMMA
UNIX OPERATING SYSTEM Copyright © 2000 by Steven Stepanek
36
COMMON FILE NAME EXTENSIONS
.c C SOURCE
.f FORTRAN 77 SOURCE
.p PASCAL SOURCE
.s ASSEMBLY SOURCE
.h C HEADER FILE
.o UNLINKED OBJECT
UNIX OPERATING SYSTEM Copyright © 2000 by Steven Stepanek
37
HIDDEN FILES
ANY FILE NAME BEGINNING WITH A PERIOD IS
NORMALLY HIDDEN FROM ls
ls -a
WILL LIST ALL FILE NAMES IN THE DIRECTORY,
INCLUDING THE HIDDEN ONES:
. .login
. . .cshrc
.profile .logout
UNIX OPERATING SYSTEM Copyright © 2000 by Steven Stepanek
38
FILE TYPES
-, f PLAIN
b BLOCK DEVICE
c CHARACTER DEVICE
d DIRECTORY
l SYMBOLIC LINK
p NAMED PIPE
s SOCKET
UNIX OPERATING SYSTEM Copyright © 2000 by Steven Stepanek
39
$ ls -l
total 3
-rw-r----- 1 sgs 383 Apr 22 19:34 data
brw-r----- 1 root 9, 0 Apr 22 19:40 hp00
lrwxr-x--- 1 sgs 4 Apr 22 19:36 mesg -> data
prw-r----- 1 sgs 0 Apr 22 19:37 pipefile
srwxrwxrwx 1 root 0 Apr 22 19:08 printer
drwxr-x--- 2 sgs 32 Apr 22 19:35 subdir
crw-r----- 1 root 4, 1 Apr 22 19:40 tty01
UNIX OPERATING SYSTEM Copyright © 2000 by Steven Stepanek
40
FILE NAME WILDCARD CHARACTERS
* MATCH ZERO OR MORE CHARACTERS
(BUT NOT A LEADING PERIOD)
$ ls -a
. .. .profile abm bam bat
battle project
$ ls -l b*
-rw-r----- 1 sgs 16 Feb 12 11:04 bam
-rw-r----- 1 sgs 12 Feb 12 11:05 bat
-rw-r----- 1 sgs 19 Feb 12 11:06 battle
$ echo *
abm bam bat battle project
$ echo .*
. .. .profile
$ echo *m
abm bam
$ echo *a*
abm bam bat battle
UNIX OPERATING SYSTEM Copyright © 2000 by Steven Stepanek
41
$ echo *o*
project
$ ls -l *o*
total 12
-rw-r----- 1 sgs 31 Feb 12 11:15 doc
-rwxr-x--- 1 sgs 10189 Feb 12 11:12 p1
-rw-r----- 1 sgs 934 Feb 12 11:12 p1.c
$
UNIX OPERATING SYSTEM Copyright © 2000 by Steven Stepanek
42
? MATCH EXACTLY ONE CHARACTER
(BUT NOT A LEADING PERIOD)
$ ls -a
. .. .profile abm bam bat
battle project
$ echo ???
abm bam bat
$ echo ?a?
bam bat
$ echo ?a*
bam bat battle
$
UNIX OPERATING SYSTEM Copyright © 2000 by Steven Stepanek
43
[] MATCH ANY SINGLE CHARACTER IN THE
GROUP; RANGES CAN BE SPECIFIED BY
INSERTING A HYPHEN BETWEEN TWO
CHARACTERS
$ ls -a
. .. .profile abm bam bat
battle project
$ echo [ab]*
abm bam bat battle
$ ls -l [ab]m
ls: "[ab]m": No such file or directory
$ csh
% ls -l [ab]m
No match.
%
$ echo [ab][ab]m
abm bam
$ echo [a-zA-Z]*
abm bam bat battle project
UNIX OPERATING SYSTEM Copyright © 2000 by Steven Stepanek
44
FILE PATHS
(root)
bin dev etc tmp usr
cat ls users bin local tmp
(acct log on sgs cxb
directory)
proj1 proj2 proj3
bin src bin doc src
cat ls cat.c ls.c
UNIX OPERATING SYSTEM Copyright © 2000 by Steven Stepanek
45
• FULL (ABSOLUTE) PATHS
/bin/ls
/usr/users/sgs/proj3/src
• RELATIVE PATHS
FROM THE CURRENT DIRECTORY
LOG ON DIRECTORY IS INITIAL CURRENT
DIRECTORY
proj3/src
UNIX OPERATING SYSTEM Copyright © 2000 by Steven Stepanek
46
DIRECTORY ENTRIES . AND . .
(root)
bin dev etc tmp usr
cat ls users bin local tmp
(acct log on sgs cxb
directory)
proj1 proj2 proj3
bin src bin doc src
cat ls cat.c ls.c
UNIX OPERATING SYSTEM Copyright © 2000 by Steven Stepanek
47
EVERY DIRECTORY CONTAINS BOTH
. AND . . ENTRIES
. PROVIDES EVERY DIRECTORY WITH A
POINTER TO ITSELF
.. PROVIDES A POINTER TO THE DIRECTORY'S
PARENT
. . /cxb
. . / . . /tmp
. /proj3
UNIX OPERATING SYSTEM Copyright © 2000 by Steven Stepanek
48
DIRECTORY UTILITIES
• MAKE DIRECTORY
mkdir directory . . .
• REMOVE DIRECTORY
rmdir directory . . .
• CHANGE CURRENT WORKING DIRECTORY
cd [directory]
UNIX OPERATING SYSTEM Copyright © 2000 by Steven Stepanek
49
• DISPLAY PATH TO CURRENT WORKING
DIRECTORY
pwd
• DIRECTORY LISTING
ls [-adgilR] [file] . . .
UNIX OPERATING SYSTEM Copyright © 2000 by Steven Stepanek
50
$ ls
old proj
$ ls -l
total 2
-rw-rw---- 1 sgs 15 Aug 24 12:52 old
drwxrwx--- 2 sgs 48 Aug 24 12:53 proj
$ ls -l old
-rw-rw---- 1 sgs 15 Aug 24 12:52 old
$ ls -l proj
total 1
-rw-rw---- 1 sgs 58 Aug 24 12:53 it
$ ls -dl proj
drwxrwx--- 2 sgs 48 Aug 24 12:53 proj
$ ls -Rl
total 2
-rw-rw---- 1 sgs 15 Aug 24 12:52 old
drwxrwx--- 2 sgs 48 Aug 24 12:53 proj
proj:
total 1
-rw-rw---- 1 sgs 58 Aug 24 12:53 it
UNIX OPERATING SYSTEM Copyright © 2000 by Steven Stepanek
51
FILE UTILITIES
• REMOVE
rm [-ir] file . . .
• COPY
cp file1 file2
cp file . . . directory
• MOVE
mv file1 file2
mv file . . . directory
UNIX OPERATING SYSTEM Copyright © 2000 by Steven Stepanek
52
• LINK
ln [-s] file1 [file2]
ln file . . . directory
$ ls -Rl
total 2
-rw-rw---- 1 sgs 15 Aug 24 12:52 old
drwxrwx--- 2 sgs 48 Aug 24 12:53 proj
proj:
total 1
-rw-rw---- 1 sgs 58 Aug 24 12:53 it
$ ln old proj/data
UNIX OPERATING SYSTEM Copyright © 2000 by Steven Stepanek
53
$ ls -Rl
total 2
-rw-rw---- 2 sgs 15 Aug 24 12:52 old
drwxrwx--- 2 sgs 64 Aug 24 12:56 proj
proj:
total 2
-rw-rw---- 2 sgs 15 Aug 24 12:52 data
-rw-rw---- 1 sgs 58 Aug 24 12:53 it
$ ls -iRl
total 2
754 -rw-rw---- 2 sgs 15 Aug 24 12:52 old
7021 drwxrwx--- 2 sgs 64 Aug 24 12:56 proj
proj:
total 2
754 -rw-rw---- 2 sgs 15 Aug 24 12:52 data
7020 -rw-rw---- 1 sgs 58 Aug 24 12:53 it
$ rm proj/data
UNIX OPERATING SYSTEM Copyright © 2000 by Steven Stepanek
54
$ ln -s /usr/users/sgs/temp/old proj/data
$ ls -iRl
total 2
754 -rw-rw---- 1 sgs 15 Aug 24 12:52 old
7021 drwxrwx--- 2 sgs 64 Aug 24 12:59 proj
proj:
total 2
7019 lrwxrwx--- 1 sgs 23 Aug 24 12:59 data ->
/usr/users/sgs/temp/old
7020 -rw-rw---- 1 sgs 58 Aug 24 12:53 it
$ rm proj/data
UNIX OPERATING SYSTEM Copyright © 2000 by Steven Stepanek
55
• CHANGE FILE ACCESS PERMISSIONS
chmod mode file . . .
rwx| r-x | ---
user group other
MODE FIELD CONSISTS OF:
WHO OPERATION PERMISSION
u + r
g - w
o = x
a u
g
o
UNIX OPERATING SYSTEM Copyright © 2000 by Steven Stepanek
56
$ ls -l
total 2
-rw-rw---- 1 sgs 15 Aug 24 12:52 old
drwxrwx--- 2 sgs 64 Aug 24 13:00 proj
$ chmod o+r old
$ ls -l
total 2
-rw-rw-r-- 1 sgs 15 Aug 24 12:52 old
drwxrwx--- 2 sgs 64 Aug 24 13:00 proj
$ chmod g-w old
$ ls -l
total 2
-rw-r--r-- 1 sgs 15 Aug 24 12:52 old
drwxrwx--- 2 sgs 64 Aug 24 13:00 proj
$ chmod g-w,o=rx proj
$ ls -l
total 2
-rw-r--r-- 1 sgs 15 Aug 24 12:52 old
drwxr-xr-x 2 sgs 64 Aug 24 13:00 proj
UNIX OPERATING SYSTEM Copyright © 2000 by Steven Stepanek
57
• DEFAULT FILE PERMISSIONS
umask [modemask]
SET / DISPLAY CURRENT FILE CREATION
MODE MASK
SELECT PERMISSIONS TO DENY:
- - - | - w - | r w x
user group other
CREATE BIT MASK:
0 0 0 0 1 0 1 1 1
CONVERT MODE MASK TO OCTAL:
umask 027
UNIX OPERATING SYSTEM Copyright © 2000 by Steven Stepanek
58
COMMON EDITORS
• ed "STANDARD" UNIX LINE EDITOR
• sed STREAM ORIENTED VERSION OF ed
• vi SCREEN ORIENTED EDITOR (BASED ON
ex WHICH IS BASED ON ed)
ed file
vi file
cmd | sed . . . | cmd
UNIX OPERATING SYSTEM Copyright © 2000 by Steven Stepanek
59
ED
A BRIEF SUMMARY OF USEFUL COMMANDS:
LINE ADDRESSING
Before the first line 0
Last line $
Current line .
Forward Search /pattern /
Reverse Search ?pattern ?
Relative offset ±n
INSERT MODE (with default addressing)
Append characters after specified line .a
Insert characters before specified line .i
Change (replace) range of lines .,.c
Insert mode is terminated by typing a .<CR> at the beginning of a line
DELETING (with default addressing)
Delete range of lines .,.d
UNIX OPERATING SYSTEM Copyright © 2000 by Steven Stepanek
60
STRING SEARCHING (with default addressing)
Replace first occurrence in line .,.s/pattern /new /
Replace all occurrences in line .,.s/pattern /new /g
Replace next occurrence in file /pattern /s//new /
Apply cmd to all matching lines 1,$g/pattern /cmd
MISC COMMANDS (with default addressing)
Save file (does not cause exit from ed) 1,$w [file ]
Normal exit after save q
Abort exit (must issue command twice) q
Join range of lines together .,.+1j
Read (insert) contents of another file $r [file ]
Print line number after going to address $=
Print range of lines .,.p
UNIX OPERATING SYSTEM Copyright © 2000 by Steven Stepanek
61
VI
A BRIEF SUMMARY OF USEFUL COMMANDS:
CURSOR MOTION
h j k l
Forward a page control-F
Backward a page control-B
INSERT MODE (terminate by hitting the ESCAPE key)
Append characters after the cursor a
Insert characters before the cursor i
Open a new line above current line O (upper case)
Open a new line below current line o
Replace current characters R (upper case)
UNIX OPERATING SYSTEM Copyright © 2000 by Steven Stepanek
62
DELETING
Delete current line dd
Delete to end of current word dw
Delete current character x
Replace current character rnew character
STRING SEARCHING
Forward search /pattern
Backward search ?pattern
Repeat last search n
Repeat last search in opposite direction N
COMMAND MODE
Normal exit, save file ZZ(upper case)
Abort exit : q!
Join lines J (upper case)
Move curser to line n nG (upper case)
Undo previous command u
Accept ed, ex command :command
UNIX OPERATING SYSTEM Copyright © 2000 by Steven Stepanek
63
REGULAR EXPRESSIONS
STRING PATTERN MATCHING CHARACTERS
INTERPRETED BY VARIOUS UNIX UTILITIES:
ed, sed, vi, grep, awk, more, . . .
UNIX OPERATING SYSTEM Copyright © 2000 by Steven Stepanek
64
STANDARD REGULAR EXPRESSIONS:
c ANY NON-SPECIAL CHARACTER MATCHES
ITSELF
$ grep 'hello' file
LIST ALL LINES CONTAINING
THE STRING "hello"
\c QUOTE THE CHARACTER c , TURNING OFF
THE REGULAR EXPRESSION MEANING IT
WOULD OTHERWISE HAVE
$ grep '\$' file
LIST ALL LINES CONTAINING
THE CHARACTER "$"
UNIX OPERATING SYSTEM Copyright © 2000 by Steven Stepanek
65
^ AS THE FIRST CHARACTER OF AN
EXPRESSION, IT REQUIRES THE MATCH
START AT THE BEGINNING OF THE LINE
$ grep '^Hello' file
LIST ALL LINES THAT START
WITH THE STRING "Hello"
$ AS THE LAST CHARACTER OF AN
EXPRESSION, IT REQUIRES THE MATCH
TERMINATE AT THE END OF THE LINE
$ grep 'bye$' file
LIST ALL LINES THAT END
WITH THE STRING "bye"
UNIX OPERATING SYSTEM Copyright © 2000 by Steven Stepanek
66
. MATCH ANY SINGLE CHARACTER AT THIS
POSITION
$ sed 's/^.//' file
REMOVE FIRST CHARACTER
FROM EACH LINE
[] MATCH ANY SINGLE CHARACTER IN THE
GROUP; RANGES CAN BE SPECIFIED BY
INSERTING A HYPHEN BETWEEN TWO
CHARACTERS
$ sed '/[abc][0-9]/d' file
REMOVE ANY LINE CONTAINING
THE TWO CHARACTER SEQUENCE
CONSISTING OF 'a', 'b' OR 'c'
FOLLOWED BY A DIGIT
UNIX OPERATING SYSTEM Copyright © 2000 by Steven Stepanek
67
[^ ] MATCH ANY SINGLE CHARACTER NOT IN
THE GROUP; RANGES CAN BE SPECIFIED
BY INSERTING A HYPHEN BETWEEN TWO
CHARACTERS
$ grep '^[^0-9]' file
LIST ALL LINES THAT START
WITH A NON-DIGIT CHARACTER
r* MATCH ZERO OR MORE OCCURRENCES
OF r , WHERE r IS A CHARACTER, "." or "[ ]"
$ grep '^[0-9][0-9]*$' file
LIST ALL LINES THAT CONSIST
ONLY OF DIGITS
UNIX OPERATING SYSTEM Copyright © 2000 by Steven Stepanek
68
\(r \) TAG THE MATCH FROM THE REGULAR
EXPRESSION r FOR LATER USE; TAGGED
VALUES ARE STORED IN THEIR ORDER
OF ASSIGNMENT AND CAN BE ACCESSED
VIA REFERENCES TO TAG VARIABLES
\1, \2, . . . , \9
$ sed -n '/^\([A-Z]\).*\1$/p' file
LIST ALL LINES THAT START
AND END WITH THE SAME
UPPER CASE LETTER
UNIX OPERATING SYSTEM Copyright © 2000 by Steven Stepanek
69
ed COMMAND USAGE:
/re / FORWARD SEARCH FOR LINE
MATCHING re
?re ? REVERSE SEARCH FOR LINE
MATCHING re
s/re /str /g FOR THE CURRENT LINE,
REPLACE ALL MATCHES OF re
WITH str ; str CAN REFERENCE
VALUES TAGGED BY re
/re /s//str /g FIND THE NEXT LINE CONTAINING
A MATCH OF re AND REPLACE ALL
MATCHES OF re WITH str
g/re /p PRINT EVERY LINE CONTAINING
A MATCH OF re
UNIX OPERATING SYSTEM Copyright © 2000 by Steven Stepanek
70
sed UTILITY USAGE:
... | sed '/^[ ]*$/d' | ...
REMOVE EMPTY LINES
... | sed 's/\(...\)\(.*\)/\2\1/' | ...
MOVE THE FIRST THREE
CHARACTERS OF EACH LINE
FROM THE FRONT TO THE
REAR OF THE LINE
sed -n '/^\([A-Z]\).*\1$/p' file
PRINT ONLY THOSE LINES THAT
START AND END WITH THE SAME
UPPER CASE CHARACTER
UNIX OPERATING SYSTEM Copyright © 2000 by Steven Stepanek
71
grep UTILITY USAGE:
... | grep '^Smith' | ...
LET PASS ONLY THOSE LINES
THAT START WITH "Smith"
grep '^[0-9][0-9]*$' file
PRINT ONLY THOSE LINES THAT
CONTAIN DIGITS
UNIX OPERATING SYSTEM Copyright © 2000 by Steven Stepanek
72
more UTILITY USAGE:
AT THE "--more--" PROMPT, YOU CAN TYPE:
/re TO SCAN FORWARD UNTIL
NEXT OCCURRENCE OF A
MATCH WITH re
UNIX OPERATING SYSTEM Copyright © 2000 by Steven Stepanek
73
EXTENDED REGULAR EXPRESSIONS:
egrep AND awk CANNOT HANDLE TAGGED REGULAR
EXPRESSIONS, BUT COMPENSATE BY OFFERING
THE FOLLOWING EXTENSIONS
r+ MATCH ONE OR MORE OCCURRENCES OF
THE REGULAR EXPRESSION r
r? MATCH ZERO OR ONE OCCURRENCES OF
THE REGULAR EXPRESSION r
r 1 | r 2 MATCH r 1 OR r 2
(r ) NESTED EXPRESSION r
UNIX OPERATING SYSTEM Copyright © 2000 by Steven Stepanek
74
SUMMARY TABLE OF EXPRESSION CHARACTERS IN
DECREASING ORDER OF PRECEDENCE:
c non-special character
\c quoted character
^ beginning of line
$ end of line
. any single character
[] any one character from group
[^ ] any one character not in group
\n n 'th tagged value 1
r* zero or more occurrences
r+ one or more occurrences 2
r? zero or one occurrences 2
r 1r 2 r 1 followed by r 2
r 1|r 2 r 1 or r 2 2
\(r \) tag the value matched 1
(r ) nesting 2
1 not egrep or awk
2 egrep and awk only
UNIX OPERATING SYSTEM Copyright © 2000 by Steven Stepanek
75