opennet.ru/docs/RUS/profunix/chap10.html
????????
??????? ?????????????? ? ????? shell
conv
?????? ??????????????
dtoh
dtoo
htod
htoo
???????? bc
otod
otoh
?????? ????? shell ??? ??????????? ???????? ????????
???????? ????? shell
??????? ???? ? ??????????, ???? ?????????? ? ?????,
?????????????? ? ??????????? ??????
?????? ????????? ????? shell
?????? ????? shell ? ????-?????
?????????? ????
? ?????????? ed
? ?????? a.out
C ???????? ????? shell
?????????? ???????? ?????
??????? ? ?????????
??????????/??????????? ???????????????? ?? ????? shell
????????? ??? ??????????????? ??????
???????????? ??? ????????
???????? ????????? Vi
??????????? ? ???? shell
????????? Escape
???????
??????? "One-Liners" - ?????????, ?? ??????
.
- 2 -
????????
??? ????? ???????? ?????? ??????????? ?????? ?? ??????? ?
???????? ???????????????? ??????? ?? UNIX. ?????? ????, ??????? ??
???????? ?? ????????? ??? ????????, ?? ????????? ? ????????
?????????? ????. ??? ? ??????????? ?????????, ???????? ??????????????
?????, ? ?????????, ?? ????? ?????? ????????? ????????. ????? ????,
????????? ????????? ???????? ???? ? ???????????? ?????? ?????????
????? ???????? ?? ????? shell.
??????? ??????????????
????????? ?????????? ? ?? ??????????? ??????? ?????????? ???
?????? ?????? ??????? ?????????, ????? ????????? ?????????????
?????????????? ????????? ?????? ?????????. ??? ??????????????
?????????????? ?????? ????????? ???????????? ????????? UNIX bc
(??????????? ???????????? ????????) ? dc (??????? ????????????????
???????????????? ??? ?????????? ??????????? ("desk calculator")).
??????????? ?? ???????????? ???????????? ???? ????? ?????
???????????? ????????, ???? ?? ?????? ???????????? ? ???? ????????,
??????? ????? ?????????? ?????? ??? ???????????? ????????????
??????????? UNIX, ????? ????? ?????????????? ???? ??? ????? ?????
????? ????????????.
????????: conv
conv ????????? ????? ?? ????? ??????? ????????? ? ??????
??????????: ???????????? ??????????? ?????????????? ????????? ???????
?????????
????? conv
?????? ??????:
$conv ??????? ??????? ???? ????????? ??????????????
2 ??????? ????? 2 ( ?? ????????????????? ? ??????????)
FFF ?????? ????????????????? ????? FFF. ?? ?????? ?????????
??????? ?????????? ??????????
???????? ????? ??? ??????? conv
1 :
2 # @(#) conv v1.0 ?????????????? ????????? ???????
?????????, ????????? shell ?????: Russ Sage
3
4 while :
5 do
6 echo "
7
8 ?????????????? ?????????
9 ------------------------
10 1 - ?????????? ? ?????????????????
11 2 - ????????????????? ? ??????????
12 3 - ?????????? ? ????????????
13 4 - ???????????? ? ??????????
14 5 - ???????????? ? ?????????????????
15 6 - ????????????????? ? ????????????
16
17 enter choice (1-6, <>): c"
18 read CHOICE
19
20 case $CHOICE in
21 "") exit;;
22 1) echo "???????? ?????????? ????? (<> to exit): c"
23 read DEC
24 if [ "$DEC" = ""]
25 then exit
26 fi
27 HEX='. dtoh'
28 echo "n${DEC}d = ${HEX}x";;
29 2) echo"n??????? ????????????????? ?????
? ??????? ???????? (<> to exit): c"
30 read HEX
31 if [ "$HEX" = ""]
32 then exit
33 fi
34 DEC='. htod'
35 echo "n${HEX}x= ${DEC}d;;
36 3) echo "n??????? ?????????? ????? ?
??????? ???????? (<> to exit): c"
37 read DEC
38 if [ "$DEC" = ""]
39 then exit
40 fi
41 OCT='. dtoo'
42 echo "n${DEC}d = ${OCT}o";;
43 4) echo "n??????? ???????????? ?????
(<> to exit): c"
44 read OCT
45 if [ "$OCT" = ""]
46 then exit
47 fi
48 OCT='. otod'
49 echo "n${OCT}o = ${DEC}d";;
50 5) echo "n??????? ???????????? ?????
(<> to exit): c"
51 read OCT
52 if [ "$OCT" = ""]
53 then exit
54 fi
55 HEX='. otoh'
56 echo "n${OCT}o = ${HEX}x";;
57 6) echo "n??????? ????????????????? ?????
? ??????? ???????? (<> to exit): c"
58 read ???
59 if [ "$???" = ""]
60 then exit
61 fi
62 OCT='. htoo'
63 echo "n${HEX}x = ${OCT}o";;
64 *) echo "n$CHOICE-??????????? ???????";;
65 esac
66 done
?????????? ?????????
CHOICE - ????? ?????? ?? ???????? ????
DEC - ?????? ?????????? ???????? ??? ?????????
??????????????
HEX - ?????? ????????????????? ???????? ???
- 4 -
????????? ??????????????
OCT - ?????? ???????????? ???????? ???
????????? ??????????????
????????
????? ??? ????? ??????? conv ?
?????????? ???????? ???????? ???????? ?????? ? ????????? ??????
????? shell - ??? ?????? ?? ????? ??????? ????. ????????? ????? ????-
???? ?????? ?????????? ???? ?? ????, ? ?????????? ?????????????? ???-
????? ??? ?????? ????????? ?? ??????. ??????, ????????? ????? shell
????? ?????????????? ???????????, ? ??, ????????, ???????? ???
???????????????. ???? ??? ????? ????????????? ????????? ????? ? ???-
????? ????????? ?????????, ?? ??? ???? ???? ?????????? ?????? ???????
????????? ????? shell. ????????? conv - ??? ?????????, ???????????
????, ??? ?? ???????? ???????????? ? ??????????? ???????? ??????????,
?????? ?????????? ????????? ????????? ??????? ??????????????.
??? ?????? conv?
??? ???????????????? ???????? ???????????? ??????????? ????????
????? ?? ????? ??????? ????????? ? ??????. ????? ??????????
??????????, ????????????????? ? ???????????? ??????. ?????,
?????????? ? ????? ?? ???? ????, ????? ???? ?????????? ? ????? ??
???? ?????????? ????.
????? ?????? ????????? ?????????? ?? ???????? ????. ? ???? ????
????? ???????. ????? ???? ??? ?? ????????? ????? ????? 1 ? 6,
????????? ?????? ??? ?????? ????? ??????? ?? ?????? ?????????????.
?????????? ?????????????? ? ?? ?????? ????????? ?? ????????? ???
???????? - ?????, ??????? ?? ???????????????? ? ?????, ? ???????? ???
???? ?????????????. ?????????????? ?????????????? ????? ??????
??????? ????????, ? ??????? ????? ???? ???? ?????? ? ???? ?????, ???
??? ????? ???????? conv ?????????? ?????????, ??? ?? ???????? ?? ?
???? ??????? ? ?????????? ? ??? ?? ????????, ??? ? conv.
???? ?? ??????? ???????, ?? ???????? ? ?????????????? ????????,
?? ????? ?????? ????????? ?? ?????? ? ????? ????? ???????? ???????
????.
?????????
?????? 4-66 - ??? ???? ??????? ??????????? ???? while. ??
?????????? ??????????? ????, ????? ? ?????? ?????????? ?????
????????? ????????? ? ??????? ???? ??? ?????????? ?????. ??? ????,
????? ????? ?? ?????????, ????? ???????? ????, ?.?. ????? ?? ?????.
?????? 6-17 ???????? ???? ? ?????? ????????? ??? ??????. ???? ??
?????? ??????? "????", ????????? ???????? ???? ??????.
?????? 18 ?????? ???? ? ??????????, ? ?????? 20-65 ?????????
????? ?? ??????? ??? ???? ????????. ???? ??????? ??????? (??????)
????, ?? ????????? ????????? ???? ??????.
?????? 22-28 ???????????? ??????? ????? ?? ?????????? ?
????????????????? ??????? ?????????. ????????? ??? ?????? ????????
???????? ?????? ? ???? ?? ???????, ?? ???????? ?? ?????????? ??????
?????? ??????.
????????? ??????????? ????? ? ?????? 23. ? ??????? 24-26
???????????, ?? ???? ?? ????????? ???????? ??????. ?????? 27 ????????
????????? ?????????, ??????? ???? ?? ??????? ????????? ?????? dtoh
??? ?????????????? ?????????? ????? ? ??????????????????. ????????
???????? ?? ?? ??? ???? ????????? ????????? ??????.
????????? ???? dtoh ???????????, ????????? ??????? ".". ???
???????? : "????????? ?????????, ????????? ??? ?? shell". ?????????
dtoh ?????????? ?????????? DEC ??? ????? ????? ? ??????
- 5 -
??????????????? ????? ?? ??????????? ?????. ????? ???????? ??? ?????
? ??????????, ?? ?????? ??????????, ????? ????????? ?????????,
????????? ????????? ???????????. ?????? 28 ?????? ?? ?????
?????????????? ?????????? ????? ? ?????????????????, ? ???????? ???
???? ?????????????.
???????? 2, 3, 4, 5 ? 6 ???????? ??????????. ????????????, ???
???????? - ??? ??? ??????????, ??????? ????????????? ????
?????????????? ? ???????? ?????????? ????? (???????), ???????
?????????? ??? ????? ??????????????.
?????? ??????????????
?????? ??????? ?????????? ???????? ?????? ?? ??????? ????????.
??? ?????? ??? ????????? ????? ????? shell ?????????? ??????? UNIX
bc, ????? ???????????? ?????????????? ????????? ?????? ?????????.
?????? ???????, ??? ??????? bc - ??? ???????? ??????? ? ???????
?????? ????????, ?? ??? ?? ????? ??? ????????, ? ????????????, ???
??? ?????, - ??? ??????? ?? ? ????????? ? ????????? ????.
???????? : dtoh
dtoh ?????????? ? ?????????????????.
??????????: ??????????????? ??????? ?????????? ????? ? ????????
????????????????? ?????.
?????????: $DEC="decimal_number"; HEX='.dtoh'
?????? ??????
$DEC="25";HEX='.dtoh'
$echo $HEX
????????? DEC ????????? ???????? 25, ??????? dtoh ??? ???
?????????????? ? ???????? ????????? ? HEX. ??????? ?????????? ??
?????.
???????? ????? ??? dtoh
1 :
2 # @(#) dtoh v1.0 ?????????????? ????? shell--?????????? ?
????????????????? ?????: Russ Sage
3
4 bc < HEX
$ echo "????????????????? ?????: 'cat HEX'"
??????????? () ????????? ?????????? ????????? ? ????????
????? shell. ????????? "." ??? ?? ??????????, ?? ?? ???????? ?????
?????? ? ?????????? DEC. ??????????? ????? ???????????????? ? HEX.
??? ????????????? ???????? ????????, ????????? ????????? ???????????.
????????? cat ?????????? ? ??? ???????????.
????????: dtoo
dtoo ?????????? ? ????????????
?????????? ????????? ??????? ?????????? ????? ? ????????
????????????.
?????????: DEC="decimal_number"; OCT='.dtoo'
?????? ??????
$DEC="16";OCT='.dtoo'
- 7 -
$echo $OCT
????????? DEC ????????? ???????? 16, ??????? dtoo ??? ??
?????????????? ? ???????? ????????? ? OCT. ??????? ?????????? ??
?????.
???????? ????? ??? dtoo
1 :
2 # @(#) dtoo v1.0 ?????????????? ????? shell--?????????? ?
???????????? ?????: Russ Sage
bc <
????????: htod
htod ????????????????? ? ??????????
?????????? ????????? ??????? ????????????????? ????? ? ????????
??????????.
?????????: HEX="hex_number"; DEC='.htod'
?????? ??????
$HEX="1EAC" ; DEC='.htod'
$echo $DEC
????????? HEX ????????????????? ????????, ????????????? ???,
?????????? ??????????.
???????? ????? ??? htod
1 :
2 # @(#) dtoo v1.0 ?????????????? ????? shell--?????????????????
? ?????????? ?????: Russ Sage
bc <
????????: htoo
htoo ????????????????? ? ????????????
?????????? ????????? ??????? ????????????????? ????? ? ????????
???????????.
?????????: HEX="hex_number"; OCT ='.htoo'
- 8 -
?????? ??????
$HEX="F1E" ;
$OCT='.htoo'
$echo $OCT
????????? HEX ????????????????? ????????, ????????????? ???,
?????????? ???????????? ?????.
???????? ????? ??? htoo
1 :
2 # @(#) htoo v1.0 ?????????????? ? ??????? ????? shell --
????????????????? ? ???????????? ?????: Russ Sage
bc <
????????: otod
otod ???????????? ? ??????????
??????????: ????????? ??????? ???????????? ????? ? ????????
??????????.
?????????: OCT="octal_number"; DEC = '.otod'
?????? ??????
$OCT="777" ;
$DEC='.ot
$echo $DECod'
????????? OCT ???????????? ?????, ????????????? ??? ? ??????????,
?????????? ?????????.
???????? ????? ??? otod
1 :
2 # @(#) otod v1.0 ?????????????? ????? shell--???????????? ?
?????????? ?????: Russ Sage
- 9 -
bc <
????????: otoh
otoh ???????????? ? ?????????????????
??????????: ????????? ??????? ???????????? ????? ? ????????
?????????????????.
?????????: OCT="octal_number"; HEX = '.otoh'
?????? ??????
$OCT="777" ;
$DEC='.otoh'
$echo $HEX
????????? OCT ???????????? ?????, ????????????? ???????? OCT ?
?????????????????, ???????? otoh. ????????? ????????? ??????????????
HEX, ?????????? ???????? HEX.
???????? ????? ??? otoh
1 :
2 # @(#) otoh v1.0 ?????????????? ? ??????? ????? shell --
???????????? ? ?????????????????
?????: Russ Sage
bc < idfile
??????? ls ??????????? ??? ???????? shell, ????????? ???????????
(). ???????? shell ?????????? ? ??????? ?????, ????????? ?????? & .
????? ????????? ???????? id ?????????, ?? ???????????? ? ???? ??????
????????? ????? shell, ??????? ??? ?????????. ?? ?????? ????????????-
?? ??????????? ?????? ? ???? ? ???????? ?????! ?????? ?? ????? ???-
???? ???-?????? ????:
$ kill -9 'cat idfile'
??? ??????? id, ?????????? kill, ???????????? ?? ??????? cat, ???????
???????? ??????? id, ??????????? ?????. ??? ????? ???? ??????????
????? "kill self", ??? ??? ????? ??????????? ?? id, ????? ??? ??
???????? ??? ??????. ????????? watch, ??????? ?? ?????? ? ????? 6
?????? ????? ????????.
?????????? ????
???????? vi ?????? ?? ??? ???, ???? ??? ?? ????? ??????
?????????? ?????????????? ?????? ??? ?????????????? ? ?????????
??????. Sed ???? ???????? ????????, ?? ? ??? ?? ?????????????
??????????? ??????????? ?? ?????. Sed ????? ???????????? ??????
?????? ?? ????? ?? ????? ?????. ??? ???? ???????? ????? ??????
???????? ???????? ed.
? ?????????? ed
?d ???????? ????????????? ?????????? ? ? ??? ???? ???
??????????? ??? ????????? ?????????. ????????? ?? ?????? ???????????
???? ??? ????? ??????, ?? ????? ???????? ? stdin ?????????? ????? ???
- 12 -
?????????? ?????????? ??????????. ?d ?????? ???????, ??? ???? ?? ???
???? ???? ? ??????????. ?? ?? ?????, ??? ??????? ? ????????? ??????.
??? ????????? ?????????? ????? ?????? ????????????? ????
?????????????? ?????????????? ? ????????? ??????.
? ???????? ??????? ?????????? ????????? ?????????. ???????, ???
??? ??????????? ??????? ? ????? shell ?????? ???? ????????? ? ?????-
??, ???????? $. ???? ??? ?? ????????? ? ???????, ?? ???? ????? ?????-
???????.
ed file << -!
1, $s/^ *//
w
q
!
? ???? ??????? ????????????? ???? ??? ????????? "file" ? ??? ???
??????????? ????????? ??????. ?????? ??????? ??????? "?? ??????
?????? ?? ?????????, ??? ?????? ??????, ??????? ?????? ??????? ?
?????? ??????, ?? ???????? ??????? ????? ?????????? ????? ??
????????, ???????? ??? ??????? "?????". ???????? ???? ? ???????." ???
????????? ??????? ??????? ?? ?????? ??????.
? ?????? a.out
??????????? ??????????? ?????? ????? ????? ????????????, ?????
???????????????? ?????? ????????. ??? ????? ???????? ??????? ??????,
???????????, ????? ????????? ????????? ???????? ??????, ? ?????????
?? ? ????? ?????????. (??? ????? ????? ?????????? ???????? ??????????
??? ?????????? ???????? ??? PC).
? ????????? ??????? ??????????? ???? a.out ??????????? ???
???????? shell. ??? ???? ??????? ?? ?????? ?????, ? ????? ??????????
??????? more, ??? ??? ?? ????? ??????? ???????????? ?????.
$ (a.out < text
> input
> lines
> !
) | more
??? ????? ?????????? ??????????????? ? ??????????. ?? ??????????
??????? ??????, ?????????, ???? ??????????????? ???????? ???? ???,
shell ????? ???????? ????????? PS2 ?????? ?? ????? !, ????? ????????
???????. ????????????, ??? ?? ????? ???????, ????? ?? ?? ?????
????????????? - ??? ?????????? ??????????? ????, ??????? ??? ??
??????? ????.
C ???????? ????? shell
?????? ????? shell - ??? ???? ?? ????? ??????? ???????? ?????-
???? ????? ? ????????????????????? ?????????. ???? ??????? ? ???, ???
?? ?????????? ????????? ???? ????? shell, ????? ????????? ?????????
?????. ???? ????? ????? ???? ??????????, ????????? ?????? ??? ????
???????? ??????? ?????????.
?? ?????????? ??????????? ??????????? ??????, ????? ????????
????? ? shell, ??????? ????? ?????????? ??? ? ???????????????? ?????.
???? ???????? ?????? ??????, ??????? ????? ???? ? ?????.
$ cat archive
- 13 -
#
# ??? ???????? ???? ????????? ?????? 1, 2 ? 3
#
echo "????????? ????????? ???? 1"
cat > text1.sh << !
#
# ??? ?????? ?????????? ????? 1
#
who | sort
!
echo "????????? ????????? ???? 2"
cat > text2 << !
??? ?????????? ??????? ?????. ??? ?? ?????????, ? ?????? ?????.
????????, ??? ??? ?? ????? ????? ???????????, ?????? ???
?????????? shell ?????, ??? ??? ????. ?? ?? ????????? ?????????
text2, ?.?. ? ??? ??? ????? ?????? ?? ?????????.
!
echo "????????? ????????? ???? 1"
cat > text3.c << !
/* ??? ?????????? ????? 3, ?? ????????? */
main()
{
printf("hello world");
}
!
#
# ????? ????????? ?????
#
??? ?????????? ????? ???????? ????? ??? ??????? cat. ?????? ??-
????? cat ??????? ???? text1.sh (????????? ???? ????? shell), text2
(??????? ?????) ? text3.c (??-?????????). ??? ??? ??????????? ?????
????, ??? ?? ???????? ?? ?????????? "archive". ??? ??????, ???? ?????
????????? ????? ? ?????? ?????. ?????? ???? ????? ?????????? ??? ???-
??, ??? ????? ????????? ????. ?????? ???? ??????, ??????????? ??????,
? ??? ??? ???????? ???????????? ?????, ?????? ?? ??????? ???????????-
???? ???? ??? ??????? ??????. ????? ???????, ??? ?? ???????? ??????,
??????? ??????????? ????? ????? ? ????? ???? ???????.
?????????? ???????? ?????
?????? ???????? ????????? ????? ????? ????????? ???????????
???????, ????? ??? ???????? ????? ????????????. ??? ?????????? ??
?????, ?????? ?????? ????????, ????? ?? ?????? ???????? ????????????
???????????? ?????????. ? ??????? 10-1 ????????? ??? ?????? ???????
??????? ??????? ????? while "????????". ???????, ??? shell ????
???????? ?????? ?????? - ?????? (0) ?? ????????? ?????????
??????????? ???????.
??????? 10-1
??????? ????????? ???? ???? "????????"
+--------------+----------------------------------------+
| ???? | ??????? ?? ????????? "??????" |
- 14 -
+--------------+----------------------------------------+
|while true |True - ??? ??????? ? /bin, ??????? ???-|
| |??????? ?????? 0 |
|while[1 -eq 1]|?? ?????????? ????? ???????? ???????, |
| |????? ?????????? ?????? 0 |
|while : |?? ?????????? ?????????? ??????????? |
| |shell'?, ????? ?????????? ?????? 0 |
+--------------+----------------------------------------+
??????? ? ?????????
????? ? ???? ????? ??? ??? ???? ? ????????. ?? ??? ???????
???????? ????????? ??? ????? ???? ???????????? ? ???????? ????????.
????????? ??????????? ??????? - ??? ???????, ??????? ????? ???? ??
?????????? ????????? ??????, ???? ??? ????. ????? ???? ???????? ??
???????????? ?????.
?????? ??? ??????? ?? ????? ??????????? ??? ???????? ??????, ???
??? ?? ????????????? ??? ?????. ???????, ????????, ls. ??? ?????? ls?
??? ?????? ?????? ?????? ? ??????? ????????. ???? ?? ??????? "ls
file", ?? ?????? ?????????? ?????? ??? ????? ?????. ???? ?? ???????
"echo file | ls", ls ?? ???? ?????????? ? ?????, ?? ?????? ??????
?????? ? ??????? ????????, ?????? ??? ls ?? ??????? ? ???????????
????, ???? ? ????????? ?????? ??? ??????????.
???? ?????? ??????, ????????? ? ????????? - ??? ?????? ?? ??????.
???? ?? ????????? ??? ????? ? ????????? ??????, ?????? ????????? ????
? ?????? ??????. ???????, ??? ??????? ????? ?????? ??????. ???? ??
????????????? ??????????? ???? ? ???????, ?? ??????, ??? ??, ??? ??
?????? ?? ???????????? ??????- ??? ??????. ???? ?? ?????? ???????
????? ??????, ?? ?? ???????? ???? ??????????, ??????? ????????.
??????? ?????????? ????????? ????????. ??????? UNIX wc - ??? ??????.
?? ????? ???????? ?? ??? "wc file1 file2 file3", ????? ??? ??????????
????? ? ???? ??????. ??? ???? ??, ???? ?? ?? ???????: "ls file1 file2
file3 | wc" ? Wc ?????????? ?? ????? ????????, ??????? ?????? ?? ls.
? ?????? ?????? ? ?????? file1, file2, ? file3 - 15 ????????. ??? ???
???????? ???????? ???????? ??????, ? ?? ????? ?????? ? wc? ???????
??????, ??????? ?? ???????? wc:
cat file1 file2 file3 | w?
????? ???????????????? ?????????? ??????, ?????? ?????????? ??
???? wc, ? wc ????????? ???????????? ????? ????????, ???????????
??????. ?? ?? ????? ????????? ????????? ??? ???? ?????? ????????. ???
????? ???????? ???????? ???????? awk. ?? ????? ??????? "awk file", ?
??????? ????????? ?????????? ?????, ??? "cat file | awk", ? ???????
????? ?? ?????????. ?? ?? ????? ???????????? ????????? "ls file | awk",
?.?. awk ????????? ???? ????????? ?????? ??? ????????? ? ?????
"file".
??????????/??????????? ???????????????? ?? ????? shell
? ???? ??????? ?? ?????????? ????????? ???????? ????? shell. ??
????? ???? ?? ????, ?????? ??????????? ??? ??????? ??? ???????????.
??? ?? shell ???????? ? ????? ?? ?? ?? ????? ????.
????????? ??? ??????????????? ??????
1 :
2 # @(#) ??????????????? ?????????? ???????? ?????????? ? ????,
?????????????? ? ???????????? ??????
3
4 N=1
5 echo "????????? ???????? N = $N"
6
7 echo "1n2n3" | while read LINE
8 do
9 N=2
10 echo "???????? ? ????? N = $N"
11 done
12
13 echo "???????? ???????? N = $N"
????????? ??????????, ??? ????????? ??????????, ????????? ? ??-
?????? ?????? shell, ?? ???????????????? ?? ?? ?????????. ?????? 4
??????????? N ????????? ??????? 1. ????? ???????? N ???????????? ?
?????? 5 ??? ????????. ??? ???????? ???? ????????? ????????? ? ??????
5. ?? ?????????? ??????? "1 ????? ?????? 2 ????? ?????? 3" ? ????-
??????? ????? ? ???? ??? ?? ???? ????? while. ????? ???????, ??
?????????? ???? ????????? ??? ????????. ??????????? ????? ? ????????-
???? ??????, ?? ??????? ???????? shell, ????? ????????? ???? while.
?????? ????? while ?? ???????? ???????? N ? ???????? ??? ??? ??????-
??.
? ????? ????? ?? ???????? ????????????? ???????? N. ??? ??????
?? ????? 2 ??? ??? ???? ?????? ?????, ? ????? 1, ??? ??? ???? ?????
??????? ??????????. ???? ??????????? ?????? ??????? ???? ?????????.
$ redir
???????? ???????? N = 1
???????? ? ????? N = 2
???????? ? ????? N = 2
???????? ? ????? N = 2
???????? ??????? N = 1
??? ??????????, ??? ???????? ?????????? ?????????? ???? ?????????
????? shell, ?? ????????? ? ???????? shell ?? ?????????? ???????????-
??.
???????????? ??? ????????
?????? shell ?????, ???????? ?? ??????????? ?? ??? ???? ????
????????? ?? ??? ?????? ????????. ?????? ???????????, ??? ???
????????, ????? ?????? ???????? ???? ?????????.
????????:
1 :
2 # @(#) ?????? ???? ????????
3
4 echo "??????? ??????? : ?"
5 read CMD
6
7 eval $CMD
8 echo "$? = $?"
9
10 if [ $? -eq 0 ]
11 then echo ??????? ????? - $?
12 else echo ?????? ????? - $?
13 fi
????????? ?????????? ? ????, ??? ? ?????? 4 ??? ????????
????????? ??? ???????? ???????. ??????? ????????, ?????? 7 ?????????
?? ????????? ?? ?? ?????????????? ?????????? ? ????????? ??. ???????,
??? ??? ????? ??????? ???????? ? ??? ??????, ???? ???-?????? ??????
???-?? ???? "echo $HOME". ???? ??????? eval ???, ?? ??????????
- 16 -
??????????? ?????? $HOME. ????? ??????? eval ??????????
?????????????? ???????? $HOME. ??? ??? ??? ?????????? ????????????
??????? eval ? ???? ????????. ????? ???? ??? ??????? ????????? ??????
???????? ?????? ??????, ???????? ?? $?. ??? ?????????? ?????????.
?????? 10 ????? ?????????? ???????? ???????, ????? ?????????
???????????? ? ??????????? ?? ???? ????????. ??? ? ???? ?? ?????, ???
??????. ????????, ??????? ????? ???????? ??????? ?? ????????? ? ???,
??????? ???????? ???.
$ status
??????? ???????: ls -z
ls : illegal option --z
usage : -1ACFRabcdfglmnopqrstux [files]
$? = 2
??????? ????? - 0
??? ??????????, ??? ls ????????? ? ????????? ??????. Ls
????????? ???? ????????? ?? ?????? ? ????????? ??? ???????? ?????? 2.
?????? ???????? ??????? ????? $? ??? ???????? 0 ? ???????? ?????
??????. ?????? ?? ?? ????? ?????? ? ?????? 8 ????????? ? ??? ???????
???? ??? ????????? ??????? ?? ???????.
???????? ????????? Vi
???? ?? ????? ????????????? ???????????? UNIX - ??? ???????????
????? ?? ??????? ???, ????? ?? ????? ????????? ?????? ??????? ???
????? shell. ??? ???? ??????????? ?????? UNIX ? ???????? ??????? ?
?????? ?????????. ????????????? ????????? ???????, ????????? ???? ??-
??? ??????? ?????????? ????????? ????? ??????? ? ???????.
??????????? ? shell
??????????? ? shell - ????? ???????? ??????????? ? ????????? vi.
?? ?????? ???????? ???? ????????? ? ?????????, ????? ?? ????,
????????? ?????????, ????????? ????? ? ???????? ? ?.?. ???? ????
?????????????? - ?????????? - ???????? ????? ???? ???????? ??
?????????. ? ????? ????????????? ????? ? ?????? ?? ????????? ??
?????? ????????? ????? ?????? ??? ????????? ??????????? ?????????.
???????? vi ????? ???????? ?????????? ex. Vi - ??? ??????????
????? ex. ?????????????, ?? ?????? ????? ? shell ????? ??????.
?????? - ????????? ?????????? sh, ??????? ??????????? ?
????????? ex. ?? ?????? ???????
: sh
???? ?? ? vi ??? ?????? "sh", ???? ?? ? ex. ???????? ????? ????????
shell, ??????? ?? ?????????? ? ?????????? sh. ?????? ???????? ?????
????? shell ?? ??????????? ??? ????? ?????????? ?? ???????????????
?????????? ????????? ????? shell. ???? ??? shell - /bin/sh, ? ?? ??-
???? ????????? /bin/shV, ?? ?????? ?????????????? ???????? ??????????,
????????? ":set sh=/bin/shV"
?????? ?????? ?????? ?? vi - ??? ? ?????????????? ??????????:
:!sh
??? "sh" ???? ??? shell (/bin/sh). ???????? ????????, ??? ??????????.
?? ?????????? shell (??????????? ?? :!), ???????? ???? ???????
????????? shell (:!sh). ????? ??, ???????, ????????? ???? shell,
??????????, ??? ? ??? ??????? ?????? shell. ??? ????? ????????
???????????? ? ???????? ps, ??????????? ????
- 17 -
UID PID PPID C STIME TTY TIME COMMAND
russ 35 1 0 Jul 5 co 0:50 -shv
russ 1233 35 0 04:30:15 co 0:57 vi file
russ 1237 1233 0 04:43:13 co 0:01 sh -c sh
russ 1238 1237 0 04:43:15 co 0:02 sh
? ??????? ?????? ??? ???????. ?? vi ?? ????????? shell ? ??????
-? ??? ??????? ????? shell . ??? ??????????? ????? ?????? shell! ?
???? ???????????? ????????? ???? ????????? ??? ?????? ":sh", ?? ?????
???????? ?? ?????????.
????????? Escape
????? ????, ??? ???????? vi ????? ???????? ?? Esc, ??
???????????? ????????? ?????? ??????????? ??? ??????. ???????
?????????? ????????????? ??????, ???????????????? ???????? ?????
????????? ??? ??? ??????? ????? ??????. ?????? ??????? ?????????? -
":!cmd", ??????? ???????? ????????? ??? ??????? ????? ??????? ???
?????????. ? ???? ?????? ??????? ????? ???? ????? ???????? ???????
(1).
?????? ??????? ?????????? - ??? ":!!". ??? ???????? ????? (:!) ?
???????????? ????????? ????????? ?????? ??? ???????? ??? ??????? ?
????? ????? shell. ????????, ???? ?? ???????: ":!ls", ????? ":!!",
:ls ????? ???????? ?????. ?????? ! ????????? ?? ???? ?????????? ??-
??????? ??????.
?????? ??????? ?????????? - ??? ":!%". ??? ???????? ????? (:!) ?
????????? ???????, ??? ??????? ???????? ?????? ????? ????? (%). ?????
?? ????????? ??????? ???????, % - ?????????? ?????? ?????, ??? ?????
?????? ??? ?????????????? ????????? ??????. ?? ?????? ???????
???-?????? ????:
$ vi tool
. . . edit . . .
:w
?? ????????? vi ? ?????? ?????, ??? ??? vi ?????????? ???
"tool" ? ????? ??????. ?? ?????? ???????? ???-?? ????? ??? ?
?????????, ???????? ????????? ?? ????, ????? ????????? ????? ?????
?????. ???????? ????????? ???? ? ?????? "tool" ? ????????? ???. ?????
?? ???????? ?? ???????????? ????? "tool", ?? ????????? ????? ?
????????, ??????? ?????? ????????? ? ????? ? ????????? ?????????
?????.
???? ?? ??????? ??????????????????? - ??? ??????????????? ????,
??????? ?????????, ???????? ??, ????????? ????, ????????? %, ??????
????????? ??? ???, ????????????? ?????????, ????????? :!!, ???
????????????? ????????? ??????? escape, :!% . ????? ??????? ????
??????? ? ???????? ????????? ???????? ??? ??????? ??????????, :!!.
?? ???? ????? ???????????? ??? ??????????? ??? ??????????
???????? ?? ?. ???? ? ??? ???? ????????? ????, ??????? ??????????
"cg" (????????? ??????????) ?? ????? ????? ???????????? vi:
F = 'echo $ 1 | sed -e "s/^(.*).c$/1"'
cc $1 -o $F
????? ?? ????? ????????? ?????????????????? ?????? ????:
$ vi test.c
...edit...
:!cg %
??? ?? ?? ????? ??????
- 18 -
: !cg test.c
? ????????????? ????????? ???????????? ?????? "test".
???????
?????? ??????????? vi, ??????? ???????????? ??????? ?????, - ???
???????? ????????. ???? ??????? ??????? ??????? ????? ??? ????, ?????
????? ???? ???????? ??????? ?????????????? ? ??????????? ????????,
??????? ????? ????????????. ????? ??????? ?????? ????, ?????
???????????? ????????? ????? ? ?????, ?? ?????? ??????????? ??????.
???? ???????? ?????? ????????????????:
i
s/^[^ ]*/ [^ ]*/
"add
@a
??????? ????? ??????? ? ????? ???????, ????? ?? ????? ?????????
??????? ? ??? ???? ?????????. ?? ???????? ??????? ??????????? ?
???????? ESC, ????? ????????? ?????? ? ?????? ???????. ???????
??????????? ??????? "? ???????, ??????? ?????????? ? ?????????
???????, ?? ??????? ??????? ???? ??? ????????? ???????? ?????? ??
????, ????????? ?????? ????? ???????? ??????????????????? ????????".
????? ?? ???????? "add", ??? "?" ?????????? ??????????? ??????? a ?
dd ?????????? ??????????? ?????? ? ?????. ?????? ?????? ???????????
????????? ? ?????? ?. ????? ?? ????????? ?? ?????? ?????????? @a ?
????????? ?????? vi.
????? ????? ?? ????? ????????? ?? ?? ??????????????????
????????, ?? ????????? ??????? ????
:!ps -ef
? ???????? ? ?????????? ?? ? ?????. ?????, ????? ?? ??????? @a, ??
?????? ? shell ? ????????? ??????? ps. ??????? ?????? ???? ?????
???????? ? ??????????? ?????? ?? a-z.
????????? ?????? ????????????? ???????? ??? ????????? ?????? - ???
????? ??????? map. ??? ??????? ???? ? ex ? ?????????? ??????????????
?????????? : ?? vi. ????????? ??? ??????? map ???????? ???:
:map lhs rhs
??? ????????????? ??????????? ????? ??????? ?? ?????? ???????.
?????? ?????????? ???????? ???:
:map w :!who^M
?????? ?????? ???, ????? ?? ????????? w, ????? ???????????
???????? ?????? ????? ex, ?????????? ??????? who, ????? ??????????
??????? ???????, ??????? ?????????? ??? ??? ?????????????????? ??
??????????. ??? ??? ?? ?????? ??????? ??????????.
????? ??????? ??????????, ????? ??? ???????? ?????
?????????????? ???????. Vi ?????????? ? ?????????????? ???????? ?? #0
-#9. ?????? ?? ????? ??????????????? ?????????????? ??????? ???
?????? ??????. ??????? ?????????? ?????:
:map #1 :!ps -ef^
?????? ???, ????? ?? ????????? ?????????????? ??????? F1,
- 19 -
??????????? ??????? ps -ef.
??????? "One-Liners" - ?????????, ?? ??????
????????? ?????? - ??? ???????? ??????? ??????, ??????????????
????? ???????, ????? ???????? ?????? ??????. ??? ?????? ????????
?????????, ??????? ??????? ?????? ??????, ?????? UNIX ????? ?????
??????? ?????? ????????? ??????? ?????? ? ??????? ?????????????
???????. ????????? ??????, ??????? ????? ???????????? ????, ?????
????????? ? ?????? ?????? ???? ?????, ?? ??? ?????????? ?????
???????? ??? ?????????? ??????.
?????? ???????????? ? ???????????? ? ????????, ??????? ????????
???????? ? ?????? ??????, ??????, ?????? ?????? ???????? ?????
??????? ???, ????????, ? ?????? ???????????? ??????, ????? ?? ? ????
?????? ?????? ?????? ???????. ????????, ??? ????????? ?? ???? ??????
???????? ???????????? ????????? UNIX, ? ?? ????? ??? ?????? - ???
????????? ????? ? ?????????, ?????????????? ????? ? ???? ?????.
ACCTCOM
* ????????? ??? ???? ??????? ??????????, ??????? ? ????????? ???????.
acctcom -b -u$LOGNAME
* ???????? ??? ??????? ??????, ?????????? ? ?????? ????????? ? ????,
??????? ??????? ??? ?????????????????
acctcom -u# -l'tty'
BANNER
* ?????????? ????????? ?? ???? ???????
banner "line 1" "line2" "line3"
* ?????????? ???? ?????? ? ???? ?? ????? ??????, ????? ?? ??????
banner "'date|cut -d' ' -f1,3'" "'date|cut -d''-f4'"
* ??????? ????????? ?? ????? ??????? ????????????
banner "??????" "???" > /dev/tty01
BASENAME
* ???????? ????
echo "? ?? ??????????? 'basename'tty' ' ''
BC
* ???????? ??????? ?? ???? ??????? bc, ??????? ?????? ?????????
????????? ? ???????? ????????? PROD
PROD = 'echo $NUM1 * $NUM2 | bc'
CAT
- 20 -
* ???????? ??????? ? ?????????? ? ????
cat > file (???????? ???? ?? ?????????? ?????? ^D
??? ??????????? ??????)
* ???????? ???? ?? ??????????? "???????? ?????"
cat << -!
??? ??????? ??????, ??????? ?????????? ?? ?????? !
CC
* ????????????? ?????????? ? ??????? ?????? ?? ????? ?????????
??????
cc file1.c & cc file2 & cc file3.c &
CD
* ??????? ? ???????, ? ??????? ????????? ????
cd '??? ??????????'???? ????''
* ??????? ? ???????, ??????? ??????? ? ??????????
DESTINATION="/usr/bin"
cd $DESTINATION
* ??????? ? ???????, ?????????? ? ?????
cd 'cat dest_file'
CHMOD
* ???????? ??? ?????????? ?????
chmod +x file
* ???????? ??? ????? ?????????????? ???????????? ? ?????????
???? ?????????? ?????
chmod 4755 file
* ?????????? ??? sticky ?? ?????????? ?????????
chmod 1755 file
CHOWN
* ?????????? ???? ?????????? ?????
chown $LOGMAME files
* ?? ?? ????? ?????? ????????
chown 'who am i| cut -d' '-f1' files
* ???????? ????? ????????????? ??? ??????
- 21 -
cd dest
find . -print | sort | while read FILE
do
chown russ $FILE
done
CP
* ??????????? ??? ?????? ?????? ? ???? ???????? /tmp
cp */*/* /tmp
* ?? ?? ????? ?????? ????????
cp 'find . -type f -print' /tmp
* ??????????? ???????????????? ???????????
cp -z
CPIO
* ??????????? ?????? ??????? ?????? ? ????? ??????????????
cd $SRC
find .-print | sort | cpio -pdv $DEST
* ??????????? ?????? ??????? ?????? ?? ?????? ????
cd $HOME
find .-print | sort | cpio -ocBv > /dev/rfd0
* ???????????? ????? ?? ????????
cd $DEST
cpio -icBvt < /dev/rfd0
* ????????? "ls -l" ?? ????? ????????
cpio -icBvt < /dev/rfd0
CRON
* ????????? ??? ????????? ????????? ? ??????? ?????? ???????
? 6:00 a.m.
0 6 * * 4 /usr/russ/bin/status_msg
* chmod ?? ???? ???????
* * * * * /bin/su root -c "chmod 777 /etc/passwd"
CU
* ??????????????? ?????????? ????????????????? ????? ?? ????????
1200 ???
cu -ltty00 dir
* ??????????????? ?????????? ? ????????????????? ????? ?? ????????
9600 ???
cu -ltty00 -s9600 dir
* ????????????? ??????? ?????? ???????, ????????? ??????????
dial/modem
cu -acua0 555-1212
- 22 -
CUT
* ?????? ?????? ???? ?? ????? passwd
cut -d: -f1 /etc/passwd
* ?????? ??? ?? ???????? ??????? who
who | cut -d' ' -f1
who | awk '{print $1}
DD
* ?????? ?????? ????? ??????? ?? ????????
dd if = /dev/fd0 of=/dev/fd1
DOS
* ??????????? ??? ????? ??????? ???????? ?? ??????? DOS
doscp * a:
* ??????????? ??? ????? ? ??????? DOS ? ?????? ???????
dosls a: > /tmp/dosf
for FILE in 'cat /tmp/dosf'
do
doscp a:$FILE
done
DU
* ?????? ????? ?????????? ?????? ??? ???? ????????? ? /
du -s /*
* ?????????? ?????????? ??????????????? ????? ? ????????
??????? ????????????
echo "total bytes: 'expr'du -s $1' * 512'"
ECHO
* ?????????? ???????? ?????????? shell'?
echo $PATH $CDPATH
* ?????????? ????? ?????????? ? ??????? ???????
echo " ??? ??? $LOGNAME ???
'logname' ??? 'who am i|cut -d' ' -f1'"
* ?????????? ??????? ????????? ? ???????? ? ???
echo "nt ??? ???????? ? ????????"
echo \n\t ??? ???????? ??? ???????
* ?????????? ? ???????? ?????? ? ????? ??? ?? ??????
- 23 -
echo -n "prompt: "
echo "prompt: c"
ED
* ????????? ed ???????????? ? ????????????
"???????? ?????"
ed /etc/passwd <<-!
1,$p
g/root/s//noroot
w
q
!
EXPR
* ???????? ??? ?????
expr 512 * 1024
* ????????? ?????????? ?? ???????????????? ????????
x = 0; INC = 5
X='expr $X + $INC'
FILE
* ????? ??? ????????? ?????
file * | fgrep text
* ?????????? ????? ?????? ????????? ??????
file * | fgrep text | cut -d: -f1
* more ??? ????????? ?????
more 'file * | fgrep text | cut -d: -f1'
FIND
* ????? ??? ????? ? ???????
find / -print | sort
* ????? ??? ????? ? ??????????? ?????? ? ??????? long
find / -exec ls -ld {} ;
* ?????????? ????? ???? ?????????? ??????
find / -type f print
* ??????? ??? ???????? ? ???????????? ??????????
find / -type d print | while read DIR
do
echo "listing $DIR"
ls $DIR
done
* ??????? ??? ?????, ??????? ???? ?????????????? ? ?????????
24 ???? ? ???????????? ?? ?????? ? ??????? long
find / -atime -0 -exec ls -ld {} ;
- 24 -
* ??????? ??? ????? setuid ? setgid
find / -perm -4000 -o -perm -2000 -exec ls -ld {} ;
FINGER
* ??????? ???? ?????????????, ???????? ?? ???????
finger 'who | cut -d' ' -f1'
* ??????? ???? ????????????? ? ????? passwd
cut -d: -f1 /etc/passwd | while read NAME
do
finger $NAME
done
GREP
* ????? ?????? ???????????? ????????????????? ????? ? ?????
??????
od -x datafile | grep 'A3F09'
* ????? ???? ??? ? ???????
find / -type f print | while read FILE
do
grep "russ" $FILE /dev/null
done
HEAD
* ?????????? ??? ????????? ????? ? ??????? ????????
file * | fgrep text | cut -d: -f1 | while read FILE
do
echo "--------"
echo "$FILE"
echo "--------"
head "$FILE"
ID
* ??????????, ??? ? ?????? ?????? ???????? ??????????????????
if [ "'id'" = "uid=0(root) gid=0(root)" ]
then echo "you are root"
fi
* ?? ?? ????? ?????? ????????
if id | fgrep root > /dev/null
then echo "you are root"
fi
KILL
* ?????????? ???? (?????????)
kill -9 0
kill -9 $$
* ????????? ?????? ???????
kill -1 1
* ?????????? ????????? ???????, ?????????? ? ??????? ??????
kill -9 $!
- 25 -
* ?????????? ???????, ????????????? ???????? ????????? ? ?????
kill -9 'cat idfile'
LINE
* ????? ?????? ? ?????????
LINE='line < /dev/tty'
* ????? ?????? ?? ???????????? ?????
cat datafile | while LINE = 'line'
do
echo $LINE
done
LOGIN
* ??????? ?? ??????????????? ????????? login ???
login: ^d
login:
* ???????? ????????? ?????????? ??????????
(????????? strings - ??? BSD)
strings /bin/login | more
LOGNAME
* ?????????? ?????????? ? ????? ??????
grep '^'logname ':' /etc/passwd
* ???????? ?????????? ? ????? ????????
ps -fu 'logname'
LS
* ?????? ?????? ??????? ??????
ls -ad .*
* ?????? ?????? ????? ? ??????
ls -l file
* ?????? ?????? ????? ? ??????
ls -s file
* ?????? ?????????? ? ?????? ??????? ?? ?????? ????
???????????????????? ? ???????
ls -li 'who |sed "s/^[^ ]* *([^ ]*) .*$//dev/1/p"'
* ???????? ?????? ?? ???????????? ???????
ls -z
* ?????? ?????? ?????? ?????????
ls -al |grep "^d"
MAIL
* ??????? ????? ???? ?????????????
- 26 -
cut -d: -f1 |while read USER
do
echo "mailing to $USER"
mail $USER
done
* ??????? ????? ?? ?????
mail russ < /etc/passwd
* ??????? ????? ?? ???????????? ??????
echo "??? ????? ?????" | mail russ
MORE
* ?????????? ??? ????? ???????? ????????
more *
* ?????????? 10 ????? ?? ???
more -10 file
cat file | more -10
MKDIR
* ?????????? ?? ???????????? ???????
while :
do
mkdir x
cd x
done
* ?? ?? ????? ?????? ????????
PATH="x"
while :
do
mkdir $PATH
PATH="$PATH/x"
done
NCHECK
* ????? ??? ?????, ?????????????? ? vi
ls -li /bin/vi
40 -rwwx--x--t 1109344 Feb 14 1985 /bin/vi
ncheck -i 40 /dev/root
* ????? ??? ????? ????????? ?????????????? ????????????
ncheck -s
NM
* ?????????? ?????????? ??????? ???? nonstripped
??????????? ??????
nm 'file *| grep "not stripped"|sed "s/^(.*):.*$/1/"
OD
* ?????????? ??????? ? ?????? ?????? ? ??????? ????????
- 27 -
od -c .
* ?????????? ???????? ?????????????? ??????, ??????????
??????, ?.?.?.
od -cb (??????? ?????????? ??????)
^d (???????? ??????)
(??????? ???-?????? ???)
^d (???????? ????????? ??????)
^d (???????? ?? od)
* ??????? ???? ????? ?? ????????
od -c /dev/rfd0
* ??????? ???? ???????? ???????
od -c /dev/root
PASSWD
* ??? ????????????????? ?? ?????? ?????????? ? ???????? ??????
????? ??????
# passwd russ
Changing password for russ
(????????? ?????? ??? russ)
Enter new password (minimum of 5 characters)
(??????? ????? ?????? (??????? 5 ????????))
Please use combination of upper, lowercase letters
and numbers
(??????? ???????????? ?????????? ????? ? ???? ?
??????? ? ?????? ?????????)
New password: junk
(????? ??????: junk)
Re-enter new password: junk
(????? ??????: junk)
#
* ??? ??????? ???????????? ?? ?????? ?????? ??????? ?????? ? ??????
?????????????? ??????????? ? ??????????? ?? ?????
$ passwd russ
Changing password for russ
(????????? ?????? ??? russ)
Enter new password (minimum of 5 characters)
(??????? ????? ?????? (??????? 5 ????????))
Please use combination of upper, lowercase letters
and numbers
(??????? ???????????? ?????????? ????? ? ???? ?
??????? ? ?????? ?????????)
New password: junk
(????? ??????: junk)
Too short. Password unchanged.
(??????? ????????. ?????? ?? ???????)
$
PR
* ??????? ??????????????? ?????? ???? ??????
ls $@ | pr -5t
* ?????????? ????? ?? ??????
- 28 -
pr 'find . -name "*.c" -print | sort'
PS
* ?????????? ?????? ?????????? ??? ???? ???????? ?????????
ps -aef
* ?????????? ?????????? ??? ???? ?????????, ???????????
????? ??????????
ps -f
* ?????????? ?????????? ? ?????????, ????????? ? ?????????? tty00
ps -ft00
* ?????????? ?????????? ? ?????????, ????????? ? ????????????? russ
ps -furuss
* BSD ????????? ??? ?????? ???? ?????????
ps -aux
* BSD ????????? ??? ?????? ???? ?????????, ????????? ?
???????????? ???????????
ps -xut00
PWD
* ????????? ??????? ??????? ???????
PWD='pwd'
* ????????? ? ????? ??????????? ??????? ???????
cd $PWD
RM
* ??????? ??? ?????, ????? ????????? ? ???????
rm *
* ??????? ?????? ????????
rmdir dirs
* ??????? ????????, ??????? ?????
rm -r dirs
* ??????? ??? ????? ? ??????, ????? ??????? ?? ?????
???????? ??????? ????????
rm -rf *
* ??????? ?????? ???? ? ??????? ?? ???????????
rm -rf /
SH
* ????????? ?????? ???????????
for ELEMENT in 'cat /etc/motd'
do
- 29 -
echo $ELEMENT
done
* ????????? ?????? ?????????
cat /etc/motd | while read LINE
do
echo $LINE
done
* ???? ???? - ???????? (while-forever)
while :
do
echo $PS1
read CMD
case $CMD in
"") break;;
esac
done
* ??????????? ???? while
read CMD
while [ "$CMD" != ""]
do
case $CMD in
user-cmd) do_it;;
esac
echo $PS1
read CMD
done
* ????????????? ????????? ????? ??? ?????????
??????????
trap "echo trapping; kill $$" 2 3 15
* ???????? ?? ????? shell ??????????? ?????????
exit
eof character (usually control -d)
kill -9 0
kill -9 $$
STTY
* ?????????? ??? ???? ?????????
stty -a
* ?????????? ???????????? ?????????
??????? ?????????
stty -a < /dev/tty01
* ?????????? ???????? ??? ?? ?????? ???????? ???
??????? ?????????
stty 300 < /dev/tty01
* ??????????? ?????????? control-A ??? ???????
??????????
stty intr ^a
* ???????? ???-????????????? ?????????
stty -echo
- 30 -
SU
* ???????? ???? ??? ??????????? ?????? ???????
awk '{FS =":"; print $1,$5} '/etc/passwd|while read N C
do
echo "n$Nt$C"
su $N
done
TAIL
* ?????????? ? ???????? ??????? ?????? ?????????? ?????
????? ? ??????? (logfile) uucp
tail -f /usr/spool/uucp/LOGFILE
* ?????????? ????????? ?????? ?????
tail -1 file
* ?????????? ????????? 10 ???????? ??????????
echo "$VAR" | tail -10c
TAR
* ??????? ????? ?????? ? ????? home-???????? ?? ???????? ????, ??
???????? ????? ?? ????? ?? 1200 ??????
cd
tar cvefbk /dev/rfd0 10 1200 .
* ????????? ??????? "ls-l" ??? ????? ??????
tar tvf /dev/rfd0
* ???????????? ????? ??????
cd $DEST
tar xvf /dev/rfd0
* ??????????? ????? ? tar , ???????????? ??
tar cvfk /dev/rfd0 1200 'find . -print | sort'
TEE
* ????????? ???? ????? ?? ????? ??????? ?????????
sh | tee /dev/tty01
* ????????? ????? ?????? ??????
fsck /dev/root | tee capture
cu -ltty00 dir | tee capture
TEST
* ????????? ??????????????? ???? ?????
test "$S1" = "$S2"
* ????????? ??????????????? ???? ?????
test "$N1" -eq "$N2"
* ?? ?? ????? ?????? ????????
(???????? ??? /bin/[??????????? ? /bin/test)
- 31 -
[ "$S1" = "$S2" ]
[ "$N1" -eq "$N2" ]
TOUCH
* ???????? ??????? ?????? ? ???????? ????? ???? ?????? ? ?????
home ????????
find $HOME -exec touch {} ;
find $HOME -print | while read FILE
do
touch $FILE
done
TTY
* ???????? ????? ??????? ?? ?????? ?? ????? ?????????
ls -l 'tty'
* ???????? ? ????????? ?????? ????????????? ? ?????? ?????????
chmod 666 'tty'
chmod 600 'tty'
UUCP
* ??????????? ????? ???? ?????? ? ???? ? ????????????? ??????? ??
?????? ???????
for FILE in 'cat datafile'
do
echo "??????????? $FILE"
uucp $FILE sys! ~/user
done
* ????????? ???? ? ???????, ?? ???????????? ?????, ????? ???? ??
?????? ??????????????? ????????, ?? ??????????? ??? ? spool
???????.
uucp -r -c file sys!/tmp
VI
* ????????? ??????? ?????? ??? ??????? ????? shell
:.w !sh -
* ?? ?? ????? ?????? ????????, ????????? ??????
"ayy
@a
* ????? ??????????????? ? shell
:sh
* ?????????????? ??????? ????
:!sh
* ????????? ??? ???????? ????? ??? ?????? ????? shell
:!cc %
* ????????? ??? ??? ????????? ???????
:!%
- 32 -
* ????????? ??????? ? ????????? ?????? ?? ???????
?????? (??????????)
:.!who am i
* ????????? ??????? ? ????????? ?????? ?? ????? ??????
:.r !who am i
:r !who am i
* ??????????????? ????, ??????? ????????? ???-?? ?
???????
:e 'path termcap'
* ????????? long ??????? ?????, ??????? ?????????
???-?? ? ????? ?????????
:.!ls -l 'path init'
WC
* ???????? ?????????? ???????, ?????????????????? ? ???????
echo "????? 'who | wc -l' ??????? ????? ? ???????"
* ???????? ?????????? ????? ?? ???? ???????? ??????
find /usr/src -name "*.c" -exec cat {} ; | wc -l
WHO
* ???????? ?????????? ? ????? ??????????????????
?????????????
who | awk '{ print "user:",$1,"tdevice:",$2
cnt = cnt + 1
} END { print cnt,"????????????, ???????? ?? ???????"}'
* ????????
who | while read NAME TTY TIME
do
echo "????????????: $NAME tty: $TTY time: $TIME
done
* ?????????? 1. ?????????? ????? ?????????? *
????????? ?????????? ????? ???????? ?????????????????? ???????,
??????? ?????????? ????????????? shell. ?? ???????? ???????????????,
????? ?? ??????????????? ? ???????. ?????? ?????????? ????????????
?????????? ??????? ??????? ??????? UNIX. ???? ??? ????? ?????? ???-
???, ?? ?????? ?????????, ??? ??? ??????????? ?????????? ??????????.
????? ?????????? ????? ????????????? ? System V, BSD ? XENIX. ?????
????????? ????? ??? System V.
??? shell-?????????? ???????? ?????? ????? ?????? ????????????-
???? ?????????????? shell. ??? ???????? ? ???? ?????????? ?????, ?
???? ?? ??? ???????????, ?? ??? ?????? ??????????. ?????? ????????-
????? ?? ???????? ?? ?????? ?????? ????? ????????? ?? ???????????.
????? ???????? ???????? ??????????, ????? ???????? ???????? ??? ????-
???? ?????????????? shell ?? ??? ???, ???? ??? ?? ????? ????????????-
??.
CDPATH ?????? ??????, ????????????, ???? ?? ??????
??????? ? ??????? ??????? cd
HOME ????? ???????? ????? ?????? ? ????????? ??????
IFS ?????????? ??????????? ?????, ??????? ??????????
???????, ??????????? ????? ????? ?????
LOGNAME ???? ??????????????? ???, ???????????? ? /etc/passwd
MAIL ?????????? ??????????????? ?????? ????????? ?????,
????? ??? ????? ???? ?????????? ? ??????????? ???
????? ?????
PATH ?????????? ??????? ? ????? ????????? ??? ??????
??????????? ???????
PS1 ??????? ?????? ?????????, ??????? ????????????
? ???????? ?????? ???????? ???????????
PS2 ????????? ?????? ?????????, ??????? ????????????,
????? ?????????????? shell ????? ?????????????? ????
TERM ??????, ???????????? ??? ??? ?????????
TERMCAP ??????????????? ???? ?? ???? ???????? ?????????,
???? ?? ?????? ????? ?????
TZ ???? ???????, ?????????? ???, ??? ??????? ? ctime(3)
SHELL ??? shell-??????????????, ??????? ?? ??????????
EXINIT ?????? ????????????? ??? ????????? ex
?????????? 2
?????????????????? ???????? ?????????????? SHELL
Shell ????????? ???????????? ?????????????????? ???????? ?? ??-
??????????? ?????? ??? ?????? ??????????? ?? ??????. ???? ??? ?????-
?????????????, ?? ?????? ??????????? ?????? ???????? ?? ????????????-
??? ??????. ?????? ?? ???????????? ???? ???? ?????????????????? ?????
????????? ???????? ????????? ????????. ??????? ????? ?????, ????? ??-
???????? ???????? ??????????.
???? ?? ???????? ????????? ? ????????? ????? ????? ? ???????
?????????. Shell ?? ?????????? ??????????? ?? ????? ?????????? ?????-
???. ???????? F=* ???????? ? ????????????????, ??? ?????????? F ????-
????????? ???? ??????. ????? ??????????? ??? 7 ??????????????????
????????, ????????? ???????????? ??? ?????????? ????? ?????, ??????-
????? ?? ??? ????? ?????? ? ??????? ????????. ??? ????? ????????????-
?????? ?? ??????? ??????? "echo $F". ??? ???? ????? ????????? ????-
??????? ???????? ?????????, ??? ????? ???????????? ??, ??? ??????? ??
?? ???? 7. ?????????? ??????? echo "$F". ? ??? ???? ????? ?????? ??-
?????? ???????? ?????????? F, ??? ??????? ????????? ??? 3 - ??????-
????? ??????????. ???????? ??????? echo '$F', ?? ????????? ????? $F,
? ?? ???????? ?????????? F.
???????? ??????????? ? ????? ???????:
1. ?????? ????? ? ?????????????? ??????
2. ????????? ????????????? ???????
3. ??????????? ??????????
4. ??????????? ??????
5. ?????????????? ?????-??????
6. ????????? ?????????? ???????????? ?????
7. ????????? ????? ?????
8. ??????????? ??????????
9. ????????? ?????????? ?????
10. ?????????? ???????
????? ??? ???? ??????????????? ????? ????????. ????? ?? ???????-
??????? ?? ????? shell, ??????????? ??????????? ????, ????? ??? ??
??????????? ??? ?????? ?????? ?????? ?????????. ????????, ?? ???????
???-??? ???? ????? ?????. ???? ??????? ?????, ?? ?????? ????? ??????-
???? ?????? ?? ???????? ????? ?????? ? ????????? ????? ????????? ???-
???.
1. ????????? ?????? ??? ?????????? ??????????? ???????? ? ?????-
???? ??? ?? ????? ??????. ?????? ??????????????? ??? ??????????? ???-
?????? ????????: ????? ? ??????? (;), ??????? ??????? ?????? (&), ??-
????????? ? (&&), ??????????? ??? (||) ???? ??????? ????? ??????
(n). ??????????? ?????? ????????? ?????? ?? ????? ? ?????? ????????
? ?????????.
2. ???? ? ??????? ?????????????? shell ?????????? ???? ??????-
???????? (-v), ?? ??????????? ?????? ???????????? ?? ??????????? ???-
??????? ??????????? ??????.
3. ??????????? ??????????? ??????????. ???? ?????? ???????????
??????????? ??????????, ??????????? ?????????? ? ??????????? ?????-
?????? ?????????. ????????? ?????? ????? ??????? ? ???? ?????????
????? ($).
4. ??????????? ??????????? ??????. ??? ????????? ?? ???? ?????-
???, ?????? ? ??????? ???????? (`). ????? ??????? ??????????? ? ??-
?????????, ? ?????????????? ????? ???????? ???????? ????????? ? ???-
??? ????????? ??????. ??????????? ??????? ????? ?????????
???????????????? ???????, ????????? ??? ???????, ??????????????? ?
???????. ????? ?????? ???????, ????????? ??? ??????? ????? ??????,
??????????? ? ?????????? ?????????? ???????, ???????????? ?????????
??? ????????? ?????????? ???????????? ?????. ???? ????? ????????? ???
?????? ???????, ????????? ??????? ??????? ?????? ????? ?????????.
5. ??????????? ?????????????? ?????-??????. ???? ??????? ?????-
??, ???????? ?????????? ????? (0, 1 ??? 2) ???????????, ? ????? ???-
???????? ???????? ? ????? ?????????. ????? ???????? ?????????? ?????
???????? ? ???????? ?????-?????? ?? ?? ?????, ??? ? ???????? ????????
??????????. ??????? ?????????????? ????????? ?? ????????? ??????.
6. ????????? ????????? ?????? ????? ?????????? ?? ????????? ??
????? ???????? ?????????? ? ?????????? ???????????, ??? ????? ?????-
?????? ?? ????? ? ?????? ?????????? ????? IFS. ??? ?????????? ?????-
??? ??????????? ????? ??????, ??????? ???????? ????? ???? ?? ????? ?
????????? ??????. ?????? ?????? ????????? ??????, ??????? ??????? ?
IFS, ?????????? ?? ??????, ????? ???????????? ?????. ??? ??????????-
?????? ???????, ?????????, ??????? ????? ?????? ? ??????? ?????????
????????? ?? ????????? ??????. ??? ?????????????? ???????? ??????????
???????? ?? ???????, ???????????? ? ???????????? ? IFS. ??? ???? ???-
?? ??????? ???????? IFS, ??????? ????? ???????? ??????:
echo "<$IFS>" | od -bc
7. ????? shell ???? ??? ?????, ??? ??????? ????????? ?????????
????? ????? (???????????). ???????? ??????? ??????????? ??????? ?
??????? ???????? ????????. ???? ?????????? ????? ???????, ??? ??????-
?? ????????? ? ????????? ??????. ???? ???????????? ?? ??????????, ??-
????????? ???????? ? ???? ?????????. ??? ?????????? ?????????? ????-
???? ?? ????????? ????????????. ???????? ???????? ???????? ???????
"ls z*". ???? ????? ?????-???? ?????? ?????????? ? ????? z, ??? ?????
?????????????. ? ????????? ?????? ?????????? ????????? "z* not
found".
8. ???? ?????????? ???? ??????????? ?????????? (-x), ?? ??????-
??? ?????? ???????????? ?? ??????????? ?????????? ??????????? ??????
????? ???, ??? ??? ????? ?????????? ?????????. ???? ??? ?????????
??????, ?? ??? ????????? ? ????????? "+", ???? ?? ??? ?????? ???????-
??? ???????? ??????????, ???????? ???.
9. ?? ???? ???? ???? ?????????? ????????????? ????????, ????? ?
???????????? ? ?????????? ????? PATH ?????? ??????????????? ???????.
?????????? ???????? ?????????? ?????????? ?????? ?????? ????? ??????-
??? ??????. ????? ?? ?????????? PATH, ????????, ?????????? ????? ???-
????. ???? ??? ???????, ?? ?????? ?????????? ??? ???????? ????? ??-
????? ? ????????? ??????. ???? ?????????? PATH ????? ?????? ????????,
??????????????? ??????? ???????. ???? ? ?????-???? ????? ?????????
????? ??????? ??????? ????? ????? (/), ?? ?????????? PATH ?? ???????-
????????, ? ?????????, ??? ??????? ?????? ?????????? ???.
10. ???????, ??????? ???????????. ???? ??? ?????????? ???????,
??????? shell ???????????? ??. ? ????????? ?????? ???????? ???????
????????? ??????? ? ??????, ??? ???? ?? ??? ???? ????????????????
?????????. ???? ??? ??????? ???????, ??????? ??????????? ???????????
?????????? ?????? exec(2). ???? ???????? ??????? ?? ???????, ?? ???-
??????, ??? ??? ????????? ???? ??? ?????? ?????????????? shell, ? ??-
????????? shell ?????? ???? ????????? ???? ? ???????? ????? ??????.
?????????? 3
??????????? ??????? SHELL-??????????
??????????? ????? ??????? ??????????????? shell-??????????? ???
???????????, ??? ??? ??? ???????? ?????????? ?????. ??? ???? ?????
???????????? ?????? ? ??? ??????? ????????, ? ?? ? ???????? ????????-
??? ???????, ????? ???????????? ??? ???????? ????? ?????? () ???
????? ? ????????? ???????.
b ??????: ??? 20 (?????????????????), ???????????? ????
n ?????? ????? ??????: ^j, ??? A (?????????????????),
???????????? ????
t ?????????: ^i, ??? 9, ???????????? ????
; ????? ? ???????: ????????? ??????????? ????????
( ????? ??????: ???????????? ??????????? shell
) ?????? ??????: ???????????? ??????????? shell
| ???????????? ?????, ??? ?????? ???????????? ?????????:
????????? ???????
^ ??????? ?????, ???? ???????: ?????? ??????,
???????????? ? ???????? |
> ?????? ??????? ?????? (???? ??????): ?????????????
??????????? ?????
< ????? ??????? ?????? (???? ??????): ?????????????
??????????? ????
& ?????????: ???????? ??????????? (???????) ??????????
{ ????? ???????? ??????: ?????????? ????? ???
??????????????? ??????? ?????
} ?????? ???????? ??????: ????????? ???? ???????????
?????
?????????? 4
??????????? ??????? SHELL-??????????
??? ??????? ??????????? ? ?????????? ?????????? ????? shell. ??
??????? ????????????? ??? ?????????????????. ????????? ??????? ?????
?????????????? ??-???????. ????????, ?????? # ???????? ???????????? ?
?????????, ? ????? ????? ???? ??????????, ??? ? ?????? $#, ??????????
?????????? ?????????? ? ????????? ??????.
&& ??????? ?????????: ????????? ??????, ???? ???????????
???????? ????????? ???????
|| ??????? ???????????? ?????: ????????? ?????? ? ??????
??????? ???????????? ?????????
` ???? ????????: ??????????? ??????????? ????? ? ???????
* ??? ????????????? ? ???????? ????????? ?????????????
???? ??????????? ??????????; ???????? ????? ????????
????????? ???? ??????, ??????????????? ????? ??????
# ??????????? ?? ????? ??????; ????????????? ?????
?????????? ??????????? ?????????? ? ????????? ??????
? ??? ????????????? ? ???????? ????????? ?????????????
??????? ?????????? ????????? ????????? ???????????
???????; ???????????? ????? ??? ????????? ???? ??????
? ???????? ??? ???? ????? ????????? ??????
- ?????????? ?????, ???????? ?? ????????????????
?????????????? shell
$ ?????? ?????????? ?????????; ????????????? ?????
?????????????? ????????
! ??? ????????????? ? ???????? ????????? ?????????????
?????????????? ???????? ?????????? ???????? ???????;
??????????? ????? ? ??????? ????????, ??? ???????? "??"
" ??????? ???????: ????????? ??????? ? ?????????
??????????? ??????????? ??????????
' ????????? ???????: ????????? ???????, ?? ?????????
??????????? ??????????
???????? ????????? ?????: ?????????? ????????? ??????,
????? ????? ??? ??????????? ????????
[] ?????????????? ????????????? ??? ?????? ???????
????????. ??????????? ????? ??? ????????? ???? ??????,
??????? ??? ???? ???????? ????????
@ ????????????? ??????? ???????????? ?????????
????????? ??????
>> ????????? ??????????? ?????
<< ????????????? ??????????? ???? ?? ???????? ??????
??????
& ???????????? ??? ?????? ???????? ????????;
????????????? ????? "????????? ???????????",
???? ???????????? ? ?????????????
?????????? 5
?????????? ????????? ????? SHELL
????????????? ???? ??????? ????????????? ? ?????????? ?? ?????
shell. ????? ??????? ? ???? System V Bourne shell.
? System V.2 - ????? ????? ?????? System V - ????????????? shell
????? ????????? ?????????????? ???????, ????????????? ? ?????????
??????.
??????? ????? ????????????? ksh (?????????? ??? ??????????
Bourne shell), ?????????? ????????????? ????????? ?????, ????????????
??? csh (??-shell). ????????????? ksh ????? ?? ???????????????.
??????????. ?? ?????????? ??????? exec ????? ??? ? ?????. ??? ??
?? ?? ?????, ??? ??????? exec(2). ?????? ??????? exec ??????????????
?????????????? shell, ? exec(2) ???????? ????????? ???????.
??????? System V Bourne Shell
. ?????: ????????? ?????? ??????? ?? ????????
?????????????? shell, ? ?? ?? ????????????
: ?????????: ?????? ?? ??????, ? ?????? ??????????
???????? ?????? (0)
{} ???????? ??????: ????????? ???????????????? ??????
??????
break ???????? ????????? ???????? ???????? ?????
case ???????????? ????? if-then-else
cd ??????? ???????
continue ??????? ?? ????????? ???????? ????? for, while
??? until
eval ????????? ??? ??? ???? ??????????? ??????????
exec ????????? ??????? ? ???????????, ??????????
??????? shell
exit ?????????? ?????????? ???????? ?????????? ?????
export ????????? ???????? ?????????? ???? ???????????
??????????????? shell
for ??????????? ????? ? ????? for-do-done
if ??????????? ????? ? ?????????????????? if-then-else
newgrp ???????? ??????? ????????????? ??????
read ???? ?????? ???????????? ????? ????????? ??????????
? ???????? ????????
readonly ???????? ?????????? ?????? ??? ??????, ?? ????????
???????? ??????
set ????????? ? ?????????? ?????? ???????????? shell
shift ?????? ??????????? ???????? ?? ????????? ??????
test ????????? ??????????? ????? ???????? ? ?????? ???????
times ???????? ????? ?????? ?????????, ??????????
?? shell
trap ?????????? ??????????? ?????????? ??? ??????????
????????
ulimit ?????????? ?????? ??????? ?????? ? 512-??????? ??????
umask ????? ???? ??????? ? ??????, ???????????? ??? ??
????????
until ??????????? ????? ? ????? until-do-done
wait Shell ???? ?????????? ????????? ???????????
?????????
while ??????????? ????? ? ????? while-do-done
?????????????? ??????? System V.2
hash ??? ?????? ?????? ???????????? ???????????
name ?????????? ??? shell-???????
pwd ???????? ??????? ???????; ?????? ??? ??????????
??????? ??? ?????????
return ????? ?? shell-??????? ? ?????????? ????????
set -f ????????? ???? ????????? ???? ??????
set -h ?????????, ? ?? ????????? ?????????????? ???????,
???? ??? ??????????
type ??????????, ????? ??????? ????? ????????????????
??? ? ???????? ???????
unset ??????? shell-?????????? ? ???????
 |