Why UNIX?
In the 1980s, UNIX became popular
Customer demand for open systems:
Application portability
Vendor independence
User portability
Time to market considerations
Major vendors (such as Sun, DEC, HP, IBM)
implemented UNIX based product lines.
Brief History
UNIX
Linux
Created at Bell Labs, 1969
BSD during mid 70s
AT&T began offering System II in early 80s
defined in 1991
Red Hat, 1995
http://www.computerhope.com/history/unix.htm
UNIX Philosophy
Simplicity
Reusability
Filters
Open Formats
Flexibility
What is the shell?
Utility program loaded when a user logs in
startup
init
getty
sh (bash)
login
Shell’s Responsibilities
interpreted
programming
languages
Program
Execution
variable and
filename
substitution
Shell
I/O
Redirection
environment
control
pipeline
hookup
Shell Substitutions
Certain characters are interpreted by the
various Unix shells as “wildcards” for
filenames, also known as metacharacters
* - mathes 0 or more of any character
ls *.c
? - matches any single character
ls file0?.c
[...] - matches any single character if it is in
the list provided
ls file[0-9].c
Regular Expressions
A formalized way to specify strings
File names (shell commands)
Strings in text files (during editing)
Compilers (future topic)
Sed
Unfortunately, each use defines its own
special metacharacters
Regular Expressions
LS – which files match A*[0-9]?.c
AboutTime.c
AboutTime
A2.c
A2i.c
A211x.c
AllFilesGreaterThan12.c
A2char.c
Regular Expressions
Write a regular expressions for:
All files with an ‘X’ in the name
All files with an ‘X’ and a following ‘Y’
All file names with exactly 6 characters
All file names with more than 6 characters
All files that start with ‘a’ and end with ‘x’
All files names including an ‘a’ but fewer than
10 characters (this one is TOUGH!)
The Manual
The man command
man gcc
Spacebar for next page and return for next
line
q to quit
Also try info
info gcc
grep Commands
grep, egrep, fgrep
grep format:
grep [options] search_string filename(s)
Options:
-c
-l
-n
-v
Prints the count of matching lines rather than
the actual lines
prints the name of each file containing matching
lines, rather than the actual lines
precedes each line with a line number
inverse search, shows all lines that do not
match pattern
sort Command
sort format:
sort [options] filename
Options:
-d
alphabetic, ignore punctuation
-f
ignore case for sorting
-r
reverse sort order
-o outfile output to file, not stdout
-n
arithmetic order
-tc
use ‘c’ to separate fields; default is
whitespace
find Command
find format:
find directory_name search_criteria action
Search Criteria:
name filename
files that match filename
atime +-n files last accessed in days
mtime +-n files last modified in days
follow
follow symbolic links
find Command
Actions:
-print
-exec cmd
-ok cmd
print the files found
execute command on files found
like exec, but prompts to execute
command first