0% found this document useful (0 votes)
28 views75 pages

Unix Os Fundamentals

Uploaded by

vcosmin
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
28 views75 pages

Unix Os Fundamentals

Uploaded by

vcosmin
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 75

UNIX ® OPERATING SYSTEM

FUNDAMENTALS

STEVEN STEPANEK
CALIF STATE UNIV, NORTHRIDGE
COMPUTER SCIENCE DEPARTMENT
NORTHRIDGE, CA 91330

[email protected]
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

You might also like