Professional Documents
Culture Documents
setuid
chownchgrp
umask
()
1)
2)
3) shell
1)
2)
3)
1.1
i
ls -l
shell
total 4232
- r w x r- x r- x 9
9 9
rwx
r-x
r-x
rwx
1
root
root root(root)
3578 K
Oct 14 04:44
dmesg
1.2
ls -l
d
l ( )
s
b
c
p
-
1.3
touch
$ touch myfile
ls -l
(
)
rw-
r--
admin
1-1 ls -l
( )
1)
2) ( )
3)
r
w /
x
myfile
-
rw-
r--
r--
myfile
umask
(1-2)
1-2
r-- --- --r-- r-- --r-- r-- r-rwx r-- r-rwx r-x ---
( )
shell
()
1.4
( ) c h m o d
1.4.1
chmod
chmod [who] operator [permission] filename
who
u
g
o
a ( )
operator
+
-
=
permission
r
w
x
s set-ID
t *
l
u,g,o
* tt
t
t (
) t
1.4.2 chmod
c h m o d m y f i l e r w x
rwx rwx
rw- rw- rwrw- r-- r-rw- rw- r-rwx rw- r-rwx rwx r-x
myfile
( )
m y f i l e a d m i n
$ chmod u+x dt
1.4.3
chmod
chmod [mode] file
mode
1-3
1-3 /
0400
0200
0100
0040
0020
0010
0004
0002
0001
1 - 3
1-37
shell
644
0400+0200( )
=0600
0040()
=0040
0004()
=0004
0644
1-4
1-4
r w x
4+2+1
r w x
4+2+1
r w x
4+2+1
1 - 4
myfile
r w -
r - -
4+2
r - 4
644
1.4.4 chmod
chmod
chmod 666
chmod 644
chmod 744
chmod 664
chmod 700
chmod 444
rw- rw- rwrw- r-- r-rwx r-- r-rw- rw- r-rwx --- --r-- r-- r--
yoa
admin
chmod 644*
-R
chmod -R 664 /usr/local/home/dave/*
/usr/local/home/dave
- R
1.4.5
1.5
chmod
1-51-6
1-5
r
1-6
- - x
docs
pay
admin
a d m i n
1.6 suid/guid
s u i dg u i d
shell
suid shell
g u i d
1.6.1 suid/guid
g u i d
$ ls -l | grep '^...s'
suid
$ ls -l | grep '^...s..s'
suidguid
suid
suid 4 guid
24+2
s x s u i dg u i d
guid
l o g i ns u i d rwx rw- r-- (741)
c h m o d 4chmod 4741 r w s
rw- r --
$ chmod 4741 logit
1.6.2 suid/guid
1-7 suid/guid
chmod 4755
chmod 6711
chmod 4764
s u i d
s u i dg u i d
s u i d
1.7 chownchgrp
/ e t c / p a s s w d
I D s u i d
chown
chmod -R -h owner file
- R - h
1.7.1 chown
pauline adminsybadmin
1.7.3
10
shell
id
1.7.4
mattysybadminappsgenpost
1.8 umask
u m a s k
c h m o d u m a s k
umask
shellumask
u m a s k / e t c / p r o f i l e
umask
umask $HOME.profile.bash_profile
1.8.1 umask
u m a s k (
) u m a s k 6
c h m o d
umask 7
umask nnn
nnnumask000-777
umask
u m a s k u m a s k
1-8 umask
u m a s k /
umask
umask002 664775
u m a s k u m a s k
11
1-8 umask
umask
0
1
2
3
4
5
6
7
6
6
4
4
2
2
0
0
7
6
5
4
3
2
1
0
umask002
777( )
umask 002
umask002
1)
2) umask002
- - - - - - -w-
3)
4)
umask022
1)
2) umask022
- - - -w- -w-
3)
4)
1.8.2 umask
1-9 umask
1-9 umask
umask
022
027
002
006
007
755
750
775
771
770
umask umask
644
640
664
660
660
12
shell
umaskumask
$ umask 002
umask
u m a s k /
u m a s k 6 0 0 /
066
1.9
1.9.1
/ u s r / l o c a l / a d m i n / s a l e s
$ H O M E
$ H O M E
$ H O M E
/usr/opt/app/log
1.9.2
4 0
$ H O M E
. p r o f i l e / u s r / l o c a l / m e n u s / p r o f i l e s a l e s . p r o f i l e
admin.profile
$HOME sales.profile
$ H O M E a d m i n . p r o f i l e
t a rg e t _ p a t h l n
13
matty
( )
profile 40
/usr/opt/
m o n i t o r / r e g s t a r / v a r / a d m / l o g s
$ ln -s /usr/opt/monitor/regstar/reg.log /var/adm/logs/monitor.log
/var /tmp
/ v a r / t m p( )
l n/ v a r
/tmp
/var
1.10
chmod -R
suid
suid
2 findxargs
(
)
F i n d
find
find
findx a rg s
find
( N F S )f i n d
find
(30G )
Find
find pathname -options [-print -exec -ok]
pathname find . /
-print find
-exec
find s h e l l ' c o m m -
and' {} \;{}\
-ok -exec shell
2.1 find
f i n d -
-name
-perm
-prune find -depth
-prunefind
-user
-group
-mtime -n +n -n n+n
nFind-atime-ctime -mtime
2 findxargs
15
-mtime
-nogroup /etc/groups
-nouser /etc/passwd
-newer file1 ! file2 file1 file2
-type
b -
d -
c -
p -
l -
f -
-size n[c] n c
-depth
-fstype
/etc/fstab
-mount mount
-follow find
-cpio cpio
2.1.1 name
f i n d
$ H O M E * . t x t
~'pathname~ $HOME
$ find ~ -name "*.txt" -print
*.txt
$ find . -name "*.txt" -print
/etc host
$ find /etc -name "host*" -print
$HOME
$ f i n d ~ - n a m e " * " - p r if
nt ind . -print
* . t x t
ax37.txt
16
shell
2.1.2 perm
- p e r m
7 5 5
f i n d - p e r m - - p e r m
007chmod
$ find . -perm -007 -print
2.1.3
- p r u n e - p r u n e
-depth -prune find
/apps /apps/bin
$ find /apps -name "/apps/bin" -prune -o -print
2.1.4 usernouser
$ H O M E
dave
$ find ~ -user dave -print
/etc uucp
$ find /etc -user uucp -print
- n o u s e r
/etc/passwd -nouser find
/home
$ find /home -nouser -print
2.1.5 groupnogroup
u s e rn o u s e r f i n d
/apps accts
$ find /apps -group accts -print
n o g r o u p f i n d
$ fine/-nogroup-print
2 findxargs
17
2.1.6
mtime
m t i m e
- n + n
5
$ find / -mtime -5 -print
/var/adm 3
$ find /var/adm -mtime +3 -print
2.1.7
- n e w e r
newest_file_name ! oldest_file_name
find
t o u c h
2 3 : 4 0
21:40
f i n d- n e w e r
2.1.8 type
UNIXLINUX
18
shell
/etc
$ find /etc -type d -print
/etc
$ find /etc -type l -print
2.1.9 size
b l o c k
N c
1M
$ find . -size +1000000c -print
/home/apache 100
$ find /home/apache -size 100c -print
10 512
$ find . -size +10 -print
2.1.10 depth
f i n d d e p t h
find find
f i n d C O N . F I L E
2.1.11 mount
f i n d m o u n t
XC
$ find . -name "*.XC" -mount -print
2.1.12 cpio
c p i o f i n d
cpio
c p i o / e t c/ h o m e/ a p p s
19
2 findxargs
\shell \
/
/ e t c / e t c
f i n d / e t c / h o m e/ a p p s
cpio
cpio C65536 B
5 1 2 C 6 5 5 3 6
6 4 K
65536/1024
2.1.13 execokshell
- e x e c
f i n d - e x e c
- e x e c l sls -l
r m l s
e x e c { } \
e x e c p r i n t f i n d
ls -l ls -l find-exec
find -execls -l
/logs 5
$ find logs -type f -mtime +5 -exec rm {} \;
shell
mvrm -exec
f i n d . L O G
5
y n
-exec grepfind
20
shell
p a s s w d * p a s s w dp a s s w d . o l dp a s s w d . b a k
grep rounder
2.1.14 find
find find
$HOME
$ find $HOME -print
$ find ~ -print
suid
0
$ find / -type f -size 0 -exec ls -l {} \;
/var/logs 7
$ find /var/logs -type f -mtime +7 -exec rm {} \;
audit
$find /-name -group audit -print
A d m i n . l o g
a d m i n . l o g . 0 0 1a d m i n . l o g . 0 0 2 f i n d / l o g s 7
a d m i n . l o g
999
$ f i n d / l o g s - n a m e ' a d m i n . l o g [ 0 - 9 ] [ 0 - 9 ]'[
-0
at9
i]
me +7 -exec rm {} \;
rmt
$ find /dev/rmt -print
2.2 xargs
f i n d- e x e c f i n d
e x e c e x e c f i n d
x a rg s f i n d F i n d x a rg s
x a rg s - e x e c
- e x e c
2 findxargs
21
x a rg s x a rg s
xargsfind
x a rg s
( c o r e d u m p )
/tmp/core.log
$ find . -name "core" -print | xargs echo "" >/tmp/core.log
/ a p p s / a u d i t
grep device
$ find / -type f -print | xargs grep "device"
grep DBO
$ f i n d . - n a m e \ type f -print | xargs grep "DBO"
\find*shell
2.3
f i n d e x e c
x a rg s
crontab
at
nohup
cron
At at
&
Nohup
3.1 croncrontab
c r o n
c r o n t a b c r o n t a b
s h e l l
c r o n t a b
cron.denycron.allow crontab
3.1.1 crontab
c r o n t a b
159
1230
131
112
060
23
crontab
<><><><><>
<>
C r o n t a b
-
1 - 5,
1 , 4 *
* 5
#
3.1.2 crontab
crontab
30 21* * * /apps/bin/cleanup.sh
21:30/apps/bincleanup.sh
45 4 1,10,22 * * /apps/bin/backup.sh
110224:45/apps/binbackup.sh
10 1 * * 6,0 /bin/find -name "core" -exec rm {} \;
1:10find
0,30 18-23 * * * /apps/bin/dbcheck.sh
18:0023:0030/apps/bindbcheck.sh
0 23 * * 6 /apps/bin/qtrend.sh
11:00pm/apps/binqtrend.sh
c r o n t a bs h e l l
c r o n
cron cron
s h e l l
cron
3.1.3 crontab
crontab
Crontab [-u user] -e -l -r
-u
-e crontab
-l crontab
-r crontab
- u c r o n t a b
24
shell
3.1.4 crontab
c r o n c r o n t a b
E D I TO Rc r o n c r o n t a b 9 9 %U N I XL I N U X
v i $ H O M E . p r o f i l e
5
1 5
tty1
crontab cron
$ crontab davecron
cron 15
/var/spool/cron
dave
3.1.5 crontab
crontab
$ H O M E c r o n t a b
crontab
3.1.6 crontab
crontab EDITOR vi
vicrontab
$ crontab -e
v i c r o n t a b
25
c r o n
crontab
c r o n t a b
crontab -l
3.1.7 crontab
crontab
$ crontab -r
3.1.8 crontab
c r o n t a b $ H O M E
/var/spool/cron/<username><username>
$ crontab <filename>
<filename>$HOME
$ H O M E
crontab re
crontab
c r o n t a b c r o n t a b
crontab delete
<Ctrl-D> crontab
3.2 at
a t c r o n
10min
crontab
a t c r o n t a b
c r o n t a b / e t c a t . a l l o wa t . d e n y
26
shell
at at crontab
at
at [-f script] [-m -l -r] [time] [date]
-f script
-l atq
-r
I D U N I X
atrm
-m
time
at HH H . H H M MH H : M MH : MHM
a.m.p.m.
date
at todaytomorrow
3.2.1 at
at at
at shell
at / at
<CTRL-D>
/at
27
at shell -f
db_table.sh 3:00
echoat
$ echo find /etc -name "passwd" -print | at now +1 minute
3.2.2
at -l
/ aa t
a t q a t
/var/spool/at
3.2.3
a t r m [ j o b n o ]a t - r [ j o b n o ]
at -l
at -r
3.3 &
28
shell
&
&
find shell
out.file
3.3.1
f i n d s r m . c o n f
find.dt
27015
p s 1
3.3.2 ps
ps1 psgrep
ps x
ps
3.3.3
k i l l s h e l l
29
kill
kill -signal [process_number]
( )
kill
nohup
3.4 nohup
3.4.1 nohup
n o h u p
nohup.out
nohup command > myout.file 2>&1
myout.file
ps1
shell
ps x ps -ef|grep ps1
3.4.2
s h e l l n o h u p
30
shell
qtr.out
3.5
C r o n
S h e l l
*
[...] [ ]
[!...] [ ]
s h e l l
4.1 *
* app*
app
* *.doc .doc
* c l * . s e d c l
.sed
c d
32
shell
4.2
c o n f . l o g
f ? ? * s f
s
4.3 [...][!...]
[...] [ ] -
io
l o g .
log.[0-9]*[0-9] *
[ ! 0 - 9 ] * !
LPS1
33
LPS
$ ls [A-Z]*
$ ls [a-z]*
$ ls [0-9]*
. .profile.rhosts.history
$ ls .*
4.4
5 shell
shell
shell
5.1 echo
echo
echo string
echo
\c
\f
\t
\n
e c h o
$ H O M E t t y(
)
LINUX......
- necho
5 shell
35
()
-e
echo \n
echo \
LINUX...
- e
>
myfile
$ echo "The log files have all been done"> myfile
myfile
s h e l l e c h o
\s h e l l
echo/dev/rmt0 \
$ echo "\"/dev/rmt0"\"
"/dev/rmt0"
5.2 read
read
36
shell
r e a d
s h e l l
Shell
shell read
LINUX......
-n
5 shell
37
5.3 cat
c a t
c a t
m o r e c a t
$ cat myfile | pg
cat
cat [options] filename1 ... filename2 ...
cat
-v
myfile
$ cat myfile
myfile1myfile2myfile3
$ cat myfile1 myfile2 myfile3
bigfile
c a t
c a t
<CTRL-D>
c a t D O Sf t p
<CTRL-M>
c a t
38
shell
<CTRL-D>
5.4
|
1 |2
|
s h e l l
grep quarter1.doc
5-1
Is
5-1
sedawkgrep who
awk
d f a w k
a w k a w k g r e p
filesystem
/ d e v /
sed
5 shell
39
$ sort myfile | lp
5.5 tee
t e e T
tee -a files
-a
tee
w h o w h o . o u t
5-2
who.out
screen
who
$ who
5-2 tee
t a p e . l o g
t e e - a
\s h e l l
e c h o
40
shell
-a
5.6
s h e l l
shell
0
1
2
12 012
39
5.6.1
0
5.6.2
1
5.6.3
2
5.7
5 shell
41
5-1
5-1
5-1
command > filename
()
()
()
c o m m a n d f i l e n a m e f i l e n a m e 2
commandfilename
delimiter
command <&m
command >&m
command <&-
5.7.1
/ e t c / p a s s w d I D
sort.out sort
( ) s o r t
1>sort.out
5-1
$ cat passwd | awk -F: '{print $1}' | sort
>sort.out
account file.out
> f i l e n a m e l s
ls.out
$ ls >ls.out
( )
>>filename
0 '>filename'
$ >myfile
42
shell
5.7.2
awk
$ sort
< name.txt
s o r t
$ sort name.txt
s o r t n a m e . o u t
( )
$ sort
<name.txt >name.out
louise contents.txt
$ mail louise < contents.txt
5.7.3
2
grep missilestrident
g r e p
/dev/null( )
$ grep "trident" missiles 2>/dev/null
/dev/null
grep.err
5 shell
43
g r e p > >
( )
5.8
( ) accounts.out
$ cat account_qtr.doc account_end.doc 1>accounts.out 2>accounts.err
accounts.err
a c c o u n t _ e n d . d o c
5.9
s h e l l
c l e a n u p c l e a n u p . o u t
g r e p g r e p . o u t
2>&1
c a t
44
shell
( i s q l
s y b a s e )f t p
5.10 exec
exec shell shell
shell
exec command
command shell
exec shell
e x e c
. p r o f i l e
shell exec
e x e c
s h e l l
5.11
e x e c
4 49 s t o c k . t x t
4 s t o c k . t x t
4 line1line2
stock.txt
cp
5 shell
45
5.12
s h e l l
(39)
&&|| shell
Shell shellshell {}
6.1 &&
&&
1 & & 2
& & 1 (0
& & 2 & &
&&
/apps/bin /apps/dev/bin
/apps/bin
q u a r t e r _ e n d . t x t q u a r t e r. s o r t e d
quarter.sorted
$ sort quarter_end.txt > quarter.sorted && lp quarter.sorted
6.2 ||
||
1 | | 2
47
| | | | 1 | |
2 ||
||
||
1 5
m o n t h _ e n d . t x t c o m e t
shell shell
$ comet month_end.txt || exit
6.3 { }
s h e l l s h e l l
shell
s h e l l
1;2;...
{ } s h e l l s h e l l
{ } s h e l l
shell
{1;2;...}
&&||
c o m e t
s h e l l
exit
&&
$ sort quarter_end.txt > quarter.sorted && lp quarter.sorted
s o r t
48
shell
6.4
s h e l l & &| |
&&||
7
UNIXLINUX
s h e l l
s h e l l
RE
AAx x
grepsed {\\}
awk
7-1
^
$
*
[]
\
.
pattern\{n\}
pattern\{n\}m
pattern\{nm\}
*0
[ ] [] [1-5][12345]
s h e l l
\
pattern n
n
pattern nm
50
7.1
. beg
beg.n.
ls -l
...x..x..x
1 0 4 X C
. . . .X C. . . .
456XC4
ASCII
7.2 ^
^ ls -l
ls -l d
1^001 001
^...4XC....
51
3 4 X C 4 ^
41
^...1
4comp
^comp
4 c o m p i n g
^comp..ing
7.3 $
$^ $
trouble
trouble$
1d$ 1d
^$
^.$
jet01
jet01$
7.4 *
compu*t
10133*
52
7.5 \
\.
^
\^
*.pas
\*\.pas
7.6 []
[]
- - -
[]
[0123456789]
-
[0-9]
[a-z]
[A-Za-z]
A-Za-z
[A-Za-z0-9]
[ ] s
t
s[a-z A-Z]t
53
s[a-z]t
Computercomputer
[Cc]omputer
Scoutshoutbought
[ou] .*t
ou t
system S
[ S,s]ystem\.
[ ] *[ ] [ A - Z a - Z ] *
[A-Za-z]*
^
[^a-zA-Z]
[^0-9]
7.7 \{\}
* \ { \ }
pattern\{n\} n
pattern\{n,\} n
pattern\{n,m} nmn,m0-255
A B
A\{2\}B
AAB
A4
A\{4,\}B
AAAABAAAAAAAB AAAB
A24
A\{2,4\}B
AABAAABAAAABABAAAAAB
4 xx4
54
[ 0 - 9 ] \ { 4 \ }X X[ 0 - 9 ] \ { 4 \ }
1) 4
2) xx
3) 4
7-2
7-2
^
^[the]
the
[Ss]igna[lL]
s i g n a l s i g n a L
SignalSignaL
[Ss]igna[lL]\.
[mayMAY]
m a y
^USER$
USER
[tty]$
tty
\.
^d..x..x..x
^[^l]
[.*0]
[000*]
000
[iI]
[iI][nN]
in
[^$]
[^.*$]
^......$
[a- zA-Z]
[a-z][a-z]*
[^0-9\$]
[^0-0A-Za-z]
[123]
13
[Dd]evice
deviceDevice
De..ce
D e
ce
55
\^q
^q
^.$
^\.[0-9][0-9]
'"Device"'
device
De[Vv]ice\.
Devicedevice
[0-9]\{2\}-[0-9]\{2\}-[0-9]\{4\}
[0-9]\{3\}\.[0-9]\{3\}\.[0-9]\{3\}\.[0-9]\{3\}
[^.*$]
dd-mm-yyyy
IPnnn. nnn.nnn.nnn
7.8
s h e l l
grep,sedawk
8 grep
g r e pU N I XL I N U X g r e p
grep grep
grep
Grepgrep
E g r e p g r e p \ q
F g r e pg r e p f a s t g r e p
grep
grep
grep grep
g r e p GNU grep
g r e p g r e pf g r e p
egrepgrep
<Tab>g r e p
data..f
data.f
1
2
3
4
5
6
7
8 grep
57
8.1 grep
grep
grep [] []
8.1.1
g r e pm y s t r i n g
s h e l l
jet plane p l a n e
g r e p$MYVAR
8.1.2 grep
grep
-c
-i
-h
-l
-n
-s
-v
8.1.3
.doc sort
$ grep "sort"*.doc
sort it
$ grep "sort it" *
grep
8.1.4
$ grep -c "48"data.f
$4
grep4 4 48
48 4
58
8.1.5
48
8.1.6
48
8.1.7
4 8 4 8 44 8 3
48 48
<Tab>
<Tab>tab
g r e p \ > 4 8
8.1.8
g r e p - i
d a t a . f S e p t
8.2 grep
g r e p s h e l l
8 grep
59
8.2.1
484483 []
4834 484483
8.2.2
48 ^
8.2.3
- i S e p t [ ]
Septsept
S e p t 4 8 3
| |
grep grep
8.2.4
L D 5
8.2.5
51 9 9 61 9 9 8
5 . . 1 9 9 [ 6 , 8 ] 5 1 9 9 6
8
60
1 9 9 8 [ 0 - 9 ] \ { 3 \ } [ 8 ]
38
8.2.6
[]
05 06
8.2.7
4
4
9999
9
26
8263
8 grep
61
8.2.8 grep
g r e p - E 2 1 9
216
8.2.9
^$ -n
8.2.10
$ . ' " * [] ^ | \ + ? ,\.
conftroll.conf
8.2.11
filename.deposit
8.2.12 IP
D N S I P
I P2 0 0 0 n n n . n n n
nnn.nn.. nnn.nnn IP [0-9]\{3\}\.[0-0\{3\}\
3 3
62
8.3
grep
8-1
[[:upper:]]
[[:lower:]]
[[:digit:]]
[A-Z]
[a-z]
[0-9]
[[:alnum:]]
[[:space:]]
[[:alpha:]]
[0-9a-zA-Z]
tab
[a-zA-Z]
PD
*
grep*
grep
device
8.4 grep
g r e p
8 grep
63
|
8.4.1
8.4.2 passwd
/etc/passwdlouise
grep'No such file or directory'
grep-s
grep -s
2 > $ 1
/dev/null
grepexit
grep
/tmppasswd.out
8.4.3 ps
ps x g r e p ps x
DNS named
g r e p g r e p ps x g r e p
-v psgrep
64
ps x ps -ef
8.4.4 grep
g r e p e c h o g r e p
8.5 egrep
e g r e pe x p r e s s i o nextended grep e g r e p e g r e p
e g r e p
-f grepstrings 48447
d a t a . f4 8 44 7 - f
32L2CC| |
| l o u i s em a t t ypauline
who egrep
^ m a t t yp a u l i n e
s h u t d o w ns h u t d o w n sr e b o o tr e b o o t se g r e p
8 grep
65
8.6
g r e p U N I X
D O S g r e p
g r e ps h e l l U N I X
9 AWK
awk
awkshell
a w k Bailing out
awk:cmd.Line: awk shellawk
awk awk grepsed shell
a w k a w k a w k
awk
awk
awk
a w k s e dg r e p
awk
a w k A h o . We n i n b e rg e rK e r n i g h a m n a w kg a w k
a w k a w k
awk
9.1 awk
awk
commandsawk
[ - F ] a w k
p a s s w d
-F
a w k a w k a w k
awk
9 AWK
67
- f a w k _ s c r i p t _ f i l ea w k i n p u t _ f i l e ( s ) a w k
9.2 awk
awkawk
- F a w k
-Fawk
awk
9 - 1a w k # n
a w k
9-1 awk
1
P.Bunny(1)
J.Troll(2)
#
#
2
02/99
07/99
#
#
48
4842
#
#
Yellow \n
Brown-3 \n
9.2.1
a w k a w k
B E G I N
E N DB E G I N B E G I N
E N D a w k
awk
{} if
looping awk
9.2.2
a w k $ 1$ 2 . . . $ n
$ 1 , $ 3 13 5
$ 1 , $ 2 , $ 3 , $ 4 , $ 5 $ 0 Aw k
$shell$
print awk
68
1.
g r a d e . t x t
712345
67
-F
2. awk
s h e l l a w k >
wow
t e e
d e l e t e _ m e _ a n d _ d i e
awk | tee delete_me_and_die
3.
awk
awk
4.
awk {print $0}()
9 AWK
69
5.
f i e l d - 1f i e l d - 4
$1$4
6.
t a b
t a b t a b \ t
n a m eb e l t \ n
\ n B E G I N
awk
7.
end of report ENDEND
E N D
8. awk
a w k a w k
awk
70
awk
awk
awk
awk
9. awk
grade.txt
9.2.3 awk
g r e p
awk
G r e e n/ G r e e n /
Green
9.2.4
a w k 7
\ ^ $ . [] | () * + ?
7 awk grepsed
+
/XY?Z/XYZYZ
9.2.5
9-2awk
9 AWK
71
9-2 awk
<
<=
==
!=
>=
~
!~
1.
i f a w k
if
g r a d e . t x t b r o w n f i e l d - 4
{if($4~/brown/) print } f i e l d - 4b r o w n
{}
a w k i f
brown
2.
4 8 4 8
field-3 48awk 48
4 8 = = $ 3 = =4 8 4 8
3.
~ !~
b r o w n $0 !~/brown/
brown
awk
72
field-4
4.
f i e l d - 6
field-7
5.
6.
7.
[] []
green /[Gg]reen/
8.
a . / ^ . . . a /
a
9.
yellowbrown | |
9 AWK
73
YellowBrown
Greengreen []
10.
48 ^
awk 7 7
awk
&& AND :
|| OR
!
11. AND
P. B u n n y Ye l l o w ( $ 1 = = " P. B u n n y " & &
$4=="Yellow")&&
12. Or
Ye l l o wB r o w n | |
9.2.6 awk
a w k 9 - 3
9-3 awk
ARGC
ARGV
ENVIRON
FILENAME
FNR
FS
awk
-F
74
()
NF
NR
OFS
ORS
RS
A R G C a w k A R G VA R G C
ARGV[n]n
E N V I R O N
ENVIRON[EDITOR]=Vi
F I L E N A M Ea w k a w k
F N R a w k N R
FSawk -F
FS=""
NF
OFS #OFS="#"
ORS \n
RS (\n)
9.2.7 NFNRFILENAME
awk
N R
N R
print NREND
N F
END
B r o w n A N D
Brown
9 AWK
75
NF $PWDawk
/
9.2.8 awk
awk
= += *= / = %= ^ =
|| && !
~ ~
!
< <= == != >>
+ - * / % ^
+ + --
1.
a w k
n a m e = $ nn a m e n
n a m e b e l t n a m e = $ 1 ; b e l t s = $ 4 a w k
n a m e b e l t s Ye l l o w
2.
1) BEGIN
2)
BEGIN awk
27
2727
76
BASELINEBEGIN
3.
awk
awkawkNRNF
$1=$1+5 15
M . Ta n s l e y 4 03 9 $ 6 = $ 6 - 1
4.
J . Tr o l l
J . L . Tr o l l $ 1 = " J . L . Tr o l l " " "
5.
1 0 0
6.
awk
{$4=$2+$3} 3
4 23
g r a d e . t x t 8
{ $ 8 = $ 7 - $ 6 }
BEGINtab
9 AWK
77
7.
+ =
$ 1 t o t a l t o t a l + = $ 1
awk
t o t + = $ 6t o ta w k
6 E N D 6 a w k
8.
ls -l awkawk d
END
ls -l d
5 9
d ^[^d]
tot
78
9.2.9
awk 9-4
9-4 awk
gsub(r,s)
gsub(r,s,t)
index(s,t)
length(s)
match(s,r)
split(s,a,fs)
sprint(fmt,exp)
sub(r,s)
substr(s,p)
substr(s,p,n)
$0sr
tsr
st
s
s r
fssa
fmt exp
$0 s
sp
sp n
g s u b s e d
$ 0 g s u b
$0
indexst s tlength s
m a t c h s r s p l i t f s
s as p r i n tp r i n t f f m t
e x ps u brs s $ 0 r
subspsp substrspn n
awk
1. gsub
/ /
/ 48424899
2. index
st
Bunnyny
3. length
J . Tr o l l
9 AWK
79
4. match
m a t c h
0 A N C D d
0 ANCDD ANCDD
J.Luluu
5. split
s p l i t
- AD2 - K P 9 - J U 2 - L P - 1 s p l i t
( " A D 2 - K P 9 - J U 2 - L P - 1 "p a r t s _ a r r a y" - "s p l i t
4
splitmyarray myarray
6. sub
s u b S T Rpoped popo pill
s u bs u b/ o p /" o p "S T R o p
pOPed pope pill
J.Troll
2 9 2 4 s u b/ 2 6 /" 2 9 "$ 0
24J.Troll
7. substr
substr
1 5
80
a w k L Ta n s l - e y
3 7 99awk
s u b s t r
1
B E G I N E N D t
8. shellawk
awk
a w k a w k
stand-byawk
awk
awk
9.2.10
\ n
\n
{ } / \ { /a w k
9-5awk
9-5 awk
\b
\f
\n
\r
\t
\ddd
\c
tab
\\
9 AWK
81
\104DASCII\141aASCII
9.2.11 awkprintf
t a b a w k
printf
p r i n t f %
printf printf[ ]
9.2.12 printf
9-6 awk printf
Width
.prec
00
ASCII
123.44
awk ef
1.
A S C I I6 5 6 5a w kp r i n t fA S C I I
printf
awk
9 9 9
2.
82
1 5 \ n
p r i n t
printf
3. awk
awk awk
awk awk
awk =
awk
A G E1 0 a w k 1 0
awk
df -k a w k 4 $ 4 ~ / ^ [ 0 - 9 ] /
1 0 2 4 d f i f ( $ 4 < T R I G G E R ) T R I G G E R
df -k
df
a w k w h o w h o
a w k L O G N A M E
who awk
9 AWK
83
root
root you are connected to ttyp1
4. awk
awk
a w k
awk
awk tot+=$6 END{print "club student total points"tot} grade.txt
s t u d e n t _ t o t . a w k a w k a w k
awk
/bin/awk -f
awk
84
E R R O R *
awk
awk
awk
awk
5. awkFS
FS#
FS
9 AWK
85
a w k F S B E G I N a w k
F S / e t c / p a s s w d 1 5;
passwd 1 5
6. awk
awkawk
awk script_file var=value input_file
NFMAX
/etc/passwdpasswd7
awk
86
awkdu
du awk
9.2.13 awk
split
splitmyarray myarray
1 2 3 # 4 5 6 # 6 7 8 s p l i t
/dev/null
9 AWK
87
split
1) YellowOrangeRed
2)
2 0 6 0
awk
awk
88
B E G I N F S # Ye l l o wO r a n g eR e d
B E G I N B E G I N
color 1
YellowOrangeRed
S e n i o r _ o r _ j u n i o r 2 j u n i o r
senior
END
\ a w k
9.3
awk
a w k a w k a w ks h e l l
shell awk
10
sed
s e d
s e d
Vi s e d s e d
s e d
sed
s e d s e da w k
s e d s e d
sed
s e d
sed sed
g r e pa w k s e d
grepawk
10.1 sed
s e d
10.2 sed
s e d s e d s e ds e d
sed
sed
sed [] sed
sed sed
sed
sed []
-f
sed
sedsed
90
s e d []
s h e l l s e d
sed
n sedp
c sed
f s e d s e d s e d
sed -f myscript.sed input_filemyscript.sedsed
10.2.1 sed
s e d m y o u t f i l e
10.2.2 sed
sed
1)
2) 7
10-1sed
10-1 sed
x
x,y
/pattern/
/pattern/pattern/
pattern/,x
x,/pattern/
x,y!
x 1
xy25 25
/disk//[a-z]/
/disk/disks/
/ribbon/,3
3./vdu/
xy1,2!
10.2.3 sed
10-2Sed
10-2 sed
p
=
a\
i\
d
c\
10 sed
91
()
s
r
w
q
l
{}
n
g
y
n
ASCII
2/pattern n/
sed quote.txt
10.3 sed
s e d
\ 7 7
sed
10.4 sed
sed
10.4.1 print
print [address[address]P sed
- n
10.4.2
13
92
10.4.3
Neave /pattern//Neave/
10.4.4
s e d
quote.txt
thesedthe
l i n e _ n u m b e r, / p a t t e r n /
4 , / t h e / t h e
10.4.5
$ \ /\$/ p
10.4.6
1,$$
10.4.7
0 i n g / . * i n g /
ing
10.4.8
10 sed
93
10.4.9
$$
10.4.10
= /pattern/=
-e
s e d e
= sed -n -e /pattern/p -e /pattern/=
10.4.11
a\
s e d
s e d
s e d
sed
s e d
a\ seda\
s e d
sed
s e d s h e l l
sed
94
10.4.12 sed
append.sed
a\sed
10.4.13
10 sed
95
10.4.14
The honeysuckle band played all night long for only $90The office Dibble
band played well / H o n e y s u c k l e /s e d
change.sed
96
10.4.15
sed
[ a ddress[address]]d
1d
Neave
10.4.16
[ a ddress[a d d r e s s ] ] s / p a t t e r n - t o - f i n d / r e p l a c e m e n t - p a t t e r n / [ g p w n ]
s s e d p a t t e r n - t o - f i n d r e p l a c e m e n t - p a t t e r n
g g
p
s e d p - n - n
10 sed
97
n i g h tN I G H T n i g h t N I G H T
$ 9 0 $
replacement-pattern sed
g T h e
Wow
w s p l e n d i d S P L E N D I D
sed.out
sed
10.5
& &
&
seds/nurse/"Hello"&/p
The honeysuckle band played all night long for only $90
10.6 sed
> s e d
98
[ a ddress[a d d r e s s ] ] w f i l e n a m e
w sed filename
quote.txt 12filedt
Neave filedht
10.7
s e d
address r filename
rsed filename
sedex.txt
10.8
sed
address q
/ . a . * / a 0
qsed
10 sed
99
10.9
cat -v filename
cat filenamecat-v
sed
[ a d dress[address]]l
l
l
1$
cat
sed
s e d \ 0 3 3 O PF 1
t e r m i n f ot e r m c a p
F1vi
vi
<Ctrl> <v> a^
F1[OP]
<ESC>F1
10.10 sed
sed sed
10.10.1
sed
dos.txt
100
1) ##
2) 000
3) ^M
^ @^ L
dos.txt
1 #
#
2 0^ ^0* 0
s/^0*//g
3 ^ M
s/^m//g^M
^ M F 1 sed s/
< C t r l >v v ^ < C t r l >
<return> ^M
s e d
c a t s e d s e d
sed
10 sed
101
sed sed
10.10.2
sql
1) s/-*//g------
2) /^$/d
3) $d
4) 1d
5) awk {print $1}
cat sed
10.10.3
U N HU N D
UNHUND
[ 0 - 9 ]
102
10.10.4
passed
$
10.10.5 shellsed
sed
10.10.6 sedshell
s e d s h e l l
NEW-NAME sed
10.11
[] [ ]tab
s/\.$//g
-e /abcd/d
s/[][][]*/[]/g
s/^[][]*//g
s/\.[][]*/[]/g
/^$/d
s/^.//g
s/COL\(...\)//g
s/^\///g
s/[]/[]//g
S/^[]//g
s/[]*//g
abcd
COL
\
tab
tab
tab
s h e l l
10 sed
103
1. \
sed\
2. /
"Mr Willis" sedMr"Bruce"
3.
sedaccounts.doc
4.
sedaccounts.doc
5.
sed.docaccounts
6.
x
sed
10.12
sed sed
sed sed
s e d
11
P I C KU N I X P I C K
P I C K
sort
uniq
join
cut
paste
split
11.1 sort
s o r t
s o r t U N I X
11.1.1
U N I X / L I N U Xs o r t s o r t
sort
sort
s o r t s o r t
sort
sort uniqjoincutpastesplit
sort
11.1.2 sort
sort
sort -cmu -o output_file [other options] +pos1 +pos2 input_files
sort
-c
-m
-u
-o sort
11
105
-b
-n
-t tab
-r
+n n
n n +n
post1 mnmn 465 7
11.1.3
-o results.out
11.1.4 sort
s o r t - t
s o r t - t
01 sort
v i d e o . t x t1
234 -t
11.1.5 sort
s o r t 01 s o r t
sort 0 01 1
11.1.6
30 400 sort-c
106
sort
11.1.7 sort
sortsort filename 0 sort
sort
11.1.8 sort
sort -r sort
0
11.1.9
2 1 t 1
1 1 23
11.1.10
t3
11
107
-n
- n 3
2 t2
3
The Hill sort 3
-n
A l i e n s - r A l i e n s
11.1.11
- u
Alien Alien
-u sort
108
11.1.12 ksort
s o r t k 1 1
1 s o r t
k
1 -k4
11.1.13 k
4 1 -k4 -k1
11.1.14 sort
- n s o r t
02 3
11.1.15 pos
field_number characters_in
11
109
+ 1 . 2 1 3
11.1.16 headtail
s o r t
4- k 4 s o r t
head head -1
tailhead 1
2 tail -1 s o r t t a i l
headtail head
Tail
headtail 10
20
7
11.1.17 awksort
s o r t a w k
s o r t a w k
110
11.1.18
-m +o video.sort
+o
11.2 sort
s o r t / e t c / p a s s w d 1
awkawk
sort df df
- b 4+ 4
I P I P
I P
11
111
I P 3
11.3 uniq
uniq uniq
u n i qs o r t
s o r t u n i q
uniq
u n i q May Day 4
May Day uniq
-u
-d
-c
-f n n
-f -n
myfile.txt uniq
112
-c May Day
1.
-d
2.
- n - 5 5 1
1 2 - n 2 2
uniq
1 uniq OP
-f
11.4 join
j o i n S Q L j o i n
j o i n f i l e 1f i l e 2
join
t a b
join 20 20DBMS
join
11
113
an n n - a 1
-a2
o n.m n m 1 . 3 1 nm
1.32.1
j n m n m
t tab -t
name.txt
town.txt
M . G o l l s 12 Hidd Rd
0 join
join
1.
j o i n
-a
P. H e l l e r
2.
- o j o i n
1.12.2
114
-jn m 132
p e r s I D p e r s 2 I D
pers4 pers22
join 4join
5 awk $ awk '{print $4}'
11.5 cut
c u t
cut
cut [options] file1 file2
-c list
-f field
-d tab
-c
-c15-7 1 57
-c1-50 50
-f -c
-f 15 15
-f110-12 11012
pers'pers'
11
115
11.5.1
-d -d 3
-f3ID
11.5.2
cut 13 ID
/etc/passwd 13
-c
cut
ls -l -c
ls -l cut -c1-10
116
11.6 paste
c u t p a s t e
p a s t e p a s t e t a b
-d
paste
paste -d -s -file1 file2
-d tab @-d@
-s
- ls -l |paste
paste
11.6.1
11.6.2
tab -d
-s
ID
11
117
11.6.3 paste
p a s t e - -
4
11.7 split
split
vi sort
split
split -output_file-size input-filename output-filename
o u t p u t - f i l e - s i z e s p l i t o u t p u t - f i l e - s i z e
1000 2800 3
10001000800 x[aa]x[zz]x [aa][zz]
bigone.txt2800split
output-file-size 6
118
6s p l i t
11.8
s o r tj o i ns p l i t
u n i qc u tp a s t e
12 tr
12.1 tr
t r t r
tr 12
tr 1 2
tr
t r - c - d - s [ " s t r i n g 1 _ t o _ t r a n s l a t e _ f r o m " ] [ " s t r i n g 2 _ t o _ t riannpsulta_t e _ t o " ]
file
-c 1 ASCII
-d 1
-s
Input-file
12.1.1
tr
12
[a-z]
a-z
[A-Z] A-Z
[0-9]
/octal ASCII
[O*n] O n[O*2]OO
tr [class]
c n t r l 1 2 - 1
[ ]
[\ 0 1 2]\ 0 1 2t r
tr
120
\{
12-1 tr
\a
\b
\f
\n
\r
\t
\v
Ctrl-G
Ctrl-H
Ctrl-L
Ctrl-J
Ctrl-M
Ctrl-I tab
Ctrl-X
\007
\010
\014
\012
\015
\011
\030
12.1.2
r e s u l t s . t x t
cops.txt
12.1.3
vi
-s [a-z]
tr
cat tr
12.1.4
plane.txt
12
tr
121
-s \012
\n
12.1.5
t r [ a - z ]
[A-Z]
tr
[lower][upper]
file-to-translate new-file-name
12.1.6
file-to-translate new-file-name
12.1.7
-c-s
122
[ a - z ][ A - Z ] 1
-s -c tr
12.1.8
tr dosUNIX ftp
c a t
-v
^^^^^^tabCtrl-M Ctrl-Z
- s A S C I I^ 1 3 6^ M0 1 5t a b0 11^ Z0 3 2 ,
tab^^^^^^"\136""[\011*]" stat.tmp
^M\n^Z stat.tmp
12.1.9
^M
12
tr
123
DosUNIX
^M^Z
tab
p a s s w d t a b
tab 011passwd tr
tab
12.1.10
[ c h a r a c t e r * n ]
0
0
0[0*4]
40
12.2
t r s e d
trtr
13
/ e t c / p a s s w d
/etc/passwd
$HOME.profile
$HOME.profile
/etc/passwd
7
1 2 5 6
7 shell/bin/sh Bourne Shell
P a s s w d p a s s w d
/ e t c / p r o f i l e . p r o f i l e
profile
13.1 /etc/profile
/etcprofile
PATH
126
PAT H
/etc/profile
13
127
profile
QUIT <Ctrl-c>
L O G N A M E m a n M A N PAT H
man
vt220
umask
<Ctrl-C>QUIT
stty
128
/var/adm/messages
ulimit
idnkpsalomdave
profile
13.2 $HOME.profile
/ e t c / p r o f i l e $ H O M E p a s s w d
$HOME2
. p r o f i l e s h e l l
/etc/profile .profile
shell
. p r o f i l e p r o f i l e
.profile uset /etc/profile
.profile .profile
E D I TO R c r o n
TERM vt100vt220
b i n p a t h b i n
PAT H
pwd
A S C I I
251 169
13
129
LINUX
echo
/usr/admin
ADMIN=/usr/adm
whowc
.profile .profile/etc/profile
./pathname/filename
.profile
$. .profile
$. ./profile
.profile
13.3 stty
stty stty stty -a
130
s t t y
^? <Ctrl-H> stty
^H
$ stty erase '\^H'
. p r o f i l e s t t y ' C o n t r o l
H'vi
CtrlVV H
stty
intr
echo
-echo
eof
kill
start
stop
^C
^D
^Y
^Q
^S
echo
echo
stty
stty -g
s t t y s t t y
/ e t c / p r o f i l e stty -g
stty
stty
s t t y stty -g e c h o s t t y
LINUX
LINUX echo -eecho -e
13
131
s t t y s t t y
13.4 .logout
Bourne shellshell .logout exit
t r a p t r a pBourne shell
.logout .profile
trap "$HOME /.logout"0
.logout
. l o g o u t s h e l l 0
shell shell .profiletrap
.logout
13.5
. p r o f i l e
14 shell
s h e l l s h e l l s h e l l
shell
4
shell
shell
14.1 shell
EDITOR
E D I TO R c r o n
E D I TO R
EDITOR
vi
-S DSQUERY
D S Q U E RY - S D S Q U E RY
14.2
s h e l l f i l e - n a m e
l o o p . d o c s h e l l s h e l l
shell
14-1
s h e l l
14 shell
133
$ variable-name=valu
e ${variable-name=value}
s h e l l
14-1
Variable-name=value
Variable-name+value
Variable-name:?value
Variable-name?value
Variable-name:=value
Variable-name:-value
variable-name
variable-name
variable-name
variable-name
variable-name
variable-name
14.2.1
echo $
LOGNAME error-msg
s h e l l $ L O G N A M E
14.2.2
unset
unset variable-name
14.2.3 shell
set shell
134
s e t s h e l l
14.2.4
14.2.5
${variable:-value}
c o l o u rb l u ee c h o c o l o u r
${variable:=value}
0 3 : 0 0We e k l y
at
14 shell
135
file
${variable:+value}
variable=""
$DETINATION=""
14.2.6
sourcepasswddestcp
device mt
14.2.7
variable-name=value
readonly variable-name
136
readonly
14.3
s h e l l
s h e l l
. p r o f i l e
/ e t c / p r o f i l e p r o f i l e
e x p o r t
14.3.1
V A RIABLE-NAME=valuee x p o r t V A R I A B L E - N A M E
VARIABLE-NAME=value
Export VARIABLE-NAME
14.3.2
env
14 shell
137
14.3.3
unset
14.3.4 shell
Brourne shell
/etc/profile shell
1. CDPATH
cdCDPATH
c d C D PAT H C D PAT H
$ C D P A T H = : / h o m e / d a v e / b i n : / u s r / l o c a l e
/ a pxppso r t C D P A T H .
$ cd apps
cd CDPATH apps
2. EXINIT
E X I N I T v i v i
10 tab
$ EXINIT='set nu tab=10';export EXINIT
3. HOME
H O M E p a s s w d 2
HOME cd
$ cd $ HOME
4. IFS
138
I F Ss h e l l
t a bI F S I F S
echo PATH
<space><tab>tab
5. LOGNAME
6. MAIL
M A I L /var/spool/mail/<login name>s h e l l
MAIL
$ M A I L = / u s r / m a i l / d ae
v ex p o r t M A I L
7. MAILCHECK
M A I L C H E C K 6 0 s 2 m
$ MAILCHECK=12
e
0 xport MAILCHECK
8. MAILPATH
MAILPATH MAIL
$ M A I L P A T H = / v a r / s p o o l / d a v e : / v a r / s p o o l /e
a dxmpionr t M A I L P A T H
MAILdaveadmin
9. PATH
PAT H
H O M E
$ P A T H = $ H O M E / b i n : . : / b i n : / u s re
/ b ixnp o r t P A T H
H O M E / b i n / b i n
/usr/bin
PATH /etc/profile
$ P A T H = $ P A T H : / $ H O M E / b i
n:.
export PATH
/ e t c / p r o f i l e PAT H $ H O M E / b i n
10. PS1
s h e l l # $
14 shell
139
11. PS2
PS2 > PS2
12. SHELL
S H E L L s h e l l / e t c / p a s s w d s h e l l
shell
13. TERMINFO
/usr/lib/terminfo/usr/share/terminfo
$ T E R M I N F O = / u s r / l i b / t e r m ie
n fxop o r t T E R M I N F O
14. TERM
TERMTERM
vt100vt200vt220-8
$ T E R M = v t 1 0e
0 xport TERM
15. TZ
GMT0EDT
14.3.5
1. EDITOR
$ E D I T O R = ve
i xport EDITOR
2. PWD
cd
3. PAGER
pgmoreman
$ P A G E R = ' p g - f - p %e
d'xport PAGER
4. MANPATH
140
man
$ M A N P A T H = / u s r / a p p s / m a n : / u s r / l o c a le
/ mxapno r t M A N P A T H
5. LPDESTPRINTER
$ LPDEST=hp3si-systems
14.3.6 set
$ H O M E . p r o f i l e s e t- a
set -a / e t c / p r o f i l e
$HOME.profile
14.3.7
s h e l l
fatherchild
fatherfilmA Few Good Men
child film Die Hard
father
14 shell
141
e x p o r t f i l m
film
14.4
4
s h e l l
9 s h i f t
s h i f t 9 $
0
Did You See Th e Full Mo o n
$0
$1
$2
$3
$4
$5
$6
Did
You
See
The
Full
Moon
$7
$8
$9
142
14.4.1
6 789
$ 0 b a s e n a m e $ 0
14.4.2
f i n d $ 1
14 shell
143
$ 1g r e p i d g r e p i dp a s s w d
14.4.3
s h e l l
7
14-2
14-2 shell
$#
$*
$$
$!
$@
$$?
9
ID
ID
$#
shell set
0
p a r a m
144
ID
14.4.4
$ ?0
01
/tmp$?
$ ? c pc a n n o t . . .
/ d e v / n u l l b i n
b i n
$!1
14 shell
145
14.5
s h e l l s h e l l
15
15.1
s h e l l s h e l l
*s h e l l s h e l l
15-1
15-1 shell
""
''
15.2
$`\
s h e l l
15
147
mydate
s h e l l" " m y d a t ed a t e
date
grepDavey Wire
grepDavey Wire
s h e l l
s h e l l
$ boy$BOY
15.3
s h e l l
15.4
s h e l l
s h e l l h e l l o h e l l o
date
shell
148
mydate
mydate
date mydate
shell
15.5
s h e l l
& * + ^ $ ` " | ?
echo* *
$ echo \*
*
$ $ s h e l l I D
$$
A S C I I s h e l l
15
149
LINUX
-e
expr* *
echo $19.99
$
15.6
1)
2)
shell
16 shell
s h e l l s h e l l
shell
shell
shell
16.1 shell
s h e l l
shell
UNIXLINUXshell
shell
16.2
#!/bin/sh
shellBourne shell
#
152
shell
16.3
cleanup
/usr/adm/ /usr/local/apps/log
chmod
$ chmod u+x cleanup
$ cleanup
$ cleanup
sh:cleanup:command not found
$. /cleanup
s h e l l . p r o f i l e
PATH $HOME
$ pwd
$ /home/dave/bin
p w d b i n . p r o f i l e
$HOME/bin
PATH=$PATH:$HOME/bin
bin
$ cd $HOME
$ mkdir bin
.profilebinPATH .profile
$. ./profile
213
16 shell
153
chmod
16.4
s h e l l
shell
17
Test
ifthenelse
test
expr
e x p r $ ?t e s te x p r0
1
17.1
test
test condition
[condition]
17-1
17-1
-d
-f
-L
-r
-s
-w
-u
-x
suid
s c o r e s . t x t 0
0 scores.txt
scores.txt
appsbin
17
155
appsbin
suid
suid
17.2
O K s h e l l
-a
-o
!
scores.txtresults.txt
results.txt
17.3
156
shell
string_operator
=
=
-z
-n
EDITOR
vi
echo
tapetape2
tapetape2
17.4
"number"numeric_operator"number"
["number"numeric_operator"number"]
numeric_operator
-eq
-ne
-gt
-lt
-le
-ge
130130
17
157
1130200
130100
source_countdest_count:
17.5 expr
expr
expr argument operator argument
expr
shell
158
shell
17.5.1
e x p r 0 1
expr
17.5.2
expr
d e v / n u l l
0
e x p r
1
hellohello
e x p r1 0
hellohello
17.5.3
e x p r e x p r . *
0
expr .doc
17
159
17.6
e x p rt e s t
if then elsecase
18
whileforuntil loops
if then else
18.1
$ echo $?
4 $? $$
| | s h e l l s h e l l 1 9
shellexit
exit n
n
exit shellshell
e x i ts h e l l
0
1
s h e l l
s h e l l s h e l l
18.2
18
161
s h e l l
18.2.1
i ft h e ne l s e
0 1
case
18.2.2
3
for
Until
until
While
while
for for
e c h o L I N U XB S D e c h oecho -e -n
e c h o U N I X VB S D e c h o 1 9
shell
if 1
then 1
elif 2
then 2
else 3
162
shell
fi
if
If 1
Then
elif 2
then
2
else
12
fi
if fiif fi
elifelse elifelseIf
elif ifif then fi
18.3.1 if
if
if
then
fi
i f t h e n
if
if then
fi
1012 if
e c h o
else
18.3.2
18
163
returnname
18.3.3 grep
g r e pi f
g r e p g r e p D a v e d a t a . f i l e
Dave\>
grep grep0grepif
grep if
18.3.4 grep
g r e p
grep Peter
164
shell
18.3.5
c p m y f i l em y f i l e . b a k
` basename $0`
>/dev/null 2>&1
18.3.6
DIRECTORY
" / " /
1
18
165
18.3.7
if test.txt LOGNAME
18.3.8
if $#
18.3.9
c r o na t
166
shell
t e s t - t
test1
18.3.10 if else
if
if
then
1
else
2
fi
ifelse
18.3.11
E D I TO R E D I TO R
18.3.12
LOGNAME root
LOGNAME
r o o t r o o t
1
rootLOGNAMEelse
f i r o o t
18
167
18.3.13
$1 DIRECTORY
ls -A
18.3.14 null
t h e ne l s e
i f s h e l l
then
168
shell
18.3.15
DIRECTORY
if ["$DIRECTORY"=""]
if[$# -lt 1]
Yy
18
169
18.3.16
c p$ 1$ 2
/dev/null
sort a c c o u n t s . q t r
300
18.3.17 if
if iffi
18.3.18
E D I TO R
170
shell
vi
vi
y
Yy $ E D I TO R =
r e t u r n -z $EDITO R
vi E D I TO Rvi
E D I TO R
E D I TO R
18.3.19
* . t x t
18
171
18.3.20
100
yY
COUNTOR
172
shell
18.3.21
s t t y
passwd stty
ID maydayINVALID_USERINVALID_PASSWD
n o y e s
I D
IDdavepauline
18
173
18.3.22 elif
if then elseelif
18.3.23 elif
e l i f r o o tl o u i s ed a v e
rootlouisedave
174
shell
18.3.24
/usr/opts/audit/logs/usr/local/audit/logs
18
175
18.4 case
c a s e c a s e
case
case in
1}
1
...
;;
2
2
...
esac
c a s e i n
*
[..]
18.4.1 case
15 c a s e A N S c a s e
ANSANS
;
case
case
*
176
shell
18.4.2 |
case | vt100|vt102vt100vt102
vt100vt102vt100|vt102
T E R M v t 1 0 0 *
T E R Mv t 1 0 0 c a s e T E R M *
TERM
18
177
18.4.3 yn
case yn
Yyyes case Nnno
18.4.4 case
case
$ # 1
178
shell
c a s e p a s s w ds t a r ts t o ph e l p
18.4.5
case
234453655454
c a s e
18
179
18.4.6
when
case
180
shell
c a s e if then else
18.5 for
for
for in
do
1
2
done
18
181
f o r
s h e l l I n f o r
in
18.5.1 for
1 2 3 4 5
18.5.2
f o r orange red blue grey e c h o l o o p
echo$loop
18.5.3 forls
ls
182
shell
18.5.4 for
for in
for
params
in"$@"
params
in"$*"
for
in for $@$*
in"$@"
f o r f i n d
18
183
find -name
18.5.5 for
f o r f o r
18.5.6 for
f o r c p . b a k
cp ls
18.5.7
L P S O l sc a t l s
c a t t r .U C f o r l s
184
shell
18.5.8 sed
s e d . H O L D . m v
mv
18.5.9
expr lsfor
wc
18.5.10 for
f o r
who awk for
18
185
18.5.11 for
for for
1
for
do
for
do
i n1
i n 2
1
...
done
done
for APPSSCRIPTS
A P P S
S C R I P T S t e e
f o r
SCRIPTS APPS
186
shell
18.6 until
u n t i l u n t i l w h i l e
w h i l e u n t i l u n t i l
u n til
until
1
...
done
18.6.1 until
who rootIS-ROOTgrep
r o o t s i m o n r o o t
s l e e p u n t i l
18
187
18.6.2
u n t i l / t m p / m o n i t o r. l c k
p r o c e s s . m a i n
p r o c e s s . m a i n L C K
p r o c e s s . m a i n p r o c e s s
process.main LCK
L C K L C K
18.6.3
u n t i l
/ l o g s $L O O K_O U T $ L O O K _ O U T
awkgrep/logs
9 0 %
9 0 %
188
shell
18.7 while
while
w h i l e
do
1
2
...
done
w h i l ed o
0d od o n e 0
18.7.1 while
w h i l e C O U N T E R 5
COUNTER0 COUNTER1
15
18.7.2 while
w h i l e F I L M< C t r l D>
18
189
18.7.3 while
while
ID
w h i l e
$LINE.
18.7.4 IFS
I F S I F S
I F S t a b 3
NAMEDEPTID
echotab
190
shell
18.7.5
while
James Lenod
James Lenod
caseexpr
18
191
18.7.6
STATGIFT
G I F T e x p r
e x p r L O O PTOTAL 0 I T E M STOTAL
ITEMSTOTAL
192
shell
expr
expr
expr
TOTAL 0 e x p r
18
193
18.7.7
w h i l e
wc
18.7.8 #
while
c a s e #
194
shell
# **
18.7.9
18
195
I T E M
sed
while expr
196
shell
18.7.10 while
5 while
34myfile.txtmyfile.bak
while
null
18
197
18.8 breakcontinue
shell
break
continue
18.8.1 break
b r e a k b r e a k c a s e
break 2
18.8.2 case
5 s h e l l
break
18.8.3 continue
c o n t i n u e b r e a k
198
shell
18.8.4
Peter James
2
Peter James
18
199
18.9
w h i l e n u l l h i l e n u l l
w h i l ec a s e
/ D D / M M / Y Y Y Y
$ date +%d/%m/%y
32/05/1999
hostname-s
while while
while
do
done
e c h o
case
200
shell
case
CAPS LOCK
Qq 0
LINUXBSD echo V
echo "\007 the bell ring"
echo
tputtputclear
18
201
18.10
19 shell
shell shell
shell
{
1
...
}
{
1
...
}
function
function
{ ...
}
s h e l l
shell
echo
19 shell
203
19.1
s h e l l
hello
echo
19.2
h e l l o
back from the function
19.3
$ 1 , $ 2 . . . $ 9
s h e l l
_FILENAME_filename
19.4
1)
2) return 01
204
shell
return
R e t u r n 0
R e t u r n 1
19.5
i f 0 1 i f
variable_name=function_name
function_name variable_name
19.6 shell
shell
#!/bin/sh
functions.main
s h e l l s e t
shell
u n s e t s h e l l u n s e t
s h e l l
shell unset unset
19.7
shell
functions.main
19 shell
205
find
1 $ 0
shellsh-
19.8
./pathname/filename
shell
$. functions.main
19.9
set setshell
19.10 shell
f i n d i t
206
shell
19.10.1 shell
s h e l l u n s e t
unset
unset
function_name
$ unset findit
set
19.10.2 shell
f u n c t i o n s . m a i nf o r
$. /functions.main
set shellfor
findit
19 shell
207
19.10.3
1.
awk
$1 awk
1 _LETTERS_ONLY
if
208
shell
n a m e _ e r r o r $ @
F_NAMES_NAME
while
19 shell
209
2. echo
echo LINUXBSDV
echo
echo read
LINUXBSDecho-n
LINUXBSDecho echo
V\C
e c h o L I N U X- e s h e l l
echo
echo \007 V
\007LINUX
$@
uni_prompt "\007 there goes the bell ,What is your name:"
What is your name:
VLINUX/BSD
V \cz
210
shell
u n i _ p r o m p t s " \ 0 0 7 t h e r e g o e s t h e W
b ehlalt i s y o u r n a m e : "
T h e r e g o e s t h e b eW
ll hat is your name:
3.
press any key
to continue dd
d d
1myfile
dd if:/dev/zero of=myfile count=512 bs=2048
d d d d
d d
stty dd dd
19 shell
211
4.
if
5. YN
case
212
shell
$ 1 YN
continue_prompt
19 shell
213
$1
6. ID
I D
grep passwd
grep /etc/passwd
p a s s w d5
passwd
ID grep
whois
7.
vi
nl nl
214
shell
number_file shell
$ number_file myfile
number_file $1
8.
tr
u p p e r
str_to_upper
$1
$ @
19 shell
215
9. is_upper
str_to_upper
is_upper if
is_upper
i s _ u p p e r a w k
is_lower
10.
s t r _ t o _ u p p e r s t r _ t o _ l o w e r
216
shell
L O W E R
$ @
str_to_lower
11.
2 0 5 0
check_length
19 shell
217
N A M E 1 0b r e a k
w c w c
w c
awk
wc
12. chop
c h o p
M Y D O C U M E N T. D O C M Y D U C U M E N T . D O C
chop
MYDOCUMENT.DOC 10
Chop
218
shell
CHOPPED chop
13. MONTHS
m o n t h s
303March
19 shell
219
months
months 04
April
June
19.10.4
s h e l l
19.11
19.11.1
220
shell
e r r o r _ m s g
19.11.2
functions.shshshell
19 shell
221
f u n c t i o n s . s h
.\<path to file>
shell shell
222
shell
19.12
backfunc
1_CODE
_CODE comet
19 shell
223
19.13
20
$ 1 . . $ 9 $ #
usage
shift
getopts
shiftgetopts
usage case
UNIXLINUX
20
225
1 2
20.1 shift
s h i f t
w h i l e
20.1.1 shift
shift
20.1.2
eval
eval echo \$$#shiftshift 'expr $# -2'
226
shell
20.1.3 shift
s h i f t t r
-l
-u
shift -l-u
u s a g e
case shift
usage
c a s e c a s ec a s e
*-* -p-q
20
227
* f o r - f
case
-l-u
TRCASE
EXT .UC.LC
OPT
yes no
t r t r c a s ef o r
228
shell
20
229
- l - c 2 3 -12
v
shift getopts
20.2 getopts
g e t o p t s g e t o p t s
20.2.1 getopts
getoptsgetopts
a ALLtrue
h HELPtrue
230
shell
f FILEtrue
v VERBOSEtrue
false
getopts
getopts
option_string variable
whileoption_string5-a-h-f-g-v
variableOPTION
20
231
20.2.2 getopts
getoptsoption_string
g e t o p t s
o p t i o n _ s t r i n g O P T I O N
getopts OPTION
20.2.3 getopts
g e t o p t s
option_string
getopts ahfvc: OPTION
ahfv c
O P TA R G
option_string
while getopts :ahfgvc:
OPTION
case
getopts
232
shell
-c
20.2.4
g e t o p t s
getopts
20
233
g e t o p t s O P TA R G
getopts
fort r- c a s e shift
getoptsshift
20.2.5 getopts
t r- c a s egetopts getoptsshift
VERBOSE
V E R B O S E n o c a s e
yes if
/dev/null
> / d e v / n u l l 2 > & 1
V E R B O S E - v V E R B O S E
myfile
tr-case -l -v myfile1 myfile2 ...
g e t o p t s s h i f t
234
shell
UNIXLINUX
20
-a
-c
-d
-e
-f
-h
-i
-l
-o
-q
-p
-v
235
20.3
s h i f tg e t o p t s g e t o p t s
shift
s h i f t $ 1 . . $ 9 s h i f t
21
s h e l l
tput
tput
tput GNU tput
t p u t / e t c / t e r m i n f o/ e t c / t e r m c a p
tput
21.1 tput
tput tput
$ tput init
t p u t /
21.1.1
bel
blink
bold
civis
clear
cnorm
cup
el
ell
smso
rmso
smul
rmul
sc
rc
sgr0
rev
xy
21
237
21.1.2
tab
cols
it
lines
21.1.3
tput
chts
hs
21.2 tput
tput tput
21.2.1 tput
tput
variable_name='tput name'
21.2.2
if tput
21.2.3 tput
tput belcl
238
shell
21.2.4
1)
2) tput civis
25l l 25h
[
UNIXLINUX echo
\ 0 3 3 \e c h o @
echo @echo-e\100
v
echo \100
clear homeVT
ESCIJ echo
<CTRL-V>,
21
21.2.5
tput
cup r c
r c
239
240
shell
21.2.6
t p u t
tput 2
10
c e n t e r t x t 1 5T H E M A I N E V E N
T
centertxt 15 $
1
21.2.7
tputterminfo tput
21
241
i n f o c m pt e r m i n f o
$ infocmp $TERM
termput
21.2.8
c a t F 1cat -v
<Ctrl-c>
cat F1^[OP]F2([OQ])[^[[A]
F 1F 2 c a t
242
shell
21.2.9
ANSI
1.
30
31
32
33
34
35
36
37
2.
40
41
42
43
44
45
46
47
21
243
<ESCAPE> [background_number;foreground_number m
21.2.10
e c h o
echo
<Ctrl-v><ESCAPE> [4032 m
echocase
red-yellow
colour red-yellow
echo .profile
21-2
244
shell
21-1 tput
21-1
21
245
246
shell
21.2.11
while
read_char trap
2315
priv.user
r o o t
davematty peterlouise
21
247
F O U N D
USER
U S E R w h o a m i
continue
test 1 0
passwd
21-2
248
shell
Restrict
21-2dave
qQ
21
249
250
shell
21
251
profile exec
UNIXLINUX shell
21.3
t p u t
22
DBFILE
10
20
20
-
IT
trap 2315
22.1
1)
2)
22
253
read_a_char
254
shell
grepgrep_CODE awk
0 g r e p $ _ C O D E \ >
22
255
w h i l e w h i l e
if ["$NUM"!=""]
i ft h e n e l s e
t h e n a _ n u m b e r
0 1
NU M_ PA S S0 1
l e n g t h _ c h e c k 1 0
1 0 0 1LEN_PASS0
1
check_duplicate
DUPLICATE0 0 A N D
then
while break
S t a f f N u m b e r : N o n _ N u m e r i c o r T o o M a n y N u m b e r s I
n Field
2 3
characters
256
shell
case 5
case
c o n t i n u e _ p r o m p t Y N YN
Nif while
Y
e c h o " $ N U M : $ F _ N A M E : $ S _ N A M E : $ D E P A R T " > > $ DB F I L E
s l e e p 1 s
DBFILE
DBFILE
22
257
258
shell
22
259
260
shell
22
261
262
shell
22.2
1)
2)
3)
4)
g r e pa w k
100
awk awk
grep
awkgrepDBFILE
awk
I F S
I F S
IFS
SAVEDIFS=$IFS
IFS=:
IFS
IFS=$SAVEDIFS
22
263
get_rec
if ["$STR"!=""
t
] hen
[-2 $STR]
b r e a k
no
264
shell
grep -v STRSTR
g r e p D B F I L E
DBFILE
22
265
266
shell
22.3
{ default_variable=variable}
22
267
grep -v
grep
grep -v $CODE $DBFILE >$HOLD1
DBFILE
D B F I L E
268
shell
22
269
270
shell
22.4
c a t a w k
22
271
272
shell
22
273
22.5
23
s h e l l
set
iffi
s h e l l
shell
23.1
23.1.1
f o rw h i l eu n t i lc a s e
d o n e w h i l e
while do
23.1.2
s h e l l v i v iset nu
v i< E S C > set nu <return>
shell
23.1.3
-eq
23
275
[: missing ']'
23.1.4
23.1.5 for
for $
23.1.6 echo
e c h o e c h o
echo
e c h o
23.2 set
set set
set -n
set -v
set -x
set +-+-
s e t
f o r
set -x
276
shell
set
23.3
set echo
24 shell
s h e l l s h e l l
Bourne shell /binusr/bin
Bourne shell
cdpwd
/bin/pwd
24.1 shell
24-1
24-1
.
break
cd
continue
echo
eval
exec
exit
export
pwd
read
readonly
return
set
shift
test
times
trap
ulimit
umask
unset
wait
true
shell
forwhileuntilcase
shell
shell
shell
shell
shell
shell
24.1.1 pwd
278
shell
$ pwd
/tmp
24.1.2 set
s h e l l s e ts e t
set
accounts.docaccounts.bak
s e t
24.1.3 times
t i m e s s h e l l
times
24.1.4 type
t y p e t y p e
24 shell
279
24.1.5 ulimit
u l i m i t s h e l l / e t c / p r o f i l e
shell.profile ulimit
ulimit options
ulimit
-a
-c
-f
ulimit
24.1.6 wait
wait wait ID
$ wait
24.2
shell
shell
25 <<
w h i l e < <
<<
ftp
command <<word
text
word
<<
25.1
N E W F I L E
myfile
t a b s h e l l
<< -
cat >> myfile <<- NEWFILE
...
25.2
vi
QUICKDOC
282
shell
25.3
< <
c r o n
< < s y b _ b a c k u p
1) syb_backup
2) 2
3) 3
4) Y
syb_backup
25 <<
283
s y b _ b a c k u p >>$log_f 2>&1
$log_f /logs/sql.backup.log
<<MAYDAY s y b _ b a c k u p
MAYDAY
<<
25.4 ftp
< < f t p f t p
a n o n y m o u s f t p
1)
2) ASCII
3)
4)
t r a c e r o u t e
t r a c e r o u t e f t p
284
shell
/tmp /tmp
.ftp
25 <<
285
286
shell
ftp <<ftp -i -n
u s e r $ U S E R @ T H I S H O S T
dave@bumper
DEST_HOSTFILENAME
ftp DEST_HOST
my_favourite_host
25.5
s h e l l < <
<<
select into
25 <<
287
< < f o r
<<sql
<<shell
s h e l l MAYDAY
288
shell
25.6
< < < <
f t p < <
26 shell
trap
eval
logger
26.1
c a t
26.1.1 date
date
hh:mm
290
shell
d dm my y
ddhhmm
26.1.2
$ $
$ $
$ $ S h e l l $ $
26 shell
291
rm /tmp/*.$$shell rm /tmp/*.408
26.2
1
2
3
9
11
15
SIGHUP
SIGINT
SIGQUIT
SIGKILL
SIGSEGV
SIGTERM
<CTRL-C>
0 . l o g o u t s h e l l
0 exit <CTRL-D>
kill 15
292
shell
26.2.1
1 D N S
named
kill -1 1Named
m o n _ w e b 9
ps
ps -ef ps xa
kill -9 157
g r e p
kill -9
26 shell
293
26.2.2
9
s h e l l 1231 5
1)
2)
294
shell
3)
trap
26.3 trap
trap
trap name signal(s)
n a m e n a m e
Name Signal
1)
2)
3)
trap
trap "" 2 3
trap"commands" 2 3
trap 2 3
23
23 commands
23
26.3.1
<Ctrl-C>2
trap
trap "do_something" signal no:(s)
26 shell
295
trap "my_exit" 2
t r a p 2 m y _ e x i t
m y _ e x i t 2 $ L O O P
< C t r l - C > 2
26.3.2
d fp s H O L D 1 . $ $H O L D 2 . $ $
$ $ < C T R L - C >
296
shell
23
<CTRL-C>
2
case
1 1
2 c a s e
case
26 shell
297
<CTRL-C>
26.3.3
lockit while
trap 2315
$ stty sane
298
shell
lockit
26.3.4
/etc/profile
trap12315
26 shell
299
trap
9
trap""signal no:(s)
trap ""1 2 3 15
trap"my_exit" 1 2 3 15 my_exit
w h i l e
trap
6 sleep
300
shell
< C t r l - C >
trap
<Ctrl-C>my_exit
t r a p
26.4 eval
eval
eval
eval
26.4.1
t e s t f cat testf
MYFILE echo
cat testfMYFILE
$ MYFILE
= c a t t e s t
f
26 shell
301
echo testf
eval eval
eval
cat testf
CAT_PASSWD cat /etc/passwd | more
eval
eval
e v a l $ $ # s h e l l
26.4.2
data
eval
302
shell
d a t a P C4 8 6
N A M ET Y P EE v a l N A M ET Y P E
PC486 PC 486
eval
eval
26.5 logger
m e s s a g e s / v a r / a d m
/var/log syslog messages
/etc/syslog.conf
UNIXLINUX
logger
/ v a r / a d m / m e s s a g e s
logger
logger -p -I message
26 shell
303
-p
-i
26.5.1 logger
message
crontab 30
$ test_logger
message
26.5.2 logger
logger
231 5
304
shell
logger
tty0tty02
/etc/profile
26 shell
305
logger
26.6
27
5 0 0
27.1 pingall
p i n g a l l
/etc/hosts ping
/ e t c / h o s t s # w h i l e
awk ADDR
forping
27.2 backup_gen
27
307
b a c k u p _ g e n
backup.defaults
[ ]
[rmt0]
rmt1rmt3
[]
[]
sybase
f i n dc p i o
308
shell
27
309
310
shell
backup.defaultscontinue_prompt
27
311
312
shell
27.3 del.lines
sed
sed
s e d
s e d $ $
s h i f t w h i l e
del.lines -help
27
313
27.4 access.deny
/ e t c / n o l o g i n
/ e t c t o u c h n o l o g i n
root
/etc/profile
/etc nologin
314
shell
rm /etc/nologin
/ e t c / p a s s w d *
L I N U X l o g i n . a c c e s s
d e n y. a c c e s s / e t c / p r o f i l e
lockout.users all
root
lockout.users
trap
lockout.users
all
all
all root
grep all\>
get_users lockout.users#
r o o t r o o t
L O G N A M E N A M E S
NAMESlockout.users
4 0
/ e t c / p r o f i l e
. /apps/bin/deny.access
/ a p p s / b i n
27
315
l o c k o u t . u s e r s / a p p s / e t c
s e t
l o c k o u t . u s e r s u n s e t
unset/etc/profile
unset getusers
316
shell
27.5 logroll
c r o n
16
B L O C K _ L I M I T
8 4 K
LOGS
f o r d u
B L O C K _ L I M I T
0
c r o n
27
317
27.6 nfsdown
n f s
n f s
nfs
L I S T n f s f o r
grepdf nfs nfsmount
machine: remote_directory
NFS_MACHINEumount
27.7
28
L I N U X L I N U X
V UNIX
rc.scripts
rc.scripts
inittab
rc.script
s t a r ts t o p
r c . s c r i p t
r c . s c r i p t
shell
28.1
r c . s c r i p t s (
)/etc/rcN.d
/etc/rc.d/rcN.d
N 7 r c N . d 06
rcS.d
LINUX
28
319
c d r c N . d r c . s c r i p t s
28.2
shell rc.scripts
run level
LINUX
$ runlevel
23
3
28.3 inittab
i n i t
inittab
/ e t c i n i t
inittab
id:rstart:action:process
id
rstart
a c t i o n i n i t p r o c e s s
320
shell
w a i tr e s p a w nw a i t r e s p a w n
process inittab
3
1 01 6
15:5:wait:/etc/rc.d/rc 5
5 5 / e t c / r c . d / r c/ e t c / r c . d / r c/ e t c / r c . d / r c 5 . d
2345
1 s t t y S 1m i n g e t t y
vt100
28.4
i n i t
/ e t c / r c . d / r c/ e t c / r c . i n i t
r cr c . i n i t f o r
K stop
S s t a r t
r c N . d
28
321
/usr/sbin/init.d/etc/init.d
LINUX
/etc/rc.d/init.d
rc.scripts
rc.name stop
rc.name start
r e s t a r ts t a t u s
rcN.d
28.4.1
(28-1)
28-1
0
1
2
3
4
5
6
UNIX X-windows
28.4.2
rcN.d
Snnn.script_name
Knnn.script_name
S
K
n n0 09 9 0 0 09 9 9
322
shell
rc3.d S45.myscript
rc2.d S45.myscript
script_name
/usr/sbin/init.d
/etc/rc.d
/etc/init.d
i n i t
K23,myscript K12.named L I N U X
K
28.4.3
( )/etc/init.d/usr/sbin/init.d/etc/rc.d
rcN.d
rc.audit 354
621 r c N . d 3 5
case startstop
28
323
LINUX
LINUX
s t a r t s t o p
init.d
rcN.d/etc/rc.d /etc/rc.d/init.d
ls -l / e t c / i n i t . d / r c . a u d i t
( r c 4 . d
rc5.d)
(
6 ) 21 45
28.5 inittab
inittab
inittab
324
shell
3
inittab
$ cp /etc/initab /etc/inittab.bak
inittab
r c . d i s k c h e c k e r 3
/usr/local/etc/rc.diskchecker
28.6
/ e t c / i n i t t a b
rc.local /etc
inittab
/ b i n( / u s r / s b i n) s h u t d o w n
28.7
29 cgi
P C We b s h e l l
cgi
cgi
(Server Side Includes,SSI)
get
post
Webcgi
We b
We b ( a p a c h eC e r n) ( N e t s c a p eInternet Explorer)
c g i c g i
We b 2 0
We b apache We b
Netscape
HTMLWeb
HTML
29.1 Web
We b H T M L We b
HTML Web
We b
We b
cgi
29.2 cgi
c g i
c g i P e r l
326
shell
shell 29-1
Web
apache?
Web
cgi
29-1 cgi
29.3 Web
(URL)WebURL
h t t pf t pm a i l t of i l et e l n e tn e w s h t t p(
)
D N S I P
TCP 80
We b i n d e x . h t m l
URL
http://localhost/index.html
i n d e x . h t m l We b
URL
http://localhost/
29.4
cgiHTM
We b U R L
c g i - b i n c g i c g i
c g i We b
H T M L
HTML Web 29-1
HTML
29.4.1 cgi
c g i We b c g i - b i n
s r m . c o n fS c r i p t A l i a s
c g i . c g i We b h t m l
htdocs .html
chmod 755 script.cgi
We b n o b o d y h t t p d . c o n f
29
cgi
327
We b
p a s s w d n o b o d y n o b o d y
/ e t c / p a s s w d
*
29-1 HTML
<HTML></HTML>
<HEAD></HEAD>
<TITLE></TITLE>
<BODY></BODY>
<Hn></Hn>
<P></P>
<BR>
<HR>
<PRE></PRE>
<B></B>
<I></I>
<OL></OL>
<A HREF=url>link</A>
<FORM></FORM>
METHOD
ACTION
<INPUT...>
NAME
SIZE
TYPE
<SELECT...>
NAME
SIZE
<OPTION VALUE>
</SELECT>
HTML
postget
NAME
apacheWeb /etc/httpd/logs/usr/local/apache/logs
Webcgi
c g i f i r s t p a g e . c g i
cgi-bin 755
328
shell
e c h o < H T M L > H T M L
H T M L < H 1 >< H n > < H 6 >
URL
http://your_server/cgi-bin/firstpage.cgi
your_server
D N S
I n t e r n e t
29-2
29-2 firstpage
29.4.2 shell
shell
w h o w c
29
cgi
329
U S E R S
if 10
< P R E > d f
e c h o < P R E >
< P R E >
URL
http://your_server/cgi-bin/pagetwo.cgi
your_server
29-3
29-3 pagetwo.cgi
330
shell
29.4.3 SSI
c g i We b c g i
c g i H T M L
c g i ( S S I )
S S I
S S I S S I
server-passed apache
We b kill -1 S S I
.shtml.html
29.4.4
n
cgi-bin hitcount.cgi
../cdi-bin/counter access
1 ../cgi-bin/counter
c o u n t e r 1
counter1( )
29
cgi
331
S S IL A S T _ M O D I F I E D a p a c h e
Web(www.apache.org) SSI
SSI
<!--#command argument="value"-->
cgihitcount
exec
cgi
value
i n d e x . h t m l
URL index.html
29-4
332
shell
srm.conf
DirectoryIndex
i n d e x . h t m l
Web
URL
http://<server_name>/main.shtml
http://<server_name>
2 9 - 4
LAST_
MODIFIED
cron counter 1
29.4.5 Web
c g i e n vs e t
main.shtml cgi
<A HREF="/cgi-bin/printenv.cgi">Environment</A>
A HREF E n v i r o n m e n t
</A>
main.shtml
p r i n t e n v. c g i e n v
<PRE>
29
29-5
29-5
29-6
cgi
333
334
shell
(2 9 - 6 )
29.4.6
Web HTML
cgi
MIME
HTTP
IP
cgi
cgi
Web
DNSIP
Web
get
MIME
post
* Internet
c g i
29
cgi
335
29.5 getpost
c g i
cgi getpost
29.5.1 get
getgetHTML
U R L
Q U E RY _ S T R I N G R E Q U E S T _ M E T H O D
1.
main.shtml booka.cgi
main.shtml
booka.cgi cgi-bin
336
shell
b o o k a _ r e s u l l t . c g i
get
30 contact
film
actor
view_cineview_vid on
(
4 30) textarea
submit clear
cgibooka_result.cgicgi-bin
QUERY_STRINGREQUEST_METHODQUERY_STRING
29
cgi
337
booka.cgi REQUEST_METHOD
get29-7
(29-8)29-9
QUERY_STRING
29-7 getcgi
29-8
338
shell
29-9
QUERY_STRING
contact
film
actor
view_cine
view_vid
textarea
David Tansley
The Sound Of Music
Bruce Willis
on
on
!"%$%^*^&*()*()(*
Hows that!!
2.
Q U E RY _ S T R I N G
+
&
=
% x y x y1 6A S C I I
QUERY_STRING textarea
c g i% x y (x y1 6 )
A S C I I 1 6 &% +=()A S C I I1 2 7
(%29
1 6
29
cgi
339
&
+
=
% xy ASCII
eval
p r i n t f
340
shell
p r i n t fe c h o 1 6
printf \nQUERY_STRING
1 6% x y s e d \ x n n(
nn16)printf
conv.cgi c g i - b i n b o o k a . c g i
c o n v. c g i b o o k a _ r e s u l t . c g i
c o n v. c g i 2 9 - 1 0
29-10
get get
U R L U R L
QUERY_STRING
cgipost post
29.5.2 post
post get post
29
cgi
341
post getpost
C O N T E N T _ L E N G T H p o s t
get CONTENT_LENGTH
cat conv.cgi
get post
cat -cat
Q U E RY _ S T R I N G p o s t c a t
g e t
cgibooka.cgi
<FORM action="/cgi-bin/conv.cgi"METHOD=GET>
<FORM action="/cgi-bin/conv.cgi"METHOD=POST>
conv.cgi
342
shell
p r i n t f e c h o
printf
post
http://<server_name>/cgi-bin/booka.cgi
29-11
29-12
29
cgi
343
29-11 postcgi
29-12 post
3. cgi
Wonder Gifts
344
shell
1 9 9 8
13
29
cgi
345
d e p t q t r
s t d o u t p r i n t e rs c r e e nb o t h ( C H E C K E D)
346
shell
post 16
( ) p r i n t f
qtr_1998.txt
while DEPTYEARQP1P2P3P4
$dept( )DEPT $qtr(
)Q
URL URL( )
http://<server_name>/cgi-bin/gifts.cgi
29-13
29-13
29
cgi
347
29-14
29-14
29.5.3
cgi
l i s t We b
temp while (
)
echo "<OPTION>$LINE"
menu_selection
348
shell
29.5.4
c g i
6 0
dfspace.cgi
<meta http-equiv="Refresh" content=60;URL=http:/linux.pc/cgibin/dfspace.cgi">
RefreshWeb content=60
URL
onoff
df
c e l l s p a c i n g b o r d e r c o l s
df sed
awk 56
percentmount
TRTD
6 0
29
cgi
349
URL URL
http://<server_name>/cgi-bin/dfspace.cgi
29-15 ( )
29-15 df
29.6
cgiHTML
H T M L
shell
s h e l l
basename
basename path
basename shell
myscript
myscript: give me a file
$0
cat
-v
cat
$ cat myfile
myfile
$ cat myfile myfile2 >>hold_file
(myfilemyfile2)hold_file
cat
compress
shell
351
-v
compress .Z
cp
-i
-p
-r
myfilemyfile1.bak
$ cp myfile1 myfile1.bak
get.prd/usr/local/sybin /usr/local/bin
/logs /hold/logs
$ cp -r /logs /hold/logs
diff
-c ()
-I
comm diff
diff 233
dircmp
352
shell
-s
dircmpdiff
dirname
dirname pathname
basename
du
du options directory
-a
-s
du 512
/var 14929(512)
file
file filename
fuser
-k
shell
353
-u
f u s e r - u- m
if fuser
/dev/hda5
/dev/hda5
$ fuser -k /dev/hda5
doc_part
fuser ID
f u s e r e ps -efps xa g r e p
ID
head
head 10 -number
$ head -1 myfile
logfile30
logname
logname
mkdir
354
shell
-m
HOLD_AREA
more
pagepg
-c
-d
-n n
$ more /etc/passwd
passwd
$ cat logfile |more
logfile
nl
nl options file
-I n1
-p
nl
$ nl myscript
myscript
$ nl myscript >hold_file
hold_file
$ nl myscript | lpr
printf
awkprintf
format
%[- +]m.nx
shell
355
- m n
%
s
c
d
x16
o10
p r i n t f
\a
\b
\r
\f
\n
\t
$ printf "Howzat!\n"
Howzat!
\n
16ASCII+
10
pwd
pwd
rm
rm options files
356
shell
-i ()
-r
rm
/var/spool/tmp
rmdir
-p
$ rmdir /var/spool/tmp/lp_HP
/var/spool/tmplp_HP
script
-a
s c r i p t
$ script mylogin
script mylogin
shutdown
shutdown
$ shutdown now
60
sleep
sleep number
shell
$ sleep 10
10
strings
strings filename
touch
-t MMDDhhmm
myfile
6109:30 myfile2
tty
tty
tty
tty -s
0
1
uname
uname options
-a
-s
-v
357
358
shell
uncompress
uncompress files
$ uncompress myfile
myfile .Z
wait
wait process ID
process ID
1299
$ wait 1299
$ wait
wc
wc options file
s
-c
-l
-w
w h o w c
wc
shell
359
VAR
whereis
whereis command_name
whereis
w h e r e i s
shell
who
who options
-a
-r (LINUX runlevel)
-s
whoami who
who