csci 330 unix and network programming unit iv shell, part 2
TRANSCRIPT
![Page 1: CSCI 330 UNIX and Network Programming Unit IV Shell, Part 2](https://reader035.vdocuments.net/reader035/viewer/2022081417/5697bfd31a28abf838cac057/html5/thumbnails/1.jpg)
CSCI 330UNIX and Network Programming
Unit IV
Shell, Part 2
![Page 2: CSCI 330 UNIX and Network Programming Unit IV Shell, Part 2](https://reader035.vdocuments.net/reader035/viewer/2022081417/5697bfd31a28abf838cac057/html5/thumbnails/2.jpg)
2
more bash shell basics• Wildcards• Regular expressions• Quoting & escaping
CSCI 330 - UNIX and Network Programming
![Page 3: CSCI 330 UNIX and Network Programming Unit IV Shell, Part 2](https://reader035.vdocuments.net/reader035/viewer/2022081417/5697bfd31a28abf838cac057/html5/thumbnails/3.jpg)
Command Line Behavior• Special characters have special meaning:
$ variable reference
= assignment
! event number
; command sequence
` command substitution
> < | i/o redirect
& background
* ? [ ] { } • wildcards• regular expressions
‘ “ \• quoting & escaping
3CSCI 330 - UNIX and Network Programming
![Page 4: CSCI 330 UNIX and Network Programming Unit IV Shell, Part 2](https://reader035.vdocuments.net/reader035/viewer/2022081417/5697bfd31a28abf838cac057/html5/thumbnails/4.jpg)
Wildcards: * ? [ ] { }A pattern of special characters used to match file names on the command line
* zero or more characters
Ex: % rm * % ls *.txt % wc -l assign1.* % cp a*.txt docs
? exactly one character
% ls assign?.cc % wc assign?.?? % rm junk.???
4CSCI 330 - UNIX and Network Programming
![Page 5: CSCI 330 UNIX and Network Programming Unit IV Shell, Part 2](https://reader035.vdocuments.net/reader035/viewer/2022081417/5697bfd31a28abf838cac057/html5/thumbnails/5.jpg)
Wildcards: [ ] { }[...] matches any of the enclosed characters
[a-z] matches any character in the range a to z• if the first character after the [ is a ! or ^
then any character that is not enclosed is matched• within [], [:class:] matches any character from a specific class:
alnum, alpha, blank, digit, lower, upper, punct
{ word1,word2,word3,...} matches any entire word
5CSCI 330 - UNIX and Network Programming
![Page 6: CSCI 330 UNIX and Network Programming Unit IV Shell, Part 2](https://reader035.vdocuments.net/reader035/viewer/2022081417/5697bfd31a28abf838cac057/html5/thumbnails/6.jpg)
Wildcards: [ ] { } examples% wc –l assign[123].cc% ls csci[2-6]30% cp [A-Z]* dir2% rm *[!cehg]% echo [[:upper:]]*% cp {*.doc,*.pdf} ~
6CSCI 330 - UNIX and Network Programming
![Page 7: CSCI 330 UNIX and Network Programming Unit IV Shell, Part 2](https://reader035.vdocuments.net/reader035/viewer/2022081417/5697bfd31a28abf838cac057/html5/thumbnails/7.jpg)
7
Regular Expression• A pattern of special characters to match strings in a search
• Typically made up from special characters called meta-characters: . * + ? [ ] { } ( )
• Regular expressions are used throughout UNIX:• utilities: grep, awk, sed, ...
• 2 types of regular expressions: basic vs. extended
CSCI 330 - UNIX and Network Programming
![Page 8: CSCI 330 UNIX and Network Programming Unit IV Shell, Part 2](https://reader035.vdocuments.net/reader035/viewer/2022081417/5697bfd31a28abf838cac057/html5/thumbnails/8.jpg)
8
Metacharacters. Any one character, except new line
[a-z] Any one of the enclosed characters (e.g. a-z)
* Zero or more of preceding character
? also: \? Zero or one of the preceding characters
+ also: \+ One or more of the preceding characters
^ or $ Beginning or end of line
\< or \> Beginning or end of word
( ) also: \( \) Groups matched characters to be used later (max = 9)
| also: \| Alternate
x\{m,n\} Repetition of character x between m and m times
CSCI 330 - UNIX and Network Programming
![Page 9: CSCI 330 UNIX and Network Programming Unit IV Shell, Part 2](https://reader035.vdocuments.net/reader035/viewer/2022081417/5697bfd31a28abf838cac057/html5/thumbnails/9.jpg)
Basic vs. Extended • Extended regular expressions use these meta-characters:
? + { } | ( )
• Basic regular expressions use these meta-characters:
\? \+ \{ \} \| \( \)
9CSCI 330 - UNIX and Network Programming
![Page 10: CSCI 330 UNIX and Network Programming Unit IV Shell, Part 2](https://reader035.vdocuments.net/reader035/viewer/2022081417/5697bfd31a28abf838cac057/html5/thumbnails/10.jpg)
10
The grep Utility• searches for text in file(s)
Syntax:
grep "search-text" file(s)• search-text is a basic regular expression
egrep "search-text" file(s)• search-text is an extended regular expression
CSCI 330 - UNIX and Network Programming
![Page 11: CSCI 330 UNIX and Network Programming Unit IV Shell, Part 2](https://reader035.vdocuments.net/reader035/viewer/2022081417/5697bfd31a28abf838cac057/html5/thumbnails/11.jpg)
11
The grep UtilityExamples:
% grep "root" /var/log/auth.log
% grep "r..t" /var/log/syslog
% grep "bo*t" /var/log/boot.log
% grep "error" /var/log/*.log
Caveat:
watch out for shell wild cards if not using “”
CSCI 330 - UNIX and Network Programming
![Page 12: CSCI 330 UNIX and Network Programming Unit IV Shell, Part 2](https://reader035.vdocuments.net/reader035/viewer/2022081417/5697bfd31a28abf838cac057/html5/thumbnails/12.jpg)
12
Regular Expression
• consists of atoms and operators
• an atom specifies what text is to be matched and
where it is to be found
• an operator combines regular expression atoms
CSCI 330 - UNIX and Network Programming
![Page 13: CSCI 330 UNIX and Network Programming Unit IV Shell, Part 2](https://reader035.vdocuments.net/reader035/viewer/2022081417/5697bfd31a28abf838cac057/html5/thumbnails/13.jpg)
13
Atoms
any character (not a meta-character) matches itself
. matches any single character
[...] matches any of the enclosed characters
^ $ \< \> anchor: beginning or end of line or word
\1 \2 \3 ... back reference
CSCI 330 - UNIX and Network Programming
![Page 14: CSCI 330 UNIX and Network Programming Unit IV Shell, Part 2](https://reader035.vdocuments.net/reader035/viewer/2022081417/5697bfd31a28abf838cac057/html5/thumbnails/14.jpg)
14
Example: [...]
CSCI 330 - UNIX and Network Programming
![Page 15: CSCI 330 UNIX and Network Programming Unit IV Shell, Part 2](https://reader035.vdocuments.net/reader035/viewer/2022081417/5697bfd31a28abf838cac057/html5/thumbnails/15.jpg)
15
short-hand classes[:alpha:]
• letters of the alphabet
[:alnum:]• letters and digits
[:upper:] [:lower:]• upper/lower case letters
[:digit:]• digits
[:space:]• white space
[:punct:]• punctuation marks
CSCI 330 - UNIX and Network Programming
![Page 16: CSCI 330 UNIX and Network Programming Unit IV Shell, Part 2](https://reader035.vdocuments.net/reader035/viewer/2022081417/5697bfd31a28abf838cac057/html5/thumbnails/16.jpg)
16
Anchors
• Anchors tell where the next character in the pattern must be located in the text data
CSCI 330 - UNIX and Network Programming
![Page 17: CSCI 330 UNIX and Network Programming Unit IV Shell, Part 2](https://reader035.vdocuments.net/reader035/viewer/2022081417/5697bfd31a28abf838cac057/html5/thumbnails/17.jpg)
17
Back References: \n• used to retrieve saved text in one of nine buffers
ex.: \1 \2 \3 ...\9
• buffer defined via group operator ( )
CSCI 330 - UNIX and Network Programming
![Page 18: CSCI 330 UNIX and Network Programming Unit IV Shell, Part 2](https://reader035.vdocuments.net/reader035/viewer/2022081417/5697bfd31a28abf838cac057/html5/thumbnails/18.jpg)
18
Operators sequence
| alternate
{n,m} repetition
( ) group & save
CSCI 330 - UNIX and Network Programming
![Page 19: CSCI 330 UNIX and Network Programming Unit IV Shell, Part 2](https://reader035.vdocuments.net/reader035/viewer/2022081417/5697bfd31a28abf838cac057/html5/thumbnails/19.jpg)
19
Sequence Operator
• In a sequence operator, if a series of atoms are shown in a regular expression, there is no operator between them
CSCI 330 - UNIX and Network Programming
![Page 20: CSCI 330 UNIX and Network Programming Unit IV Shell, Part 2](https://reader035.vdocuments.net/reader035/viewer/2022081417/5697bfd31a28abf838cac057/html5/thumbnails/20.jpg)
20
Alternation Operator: | or \|
• searches for one or more alternatives
Note: grep uses | with backslash
CSCI 330 - UNIX and Network Programming
![Page 21: CSCI 330 UNIX and Network Programming Unit IV Shell, Part 2](https://reader035.vdocuments.net/reader035/viewer/2022081417/5697bfd31a28abf838cac057/html5/thumbnails/21.jpg)
21
Repetition Operator: \{…\}
• The repetition operator specifies that the atom or expression immediately before the repetition may be repeated
CSCI 330 - UNIX and Network Programming
![Page 22: CSCI 330 UNIX and Network Programming Unit IV Shell, Part 2](https://reader035.vdocuments.net/reader035/viewer/2022081417/5697bfd31a28abf838cac057/html5/thumbnails/22.jpg)
22
Basic Repetition Forms
CSCI 330 - UNIX and Network Programming
![Page 23: CSCI 330 UNIX and Network Programming Unit IV Shell, Part 2](https://reader035.vdocuments.net/reader035/viewer/2022081417/5697bfd31a28abf838cac057/html5/thumbnails/23.jpg)
23
Short Form Repetition Operators
CSCI 330 - UNIX and Network Programming
![Page 24: CSCI 330 UNIX and Network Programming Unit IV Shell, Part 2](https://reader035.vdocuments.net/reader035/viewer/2022081417/5697bfd31a28abf838cac057/html5/thumbnails/24.jpg)
24
Group Operator: ( ) or \( \)
• when a sequence of atoms is enclosed in parentheses, the next operator applies to the whole group, not only the previous characters
• groups define numbered buffers, can be recalled via back reference: \1, \2, \3, ...
CSCI 330 - UNIX and Network Programming
![Page 25: CSCI 330 UNIX and Network Programming Unit IV Shell, Part 2](https://reader035.vdocuments.net/reader035/viewer/2022081417/5697bfd31a28abf838cac057/html5/thumbnails/25.jpg)
25
Summary: Regular Expressions. Any one character, except new line
[a-z] Any one of the enclosed characters (e.g. a-z)
* Zero or more of preceding character
? also: \? Zero or one of the preceding characters
+ also: \+ One or more of the preceding characters
^ or $ Beginning or end of line
\< or \> Beginning or end of word
( ) also: \( \) Groups matched characters to be used later (max = 9)
| also: \| Alternate
x\{m,n\} Repetition of character x between m and m times
CSCI 330 - UNIX and Network Programming
![Page 26: CSCI 330 UNIX and Network Programming Unit IV Shell, Part 2](https://reader035.vdocuments.net/reader035/viewer/2022081417/5697bfd31a28abf838cac057/html5/thumbnails/26.jpg)
26
Quoting & Escaping• allows to distinguish between the literal value of a symbol
and the symbols used as meta-characters
• done via the following symbols:• Backslash (\)• Single quote (‘)• Double quote (“)
CSCI 330 - UNIX and Network Programming
![Page 27: CSCI 330 UNIX and Network Programming Unit IV Shell, Part 2](https://reader035.vdocuments.net/reader035/viewer/2022081417/5697bfd31a28abf838cac057/html5/thumbnails/27.jpg)
27
Backslash (\)• also called the escape character• preserve the character immediately following it
• For example:
to create a file named “tools>”, enter:
% touch tools\>
CSCI 330 - UNIX and Network Programming
![Page 28: CSCI 330 UNIX and Network Programming Unit IV Shell, Part 2](https://reader035.vdocuments.net/reader035/viewer/2022081417/5697bfd31a28abf838cac057/html5/thumbnails/28.jpg)
28
Single Quote (')• protects the literal meaning of meta-characters
• protects all characters within the single quotes
• exception: it cannot protect itself
Examples:% echo 'Joe said "Have fun *@!"'Joe said "Have fun *@!" % echo 'Joe said 'Have fun''Joe said Have fun
CSCI 330 - UNIX and Network Programming
![Page 29: CSCI 330 UNIX and Network Programming Unit IV Shell, Part 2](https://reader035.vdocuments.net/reader035/viewer/2022081417/5697bfd31a28abf838cac057/html5/thumbnails/29.jpg)
29
Double Quote (")• protects all symbols and characters within the double
quotes, expect for:$ (dollar sign) ! (event number)
` (back quote) \ (backslash)
Examples:% echo "I've gone fishing"I've gone fishing% echo "your home directory is $HOME"your home directory is /home/student
CSCI 330 - UNIX and Network Programming
![Page 30: CSCI 330 UNIX and Network Programming Unit IV Shell, Part 2](https://reader035.vdocuments.net/reader035/viewer/2022081417/5697bfd31a28abf838cac057/html5/thumbnails/30.jpg)
30
QuotingExamples:% echo "Hello Ray []^?+*{}<>"Hello Ray []^?+*{}<>% echo "Hello $USER"Hello student% echo "It is now `date`"It is now Mon Feb 25 10:24:08 CST 2012% echo "you owe me \$500"you owe me $500
CSCI 330 - UNIX and Network Programming
![Page 31: CSCI 330 UNIX and Network Programming Unit IV Shell, Part 2](https://reader035.vdocuments.net/reader035/viewer/2022081417/5697bfd31a28abf838cac057/html5/thumbnails/31.jpg)
31
Summary• wildcards• regular expressions
• grep
• quoting
CSCI 330 - UNIX and Network Programming