Books on Demand, 7 окт. 2010 г. — Всего страниц: 450
Dannoe rukovodstvo pozvolit vam osvoit’ obshirnyj perechen’ instrumentov s otkrytym ishodnym kodom, dostupnyh dlya GNU/Linux. Avtor knigi, Dzhon Fusko, podrobno i dostupno opisyvaet naibolee poleznye iz nih, ispol’zuya naglyadnye kratkie primery, kotorye legko vidoizmenyat’ i ispol’zovat’ na praktike. Nachav s samyh osnov — zagruzki, postroeniya i ustanovki, — vy uznaete, kak raspredeleny instrumenty s otkrytym kodom i kak najti optimal’noe reshenie dlya toj ili inoj zadachi, uglubite svoi znaniya o yadre Linux i sposobah vzaimodejstviya OS s programmnym obespecheniem. Izlozhenie teoreticheskoj informatsii v knige orientirovano na posleduyuschee prakticheskoe primenenie. Osvoiv ee, vy smozhete pol’zovat’sya samymi prodvinutymi instrumentami, primenyaya ih dlya razrabotki sobstvennyh prilozhenij, a takzhe dlya uvelicheniya proizvoditel’nosti PO i ego otladki.
Описание
Данное руководство позволит вам освоить обширный перечень инструментов с открытым исход-ным кодом, доступных для GNU/Linux. Автор книги, Джон Фуско, подробно и доступно описывает наиболее полезные из них, используя наглядные краткие примеры, которые легко видоизменять и использовать на практике.
Начав с самых основ — загрузки, построения и установки, — вы узнаете, как распределены инструменты с открытым кодом и как найти оптимальное решение для той или иной задачи, углубите свои знания о ядре Linux и способах взаимодействия ОС с программным обеспечением.
Изложение теоретической информации в книге ориентировано на последующее практическое применение. Освоив ее, вы сможете пользоваться самыми продвинутыми инструментами, применяя их для разработки собственных приложений, а также для увеличения производительности ПО и его отладки.
Схожие книги
Инструменты в Linux для программистов из Windows. О. Цилюрик
Командная строка Linux и автоматизация рутинных задач. Денис Колисниченко
Знакомьтесь: Ubuntu. Кирилл Голобродский
UNIX. Профессиональное программирование. 3-е изд. У. Ричард Стивенс, Стивен А. Раго
- Home
- Documents
- Дж. Фуско — Linux. Руководство Программиста (2011)
Upload: iluhanec
Post on 21-Dec-2015
314 views
- Download
Embed Size (px)
TRANSCRIPT
-
. Linux.
c .
. . . . . , . , . . . , . .
32.973.2-018.2 004.451
.
95 Linux. . .: , 2011. 448 .: .
ISBN 978-5-49807-794-9
—
, GNU/Linux. , , —
, ,
. , , , —
,
Linux . —
. , —
, —
, .
Prentice Hall PTR. . — .
, , , -. , , — , .
ISBN 978-5-49807-794-9 2007 Pearson Education, Inc.
ISBN 0132198576 (.) , 2011
,
, 2011
, 194044, -, . ., 29. 005-93, 2; 95 3005 .
24.09.10. 70100/16. . . . 36,12. 2000. 0000.
CtP . . . .
197110, -, ., 15.
-
, .
-
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . .17. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . .18. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . .22. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . .22. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . .221. . . . . . . . . . . . . . . . . . . . . . . . . . . . .23
2. . . . . . . . .53
3. . . . . . . . . . . . . . . . . . . . .96
4. . . . . . 124
5. Linux . . . . . 172
6. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . 2317. . . . . . . . . . . . . . . . . . 261
8. IPC . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . 3089. . . . . . . . . . . . . . . . . . . . . 326
10. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . 380 -
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . 17. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . 18 . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . 19 . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . 20 . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . 20. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . 22. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . 22. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . 221. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . 231.1. . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . 231.2. ? . .
. . . . . . . 231.3.? . . . . . . . . . . . . . . . . . . . . . . . . . 241.3.1. . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
241.3.2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . 251.4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 261.4.1. . . . . . . . . . . . . .
. . . . . . . . . . . . . 271.4.2. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . 281.4.3. . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . 311.5. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 321.5.1. : ? . . . . . . . . . . . . .
. . 341.5.2. . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . 351.6. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . 35 -
9
1.6.1. . . . . . . . . . . . . . . . . . . . . . . . . . . .
361.6.2. . . . . . . . . . . . . . . . . . . . . . . 361.6.3.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . 381.6.4. RPM GPG . . . . . . . . 381.6.5. , . . . . .
. 411.7. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . 421.7.1. . . . . . . . . . . . . . . . . . . . . . . . .
431.7.2. RPM . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . 451.7.3. Debian . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . 461.8. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 471.8.1. Apt: Advanced Package Tool . .
. . . . . . . . . . . . . . . . . . . . 481.8.2. Yum: Yellowdog
Updater Modified . . . . . . . . . . . . . . . . . . 491.8.3.
Synaptic: GUI- APT . . . . . . . . . . . . . . . . . . 491.8.4.
up2date: Red Hat . . . . . . . . . . . . . . 511.9. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . 512. . . . . . . . . . . . . 532.1. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . 532.2. . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . 532.2.1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . 542.2.2. make . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . 552.2.3. . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. 712.2.4. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . 722.3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . 742.3.1. GNU- . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . 742.3.2. : configure .
. . . . . . . . . . . . . . . . . 752.3.3. : make . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 762.3.4.
: make install . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . 772.4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . 782.4.1. , Makefile . . . . . . . . . . . . . . . . . 782.4.2.
. . . . . . . . . . . . . . . . . . . . . . . . 802.4.3. . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . 812.4.4. .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . 832.4.5. .
. . . . . . . . . . . . . . . . . . . . . 852.4.6. . . . . . . . .
. . . . . . . . . . . . . . . . . . 932.5. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . 953. . . . . . . . . . . . . . . . . . . . . . . . . . . . 963.1.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . 963.2. . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . 96 -
10
3.2.1. man . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . 973.2.2. man . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . 973.2.3. man: apropos . . . . . . . . . . . . . .
993.2.4. man:whatis . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . 1013.2.5. man . . . . . . . . . . . . . . .
. . . 1023.2.6. man . . . . . . . . . . . . . . . . . . 1033.2.7.
GNU- info . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . 1053.2.8. info . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 1053.2.9. info . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . 1083.2.10. info .
. . . . . . . . . . . . . . . . . . . . . . . . . . 1083.2.11. . .
. . . . . . . . . . . . . . 1093.3. . . . . . . . . . . . . . . . . . . . . . . . . . 1103.3.1.
/usr/share/doc . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 1103.3.2. . . . . . . . . . . . . . . .
. . . . . . . . . 1103.3.3. . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . 1123.4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . 1133.4.1. TeX/LaTeX/DVI . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . 1133.4.2.
Texinfo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 1133.4.3. DocBook . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. 1143.4.4. HTML . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . 1143.4.5. PostScript .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . 1153.4.6. Portable Document Format (PDF) . . . .
. . . . . . . . . . . . . . . . . . . . . . . 1153.4.7. troff . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . 1163.5. . . . . . . . . . . . . . . . . . . . . . 1163.5.1.
www.gnu.org . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . 1163.5.2. SourceForge.net . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1173.5.3. The Linux Documentation Project . . . . . . . . . .
1173.5.4. Usenet . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . 1183.5.5. . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1193.5.6. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . 1193.6. Linux . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . 1193.6.1. . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . 1193.6.2. . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1213.6.3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . 1223.7. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . 1223.7.1. , . . . . . . . . .
. . . . . . 1223.7.2. — . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . 1234. . . . . . . . . . . 1244.1. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
124 -
11
4.2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . 1244.2.1.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . 1264.2.2. : vi Emacs . . . . . . . . . .
. . . . . . . . 1274.2.3. Vim: vi . . . . . . . . . . . . . . . . .
. . . . . . 1274.2.4. Emacs . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . 1444.2.5. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . 1514.2.6. . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . 1534.3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 1544.3.1. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . 1554.3.2. . . . . . . . . . . .
. . . . . . . . . 1564.3.3. . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . 1574.3.4. diff patch . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . 1584.3.5. . . . . . . . .
. . . . . . . . . . . . . . . 1594.4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . 1634.4.1. indent . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . 1644.4.2. astyle . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . 1654.4.3. cflow . . . . . . . . . . . . . . . . 1654.4.4.
ctags . . . . . . . . . . . . . . . . 1654.4.5. cscope . . . . . .
. . . . . . . 1664.4.6.Doxygen . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . 1664.4.7. . . . . 1684.5. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . 1694.5.1. , . . . . . . . . .
. . . . . . 1694.5.2. . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . 1704.5.3. — . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . 1705. Linux . . . . . . . . 1725.1. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. 1725.2. . . . . . . . . . . . . . . . . . . . . . 1725.3. . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . 1755.3.1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . 1755.3.2. , . . . . . . . . . . . . . . . . . . . . . . .
. 1755.3.3. . . . . . . . . . . . . . . . . 1765.3.4. nice . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . 1775.3.5. . . . .
. . . . . . . . . . . . . . . . . . . . . . . 1775.3.6. . . . . . .
. . . . . . . . . . . . . . 1795.3.7. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . 180 -
12
5.3.8. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1835.4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . 1895.4.1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. 1905.4.2. . . . . . . . . . . . . . . . . . . . . . . . . . . .
1915.4.3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . 1925.4.4. / . . . . . . . . . . . . . . . . . .
. . . . 1975.5. / . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2025.5.1. Linus Elevator ( noop) . . . . . . . . . . . . .
2035.5.2. /(Deadline I/O Scheduler) . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 2045.5.3. /(Anticipatory I/O Scheduler) . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 2045.5.4. /(Complete Fair Queuing I/O Scheduler) . . . . . . . . . . . . .
. . . . . . . . . . . . 2045.5.5. / . . . . . . . . . . . . . . . .
2055.6. . . . . . . . . . . . . . . . . . . . . 2065.6.1. . . . . .
. . . . . . . . . . . . . . . . . . . . . . . 2065.6.2. . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2195.7. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . 2295.7.1. , . . . . . . . . .
. . . . . . 2295.7.2. API-, . . . . . . . . . . . . . . . .
2295.7.3. — . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 2305.7.4. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 2306. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . 2316.1. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2316.2. ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . 2316.2.1. fork vfork . . . . . . . . . . . . . . . . . . . . . . .
. . . . . 2316.2.2. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . 2326.2.3. clone . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 2336.3. exec . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . 2346.3.1. . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . 2346.3.2. . . . .
. . . . . . . . . . . . . . . . . . . . . . 2366.3.3. . . . . . . .
. . . . . . . . . . . . . . . . . . . 2366.4. wait . . . . . . . . . . . . . . . . . . . . . . . . .
2386.5. , . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2396.5.1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . 2426.5.2. . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . 2446.5.3. . . . . .
. . . . . . . . . . . . . . . . . 2466.6. . . . . . . . . . . . . . 2466.7. procfs . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . 250 -
13
6.8. . . . . . . . . . . . . . . . . . . . . . . . . . .
2526.8.1. ps . . . . . . . . 2526.8.2.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . 2546.8.3. ps pgrep . . . . . . . 2566.8.4.pmap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . 2566.8.5. . . . . . . . . . . . . . . 2586.9. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . 2596.9.1. API-,. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . 2596.9.2. , . . . . . . . . . . . . . . .
2606.9.3. — . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 2607. . . . . . . . . . . . . . . . . . . . . . . . . 2617.1. . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 2617.2. IPC . . . . 2617.2.1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . 2627.2.2. ,IPC . . . . . . . . . . . 2627.3. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . 2637.3.1. API- POSIX . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . 2637.3.2. API- System V . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . 2677.4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . 2697.4.1. . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . 2707.4.2. . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2717.4.3.
. . . . . . . . . . . . . . . . . . . . . . 2727.4.4. . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . 2757.4.5. sigqueuesigaction . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . 2777.5. () . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2807.6. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . 2807.6.1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . 2817.6.2.socketpair . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . 2837.6.3. /, . . . 2847.6.4. /,
. . . 2897.7. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . 2907.7.1. System V . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . 291 -
14
7.7.2. POSIX . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . 2947.7.3. POSIXSystem V . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . 2967.8. . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2977.8.1. API- POSIX . . . 3017.8.2. API- System V . . .304
7.9. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . 3067.9.1. API-, . . 3067.9.2.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3077.9.3. — . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 3078. IPC . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . 3088.1. . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . 3088.2. . . . . . . . . . . . . . . . . . . . 3088.2.1. lsof . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . 3088.2.2. fuser . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . 3108.2.3. ls . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3108.2.4. file . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . 3108.2.5. stat . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . 3118.3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . 3118.3.1. strings . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . 3118.3.2. xxd . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . 3128.3.3. hexdump . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 3138.3.4. od . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3138.4. System V IPC . . . . . . . . . . . . . . . 3148.4.1. System
V . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3148.4.2.
System V . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3168.4.3. System V . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . 3178.5. POSIX IPC . . . . . . . . . . . . . . . . . . . . .
3188.5.1. POSIX . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . 3188.5.2. POSIX . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . 3198.5.3. POSIX . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . 3198.6. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3208.7. () . . . . . . . . . . 3218.7.1. FIFO . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 3218.7.2. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3228.8. IPC . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . 3238.9. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . 3248.9.1. , . . . . . . . . .
. . . . . . 3248.9.2. — . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . 325 -
15
9. . . . . . . . . . . . . . . . . . . . . . . . . . . . 3269.1.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . 3269.2. . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . 3269.2.1. , . . . 3269.2.2.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . 3359.2.3. . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . 3389.2.4.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3439.3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . 3499.3.1. : time . . . . . . . . . . . . . . . . . . .
3509.3.2.x86info. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . 3509.3.3. Valgrind . 3539.3.4. ltrace . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3579.3.5. strace. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . 3589.3.6. :gcov gprof . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 3599.3.7. OProfile . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . 3659.4. . . . . . . . . . . . . . . . . . . . . . . 3709.4.1.
SMP . . . . . . . . . . . . . . . . . . . . . . . . . .
3709.4.2.SMP . . . . . . . . . . . . . . . . . . . . . . . . . . 3759.5.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 3789.5.1. , . . . . . . . . . . . . . . . . . 3789.5.2. , . . . . .
. . . . . . . . . . . . . . . . . 3799.5.3. , . . . . . . . . . . .
. . . . 3799.5.4. — . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . 3799.5.5. . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . 37910. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . 38010.1. . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . 38010.2. : printf . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . 38010.2.1. , printf . . . . . . . . . . . 38110.2.2. printf . . . .
. . . . . . . . . 38510.2.3. printf . . . 39310.3. GNU- gdb . . . . . . . . . . . . . . . . . . . . .
39310.3.1. gdb . . . . . . . . . . . . . . . . . . . . 39410.3.2. .
. . . . . . . 395 -
16
10.3.3. . . . . . . . . . . . . . . . . . . 40210.3.4. gdb . . .
. 41110.3.5. . . . . . . . . . . . . . . . . . . . . . . . . .
41210.3.6. gdb . . . . . . . . . . . 41510.3.7. . . . . . . . . . .
. . . 41710.4. . . . . . . . . . . . . . . . . . . . . . . . . 41810.4.1.
. . . 41810.4.2. . . . . . . . . . . . . . . . . 41910.4.3.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 42010.4.4.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . 42110.4.5. . . . . . . . . . . . . 42110.4.6.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . 42210.5. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . 42510.5.1. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . 42610.5.2. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 42610.5.3. . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . 42710.5.4. , glibc . . . .
. . . . . . . . . . 42910.5.5. Valgrind . . . . . 43210.5.6.
Electric Fence . . . . 43710.6. . . . . . . . . . . . . . . . . . . . . . . . . . . .
43910.6.1. . . . . . . . . . . . . . . . . . . . 43910.6.2. . . . .
. 44310.6.3. . . . . . . . 44310.6.4. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 44410.6.5. procfs . . . . . . . . .
. . . . . 44510.7. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . 44710.7.1. , . . . . . . . .
. . . . . . 44810.7.2. — . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . 44810.7.3. . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . 448 -
, Linux. ls, grep, find sort , ++, Linux. Linux , . , , : ?
., Linux .
, , /proc, Linux .
, , , , , , . , , Linux ( UNIX!).
. , . , .
. (Arnold Robbins),
-
Linux . UNIX, , . , , .
. . , . , . , grep , . , ( , ). , , grep.
, , , : Linux , . , . , . , , . . , .
. , , API, . , Linux, . : . , , , , .
MAN . GNU Linux , . ,
-
19
, .
GNU/Linux , . 10 000 , , . . , , . , , , , Linux .
, , . Linux , , URL, .
, .
Linux
, Linux. Windows, Linux , .
, . , Linux.
,
Linux Journal , Linux. Linux. , . . , , , , . . , , , .
. , Linux.
-
20
. Linux , , , Windows.
, , , .
.
, . , , , .
, , . , .
1
. , , . , , .
2, , . , . make. , , GNU autoconf. , . , , .
3 , Linux, . .
4, , , , . , , , , .
-
21
, .
5 Linux . , Linux. , .
6 , . . , API, .
7, , IPC. , 8. IPC API, .
8 IPC , IPC. 7, , .
9, , , , . , , . .
10 . , Valgrind Electric Fence. , gdb , .
-
,
. , , . . , , , .
(Arnold Robbins) . . , .
(Debra Williams Cauley) , , . , , , .
, , (Mark Taub) , .
(John Fusco) GE Healthcare,
, , Linux. UNIX Linux 2.0. , Embedded Systems Programming Linux
Journal.,
[email protected] ( , ).
! http://www.piter.com
.
-
1
1.1. ,
. , , . , .
, , , , , . , . , , , .
.
1.2. ?
, Open Source Initiative (OSI) (www.opensource.org). , GNU
Project, (Richard Stallman). Open Source Initiative , . -
24 1.
. , . : , . , ( GNU Public License) , , .
, . . . , .
1.3. ?
, . , , . , . : , , .
. , ( ), . , , , , . , . , . , , , . , . , , .
1.3.1. ,
. Linux
-
251.3.
DVD, , . , . , . , .
, . , , . , , .
, . . www.freshmeat.net. , , , . , , www.freshmeat.net 71 . : 71
!www.freshmeat.net , . , , Linux, , , . , Linux, , Open Source
Initiative ( www.freshmeat.net ). 12 . , , , , -. , , AbiWord, , .
, , , , OpenOffice, . , OpenOffice , , Office/Business :: Office
Suites. : , , .1.3.2. ,
. , .
-
26 1.
. . : , ; , . , : , , , .
, Linux TAR. , , tar. gzip, . TAR- .
1.4.
. , . Windows, , , PKZip. Linux ( , , PKZip, ). , ( gzip bzip2).
UNIX.Linux , , , , . , , TAR, .
. , . , (, //).
. 1.1 Linux . TAR. tape archive, tape. tar . cpio, . , pax
POSIX, TAR, CPIO PAX. PAX, . -
271.4.
1.1.
tar cpio RPM; —
ar Debian; —
. AR
ar, , , Debian.
, ZIP, PKZip, , LHA. Linux . ZIP, , , Microsoft.
1.4.1. ,
. ; . 1.2 .
1.2.
.tar TAR, .tar.gz, .tgz TAR, gzip.tar.bz2 TAR, bzip2.tar.Z, .taz
TAR, UNIX compress.ar, .a AR, —.cpio CPIO,
, file. , . , . , TAR c foo.x. . :
$ file foo.xfoo.x: gzip compressed data, from UNIX, max
compression -
28 1.
, gzip, , TAR. gzip file z:
$ file -z foo.xfoo.x: tar archive (gzip compressed data, from
UNIX, max compression). ,
, .
1.4.2. ,
, t . TAR Debian cron:
$ tar -tzvf data.tar.gzdrwxr-xr-x root/root 0 2001-10-01
07:53:19 ./drwxr-xr-x root/root 0 2001-10-01 07:53:15
./usr/drwxr-xr-x root/root 0 2001-10-01 07:53:18
./usr/bin/-rwsr-xr-x root/root 22460 2001-10-01 07:53:18
./usr/bin/crontabdrwxr-xr-x root/root 0 2001-10-01 07:53:18
./usr/sbin/-rwxr-xr-x root/root 25116 2001-10-01 07:53:18
./usr/sbin/cronv , ls. , . ( ), 0. .
. 1.3 , . .
1.3.
TAR tar -tvf filename TAR, gzip
tar -tzvf filename
TAR, bzip2
tar -tjvf filename
CPIO cpio -tv < filename CPIO stdin stdout
, . ,
-
291.4.
//, .
. . , , .
. . 1.4 .
1.4.
— , , —
. .d c ,
. /dev;
b , . /dev;
l , . , , —
, . , r, w x. , . , w , . . 1.5 .
1.5.
rwx , rw- , —
r-x ,
—x ,
, setuid, setgid sticky. , .
-
30 1.
setuid , , , , . , , . root setuid, , . , ? setuid .
setgid , , . , , . setgid, , .
, setuid setgid , , x . x , , , .
setuid setgid . x s, , setuid . S, setuid, . , , . , root, .
Linux root , — . , root, , root.setuid, setgid x . s , setgid . S, , setgid, .
cron , crontab setuid, root. . 1.6 .
sticky, . , . Linux sticky , . ,
-
311.4.
, . , . , , , , . , sticky. , . , root . sticky /tmp.
1.6.
—
-rwxr-xr-x —
—
—
-rw-r-xr-x — ;
—
—
-rwsr-xr-x —
—
-rwSr-xr-x
—
-rwxr-sr-x —
—
-rwsr-sr-x —
-rwsr-Sr-x , ,
sticky t T. :
-rwxrwxrwt , sticky;
-rwxrwx—T , sticky.
1.4.3. , ,
. . 1.7 .
-
32 1.
1.7.
TAR tar -xf filename —
TAR, — gzip
tar -xzf filename
TAR, — bzip2
tar -xjf filename
CPIO cpio -i -d < filename
AR ar x filename
, , . , , CPIO . , , CPIO, /etc, . , CPIO , /etc/hosts. ,
/etc/hosts, , . , :cpio -t < foo.cpio/etc/hosts
/ , /etc/hosts, . , , , , . GNU —no-absolute-filenames, hosts
./etc/hosts., CPIO RPM, , .
, TAR, UNIX, . GNU TAR Linux / , TAR. , TAR UNIX, GNU TAR . , /
, .1.5. ,
.
-
331.5.
, . , . , , KDE GNOME, , , . , , , , , .
. , , . , . , . . upgrade, .
. . , , , . , , , .
: RPM ( RPM Package Manager1) Debian. . 1.8. , RPM Red Hat
Fedora, Suse. Debian Debian (Knoppix, Ubuntu .). pkgtool,
Slackware, portage, Gentoo.1.8. Linux
Red Hat RPMFedora RPMDebian DebKnoppix DebUbuntu DebGentoo
portageXandros DebMandriva ( Mandrake) RPMmepis DebSlackware
pkgtool1 Red Hat Package Manager.
-
34 1.
, . , , .
1.5.1. : ?
Linux 32 Intel , . , TAR. , .
Linux , . , . , , . , , .
. 1.9 , RPM. , GNU, . , . i386, Pentium Pentium II. , Linux
80386, .1.9.
i386 ; gss —
80386. , Pentium I
i486 . , 80486 ( )
i586 . GNU- i586 Pentium I. Pentium
i686 GNU- i686 Pentium Pro, Pentium II . Pentium II
ix86 , Pentium
-
351.6.
x86_64 AMD Opteron Intel Pentium 4 EM64T.
, 32-, 64- . — 64- , 32- , Opteron EM64T 32- Linux
IA64 64- Itanium. , Intel Hewlett-Packard,
ppc PowerPC G2, G3 G4, Apple Macintosh Apple iMac
ppc64 PowerPC G5 Apple iMacsparc SPARC, Sunsparc64 64- SPARC,
Sunmipseb MIPS, —SGI
1.5.2. Linux
, Linux . , , , . . , , :
; ( ) ; , ;
; (, ?);
.
1.6.
. Linux, , Windows, , .
: ,
-
36 1.
. , , .
: . , .
Linux . root, sudo. , . , , . .
1.6.1. ,
, . Linux , . , , . , root, . , , , .
, , , . , root. . , rpm . Debian, .
1.6.2.
. , . , . , ,
-
371.6.
. , .
, , . , . , , . (, 128), , . , , :
;
, , , .
md5sum MD51, 128 . md5sum . , . , :
$ md5sum foo.tar bar.taraf8e7b3117b93df1ef2ad8336976574f
*foo.tar2b1999f965e4abba2811d4e99e879f04 *bar.tarmd5sum, :
$ md5sum foo.tar bar.tar > md5.sums$ md5sum —check
md5.sumsfoo.tar: OKbar.tar: OK, 32 ( 4 ). , , . MD5 , , MD5. , , MD5, . MD5 , . , , MD5 .
1 MD5 Message Digest 5.
-
38 1.
1.6.3.
MD5, , , . , , , , . , , . , , .
, , : . , . , . . , . .
GNU Privacy Guard (GPG). GPG . 1.1.
. 1.1. GPG
1.6.4. RPM GPG
RPM GPG . RPM ,
-
391.6.
MD5, , RPM. RPM, , . GPG RPM. , MD5 , .
rpm checksig, , , . , GPG, rpm MD5. GPG, gpg ok. :
$ rpm checksig *.rpmabiword-2.2.7-1.fc3.i386.rpm: sha1 md5
OKabiword-plugins-impexp-2.2.7-1.fc3.i386.rpm: sha1 md5 OKabiword-plugins-tools-2.2.7-1.fc2.i386.rpm: sha1 md5
OKfirefox-1.0-2.fc3.i386.rpm: (sha1) dsa sha1 md5 gpg
OKdpkg-1.10.21-1mdk.i586.rpm: (SHA1) DSA sha1 md5 (GPG) NOT OK
(MISSING KEYS: GPG#26752624), RPM, GPG firefox dpkg. firefox, dpkg. , firefox , rpm . . dpkg
GPG, . , , . rpm .firefox , Red Hat Fedora. Fedora , Red Hat . . RPM , , Red Hat .
dpkg , Mandrake, Fedora. ., , dpkg , rpm , . , , rpm 4.3.2 . , , root. GPG . . ,
-
40 1.
, , . , . , GPG , , .
, GPG, — . Mandrake. :
$ rpm -qip dpkg-1.10.21-1mdk.i586.rpmName : dpkgVersion :
1.10.21 Vendor: MandrakesoftRelease : 1mdk Build Date: Thu May 20
07:03:20 2004Host: n1.mandrakesoft.comPackager : Michael Scherer URL :
http://packages.debian.org/unstable/base/dpkg.htmlSummary : Package
maintenance system for Debian. URL- mandrakesoft.com mandrake.org. — , 2004 , , , . Mandrake
Mandriva, . , , . , , : — .$ rpm —checksig
dpkg-1.10.21-1mdk.i586.rpmdpkg-1.10.21-1mdk.i586.rpm: …… (GPG)
NOT OK (MISSING KEYS: GPG 78d019f5).
Mandriva. Google http://mandriva.com. , , , . — . , Mandriva
.Google, , . www.keys.pgp.net, 0x78d019f5.
Search results for ‘0x78d019f5’
Type bits/keyID cr. time exp time key expirpub 1024D/78D019F5
2003-12-10uid MandrakeContrib sig sig3 78D019F5 2003-12-10 __________
__________ [selfsig]sig sig3 70771FF3 2003-12-10 __________
__________ Mandrake Linux -
411.6.
sig sig3 26752624 2003-12-10 __________ __________
MandrakeCooker sig sig3 45D5857E 2004-09-22 __________ __________
Fabio Pasquarelli (Lavorro) sig sig3 17A0F9A0 2004-09-22 __________
__________ Fafo (Personale)[email protected]sub 1024g/4EE127FA 2003-12-10sig sbind 78D019F5 2003-12-10
__________ __________ []Mandrake, , — Mandrake. 78D019F5, PGP . , 78D019F5.txt :
rpm —import 78D019F5.txt
, . :
rpm —checksig
dpkg-1.10.21-1mdk.i586.rpmdpkg-1.10.21-1mdk.i586.rpm: (sha1) dsa
sha1 md5 gpg OKgpg OK , .
, . pgp.net. , — , . , .
1.6.5. ,
, , , , , . , . , , , .
, . Linux , . , , .
. , , , OpenSSH. ,
-
42 1.
, . , . , . , , . 2.
, . , root, . , .
. , . /usr/sbin /sbin, . setuid setgid, root. , . ; .
, . , .
1.7.
. :
, ; TAR, CPIO ;
, ; , , ;
. , ,
, . , .
-
431.7.
, , .
, . Slackware, , . , . RPM . RPM , . , , ( Slackware).
. . , , . , , .
.
. . , .
, , , .
.
, , . , , , , SourceForge.net. , , . , .
1.7.1. , .
, Linux . , , . . , , .
-
44 1.
, , , . , gcc, foo.rpm. RPM :
$ rpm -qip foo.rpm
:
$ rpm -qi gcc
rpm RPM, , p. , .
, , , , , , . , , . . . 1.10 RPM Debian.
1.10.
RPM Debian rpm -qpi _ dpkg -s _ rpm -qpl _ dpkg -L _ / rpm -qp
-scripts _ dpkg -e rpm —checksig _ ,rpm -qp —requires _ dpkg -I
, (, , )
rpm -qp —provides _ dpkg -I
. , . , , . . . 1.11.
1.11.
RPM Debian — rpm -qi dpkg -s
rpm qa dpkg list
-
451.7.
RPM Debian , — —
rpm -ql dpkg -L
, —
rpm -V cd /;md5sum -c $@
# 3object.o: source.c gcc -c source.c -o $@
# 4program2: program2.c gcc -o program2 program2.c
, make , :
$ makeecho ‘main() {}’ > source.cgcc -c source.c -o
object.ogcc -o program object.omake Makefile , . , , 1. :
1 : program object.o:object.o y 3; 3 ; y object.o , program,
program gcc; -
572.2.
3 : object.o source.c:source.c y 2; 2 ; y source.c , object.o,
object.o gcc;2 : source.c : y source.c , echo.
, . , Makefile . , , 2 3 Makefile, .
, 4 . , make . 4 , program2 , program2.c . , 4 . make program2,
4. Makefile , .make Makefile, . , , . , program2.c , . :
$ make program2.o
program2.o , program2.c.
make , , . , . all Makefile. , , , Makefile:
program1: a.o b.o gcc -o program1 a.o b.o
program2: c.o d.o gcc -o program2 c.o d.o
make , program1 . , , :
$ make program1 program2
, make .
-
58 2.
all Makefile, program1 program2 :
all: program1 program2
program1: a.o b.o gcc -o program1 a.o b.o
program2: c.o d.o gcc -o program2 c.o d.o
make make all, program1, program2. all , fred . , make . , .
, , , , . : GNU make , :
.PHONY: all
make all .
Makefile: make
. :
VAR = valueVAR := value
, , := . , :
VAR = value
# ! VAR = $(VAR) more
# , := VAR := $(VAR) more
# GNU-, VAR = valueVAR += more
GNU make : define endef. GNU :
-
592.2.
define VARvalueendef
, .
, . ASCII, , .
make , . , = , .
:
, — ; ; — , $(); define , , — .
Makefile: ,
, , , :
$(MACRO) # ${MACRO} # ,
, , , . .
, , Makefile 1. , Makefile ,
1 , .
-
60 2.
, Makefile, . Makefile , . Makefile , Makefile . Makefile:
FLAGS = first
all: @echo FLAGS=$(FLAGS)
FLAGS = second
other: @echo FLAGS=$(FLAGS)
, FLAGS all, other, . FLAGS , . FLAGS , make , , , , .
Makefiles
Makefile , . Makefile , , . , , , .
, make , , . make , , Makefile. . make Makefile! :
$ echo «main() {}» > foo.c$ make foocc foo.c -o foo
, make , foo.c. foo.
Makefile . GNU make ,
-
612.2.
, . .
. , , GNU make , :
.c.o: $(COMPILE.c) $(OUTPUT_OPTION) $ foo.c$ gcc -c -Wall
foo.cfoo.c:1: warning: type defaults to ‘int’ in declaration of
‘x’foo.c:1: warning: data definition has no type or storage
classansi. pedantic, , . .
, . , , int, , . :
int foo(); //
, . , ANSI. , . , . , . .
, Wall , . , , -Wstrict-prototypes. , gcc (3.4.4) :
-
872.4.
foo.c:2: warning: function declaration isn’t a prototype
, , , , .
, Wall, , . GNU
printf, , . , . 2.9.
2.9. ,
printf scanfprintf vprintf scanf vscanffprintf vfprintf fscanf
vfscanfsprintf vsprintf sscanf vsscanfsnprintf vsnprintf, . %s printf, , , . , , , %s , char *. , . , :
1 #include 2 void foo(int x)3 {4 printf(«%s», x);5 }
Wall, :
$ gcc -c -Wall foo.cfoo.c: In function ‘foo’:foo.c:4: warning:
format argument is not a pointer (arg 2), ( printf) . %s , , char *, , int *, . .
, . , IA32 . IA32 ;
-
88 2.
, , . , printf .
, , , . IA32 , . , long int int . , long %d ( long %ld). IA32 ,
long , int. 64 . x86_64 (Opteron, Xeon/EM64T) int 32, long 64. , 64
.printf , scanf . , scanf . , . , scanf, .
, Wall, .
-Wformat-nonliteral , , , . , . , , , .
-Wformat-y2k strftime strptime, , printf. , .
, GNU- , , GNU
. , , .
Null pointer arguments ( NULL) NULL . , NULL . glibc 3.4.4, /++
.Missing parentheses ( ) , ,
-
892.4.
, if. . :
if ( x = y ) //versus… if ( x == y )
1 , . , 2. , . , :
if ( (x = y) )
Missing braces ( ) , if/else . :
1 void foo(int x, int y, int *z) 2 { 3 if ( x == y ) 4 if ( y ==
*z ) *z = 0.0; 5 else 6 *z = 1.0; 7 }, else 5 if 3, , else if 4. :
$gcc -c -Wall foo.c paren.c: In function ‘foo’: paren.c:3:
warning: suggest explicit braces to avoid ambiguous ‘else’, if else:
1 if (x == y) { 2 if (y == *z) { 3 *z = 0.0; 4 } 5 } 6 else 7 {
8 *z = 1.0; 9 }Uninitialized variables ( ) , . ,
-
90 2.
. , . :
1 int foo(int y) 2 { 3 int x; 4 if ( y > 0 ) { 5 x = 1; 6 } 7
return x; 8 }x , y
-
912.4.
5 virtual char *ptr() { return m_ptr; }; 6 ~Base() { delete []
m_ptr; } ; 7 }; 8 9 class Foo : public Base { 10 char *foo_ptr; 11
public: 12 Foo() { foo_ptr = new char[1024]; }; 13 virtual char
*ptr() { return foo_ptr; }; 14 virtual ~Foo() { delete [] foo_ptr;
} ; 15 };$ gcc -Wall -c polymorph.cpppolymorph.cpp:1: warning: ‘class
Base’ has virtual functions but nonvirtual destructorBase , , Foo *. , ~Foo . Base .
Reordered initializers ( ) , , , . , . , , . , :
1 struct Foo { 2 int m_two; // declaration 3 int m_one; 4 Foo(
int one ) 5 : m_one(one), // initializer 6 m_two(m_one+1) {}; 7 };
8 9 #include 10 11 int main(int argc, char **argv[]) 12 { 13 Foo
f(1); 14 std::cout -
92 2.
5 6. , . , , m_two , , . , m_two m_one, , m_two. , m_two
m_one.Deprecated features ( ) , STL (Standard Template Library) (,
iostream.h ). :warning: #warning This file includes at least one deprecated or
antiquated header. Please consider using one of the 32 headers
found in section 17.4.1.2 of the C++ standard. Examples include
substituting the header for the header for C++ includes, or instead
of the deprecated header . To disable this warning use
-Wnodeprecated1., , . , , #include . . . , std , using. , ++ ++. .
/ y -Wno-deprecated.
y ( )2.
y .
1 : . 32 17.4.1.2 ++. , . , Wnodeprecated.
2 using namespace std . , , .
-
932.4.
Incompatible ABI ( ABI) -Wall, Wabi. ABI (Application Binary
Interface), . ++, , Fortran, Fortran, . , Fortran ABI. ABI , .ABI , . ABI, ABI . ++ ABI. , ABI , ++. , , GNU ++, , , ABI . ++,
GNU 3., c , 2., , ABI.2.4.6.
, . , . , , , . :
$ g++ -Wall -o main main.o -lfoomain.o(.text+0x11): In function
‘main’:: undefined reference to ‘bar()’, , , , .
, ++, , . , ++ .
-
94 2.
++, , , . .
, , , , . , . nm. bar() , , :
$ nm -u main.o | grep bar U _Z3barv
_Z3barv , g++ 3.3.5 void bar(void). libfoo , , . , ++ . , , . ,
., , . , :
main.c1 extern void two();2 int main(int argc, char *argv[]) {
two(); }one.c1 void one(void) { }
two.c1 extern void one(void);2 void two(void) { one(); }
:
$ ar -clq libone.a one.o$ ar -clq libtwo.a two.o$ gcc -o main
main.c -L. -lone -ltwo./libtwo.a(two.o)(.text+0x7): In function
‘two’:/home/john/src/linker/two.c:5: undefined reference to
‘one’collect2: ld returned 1 exit statustwo() one(), libtwo.a libone.a . libone.a, l . two() main().
one() , , one(). -
952.5.
libtwo.a two() main(). one(). , one().
. :
$ gcc -o main main.c -L. -ltwo -lone
. , , , , .
2.5.
. make , ++. .
:
configure , GNU Makefile, make;
cons Perl, make;
make UNIX ++; scons cons Python, cons.
:
www.gnu.org/software/autoconf GNU autoconf, GNU;
www.gnu.org/software/make GNU make;www.python.org
Python;www.scons.org scons. -
3
3.1. : .
, . , .
, , . , .
3.2.
UNIX 1. , . , , man . GNU Texinfo, , info. man info, , .
man info , .
1 , , .
-
973.2.
3.2.1. man
HTML PDF, . , , Linux, . man , PDF. , man , .
man troff. , . , troff, HTML, , . HTML PDF. , , man PostScript,
t:$ man -t man | lp -Pps
, PostScript, .
man. Red Hat , RPM, man, Debian mandb. , man. mandb man, .
3.2.2. man Linux .
Filesystem Hierarchy Standard (www.pathname.com/fhs), , , man. .
3.1.3.1. Linux
1 2 3 4 /dev5 (, /etc)6 7 8
-
98 3.
man . sync, , 1, sync 2. man sync. , . , man, . man sync, :
$ man sync
man sync, , sync , 2. man , :
$ man 2 sync
, . Perl. 3 Fedora. POSIX ( ). man sync, 2. man, , :
$ man -a sync
man , Q man .
, , . , sync 2 sync(2), sync 3 sync(3). man, .
, , , . , . , man 8 (System Administration Commands ( )), 3
(Programming Libraries ( )). , ( ?). , man accept, 3, man accept
man accept Common UNIX Printer System, 8. , , , , . whatis: -
993.2.
$ whatis acceptaccept (8) — accept/reject jobs sent to a
destinationaccept (2) — accept a connection on a socketman , . , 8, 2. , man 2.
man , . Fedora Ubuntu ( Debian) /etc/man.config, Knoppix (
Debian) /etc/manpath.config. mandb ~/.manpath. (. 3.1).. 3.1. khelpcenter man
3.2.3. man: apropos
, . : apropos whatis.
-
100 3.
propos UNIX , , , . apropos , . , ( ).
, apropos NAME , . NAME, apropos . . , , , . , man manual ( ),
command () . . . ., . , compression () , apropos compression, : bzip2 gzip. ,
Fedora Core 4:$ apropos compressionCompress::Zlib (3pm) — Interface to zlib
…pbmtopsg3 (1) — convert PBM …SSL_COMP_add_compression_method
(3ssl) — handle …zlib (3) — compression/decompression …, compression () compress () compressor (), , , gzip bzip2 . .
whatis, :$ whatis gzip bzip2gzip (1) — compress or expand filesbzip2 (1)
— a block-sorting file compressor, v1.0.2apropos Red Hat . , mandb apropos Debian , , . 1. :
$ apropos ‘mag[tn]’mt (1) — control magnetic tape drive
operationmt-gnu (1) — control magnetic tape drive operation1 regex(7).
-
1013.2.
rmt (8) — remote magtape protocol modulermt-tar (8) — remote
magtape protocol modulexmag (1x) — magnify parts of the screenmag[tn] magtape ( ) magnify (), , . mandb apropos Debian e. , ,
compress (), compressor (). . 3.2 .3.2.
mandb-
man , . man ( ), . , , .
3.2.4. man: whatis
, man , , , . , , , readdir, man readdir, 2 , :
This is not the function you are interested in. Look at
readdir(3) for the POSIX conforming C library interface. This page
documents the bare kernel system call interface, which can change,
and which is superseded by getdents(2)1., man , , , POSIX. , . , man , whatis:
1 , . POSIX readdir(3), . , getdents(2).
-
102 3.
$ whatis readdirreaddir (2) — read directory entryreaddir (3) —
read a directoryman 3, :
$ man 3 readdir
whatis , , mandb . , , zip, :
$ whatis -w «*zip»funzip (1) — filter for extracting from a ZIP
..gunzip (1) — compress or expand filesgzip (1) — compress or
expand filesunzip (1) — list, test and extract compressed …zip
(1) — package and compress (archive) filesman . man a, man, . , . , man -a read Fedora Core 4 man. man ,
.3.2.5. man man Linux ,
7 1. man NAME, , . apropos.
, man NAME. , .
SEE ALSO man . , man, ( ). , , . , man , .
1 . man(7).
-
1033.2.
SEE ALSO . , man.
ENVIRONMENT , . , . , , . ENVIRONMENT .
, , CONFORMING TO, , . , . , Linux . , . , bcopy , memcpy,
CONFORMING TO bcopy, , 4.3BSD. memcpy 4.3BSD, , ISO C (ISO 9899),
.man BUGS. , , , . BUGS , , . , . , , , .
3.2.6. man ,
, . 1, :
$ whatis introintro (1) — Introduction to user commandsintro (2)
— Introduction to system callsintro (3) — Introduction to library
functionsintro (4) — Introduction to special filesintro (5) —
Introduction to file formatsintro (6) — Introduction to gamesintro
(7) — Introduction to conventions and miscellany sectionintro (8) —
Introduction to administration and privileged commands1 intro(2). .
-
104 3.
, , , , . , , , . 7, , , . . 3.3 7, .
3.3. 7 ,
ascii(7) ASCII . ,
, , Ctrl+G
boot(7) . , Linux
bootparam(7) , . , , ,
charsets(7) , Linux, . , — (i18n)
hier(7) Filesystem Hierarchy Standard, Linux. , : /bin /usr/bin?
, , ,man(7) man? , — troff, , man Linux
operator(7) . — , . :if ( 1 & 2 == 2 ) printf(bit one is
set\n);regex(7) , —
suffixes(7) Linux . — . . ,
units(7) , SI6 (SI Systme International dunits ). , , SI, 1 1
000 000, 1 048 576 ? , . , . -
1053.2.
units(7) SI ,
. , , . , 1 048 576 ( M). , , , . , . —
uri(7), url(7), urn(7) man, URL- . , URL, , , , —
, man, . 3.3, 7, , . , man.
3.2.7. GNU- info GNU
info. GNU man info.
GNU info Texinfo. troff, Texinfo HTML XML, . TeX ( ) Scribe, .
Texinfo , . troff, Texinfo HTML .3.2.8. infoGNU info GNU
Emacs. . 3.2 , info Emacs. Emacs, . info. , man, info , , less,
man. man info . , vi, less, -
106 3.
, vi. , info Emacs . info —vi-keys, vi , info , vi less.
. 3.2. Emacs info
, info. man, . , info, . info info, info, info. info info-stnd.
man , ., info . man, info. info info, man.
, Emacs info, pinfo (http://pinfo.alioth.debian.org). , man, .
info, , -
1073.2.
, . , , vi.
GUI, info. URL info:topic. GNOME gnomehelp, man info. !
KDE khelpcenter, info (. 3.3).
. 3.3. khelpcenter info
info , , . , , :
$ info «(make)Quick Reference»
, , , . pinfo info , khelpcenter, . , man, info :
$ info —subnodes some-topic | less
-
108 3.
—subnodes info stdout. less man.
3.2.9. info man, info
-apropos. info , -apropos, , info , apropos, man. man, . man, .
, , .info w, , whereis, , info , , man.
3.2.10. info GNU
man info, GNU man , gcc. Texinfo. man gcc 3.4.4, , 54 000 , info
158 000 . info , man ., info. . 3.4 .
3.4. info,
info coreutils ,
. UNIX — , . (Arnold Robbins) Linux Journal, — Opening the
software toolbox ( )cpp , — , . man . , — info
-
1093.2.
info gcc ,
man gcc, . —
ld , , , . , info
libc —
man info , .
3.2.11.
Linux : GNOME KDE. , . GNOME gnomehelp ( yelp), 2.10.0 GNOME. .
, . HTML, README HTML. Mozilla Firefox . , ? Mozilla Firefox
URL:$ firefox file:///usr/share/doc/someproject/README.html
, file: ( ). yelp , Mozilla Firefox. , , , :
$ yelp README.html
, yelp HTML , man man.
yelp, khelpcenter HTML. khelpcenter
-
110 3.
yelp. khelpcenter KDE, man info GNU. info, , , , man . SEE ALSO
man man, . . khelpcenter . , , .3.3.
, , , man info. , . README . , , .
3.3.1. /usr/share/doc Filesystem
Hierarchy Standard, man info. , README.
, , . , , README.
HTML man. . , Texinfo, , DocBook.
Debian doclinux, /usr/share/doc HOWTO The Linux Documentation
Project (www.tldp.org) ( ). .3.3.2.
. ,
-
1113.3.
, . Linux , , , . Linux , .
man, SEE ALSO. , DHCP dhcpd man. , dhcpd DHCP. , dhcpd.conf, .
man, SEE ALSO. man :SEE ALSO dhclient(8), dhcrelay(8), dhcpd.conf(5),
dhcpd.leases(5), man, . , man .
man apropos, . , , . , , man, . apropos , . , man. man
makewhatis, cron. , man . , , . , , , .mandb man , ( ) mandb. , mandb , makewhatis. cron. info . info
apropos —apropos. apropos, . -
112 3.
3.3.3. 1 .
. . , . , /usr/bin diffstat , . , man diffstat, . :
$ rpm -qf /usr/bin/diffstatdiffstat-1.38-2
, , /usr/bin/diffstat. diffstat1.382. , :
$ rpm -qi diffstat…Summary : A utility which provides
statistics based on the output of diff.Description : …, , , , , , . README HTML, . man. , . diffstat1.382 , man :
$ rpm -ql
diffstat/usr/bin/diffstat/usr/share/man/man1/man1/usr/share/man/man1/man1/diffstat.1.gzman1 man1, man . diffstat, , . . , , man, :
$ man /usr/share/man/man1/man1/diffstat.1.gz
, man , . Debian undocumented(7), man, .
-
1133.4.
3.4. Linux .
, , , . troff, man. , . , LaTeX, , . GNU Texinfo, . , HTML, . ?
: .3.4.1. TeX/LaTeX/DVI TeX LaTeX UNIX. LaTeX
TeX. TeX LaTeX, . TeX, , , , . TeX , , . , TeX .
TeX DVI ( Device Independent ). xdvi, kdvi evince, DVI .
TeX LaTeX .tex , . TeX latex; tex. LaTeX , , LaTeX, , . ,
Makefile.3.4.2. TexinfoTexinfo GNU.
GNU
-
114 3.
info Emacs . , info, /usr/share/info, Texinfo. Texinfo makeinfo.
Texinfo , info. .info, Texinfo .texi .texinfo., Texinfo, . Texinfo, , , /usr/share/doc. , , info.
Texinfo makeinfo. info, HTML, DocBook, XML .
3.4.3. DocBookDocBook SGML ( Standard Generalized
Markup Language), . , DocBook , SGML Document Type Definition
(DTD). SGML XML. DocBook , SGML: , . , .DocBook DTD SGML, XML, DocBook .sgml. DocBook , .
3.4.4. HTML HTML
, Texinfo, DocBook troff. , , , vi Emacs. , , JavaScript . yelp
khelpcenter . HTML /usr/share/doc.HTML, man . ,
-
1153.4.
NTP (Network Time Protocol) HTML, . 3.4.
. 3.4. HTML- NTP
3.4.5. PostScript PostScript, Adobe,
Portable Document Format (PDF). PostScript UNIX. ( , )
PostScript, , PDF.GNU Ghostscript PostScript UNIX. Ghostscript , PostScript,
PostScript ( ) . Ghostscript PostScript , .3.4.6. Portable Document Format (PDF) PDF
, , . ,
-
116 3.
, . , , .
Ghostscript PDF, Adobe Acrobat Reader. , . xpdf1 , . GNOME
evince , , xpdf. GNOME evince PostScript, PDF DVI.3.4.7. trofftroff man.
, UNIX2. groff GNU troff, , man. , :
$ man intro$ gzip -dc /usr/share/man/man1/intro.1.gz | groff
-man -Tascii | lessman man gzip.
groff DVI troff, . HP PCL PostScript. , UNIX. DVI, , .
3.5.
, . , . , .
3.5.1. www.gnu.org Linux,
.
1 . www.foolabs.com/xpdf.2 , , roff(7) .
, .
-
1173.5.
, , . GNU C (glibc), , , 1300 . 60 Texinfo GNU.
3.5.2. SourceForge.net ,
GNU, SourceForge.net, , . , , . , strace, Ubuntu,
SourceForge.net.$ dpkg -s stracePackage: straceMaintainer: Roland McGrath
Description: A system call tracer strace is a system call tracer,
i.e. a debugging tool …SourceForge.net, , man. , SourceForge.net , . RPM, , URL
RPM:$ rpm -qi straceName : stracePackager : Red Hat, Inc. URL :
http://sourceforge.net/projects/strace/Summary : Tracks and
displays system calls …RPM, , . Debian SourceForge.net .
3.5.3. The Linux Documentation Project
www.tldp.org, . man, Linux. , , , . .
-
118 3.
, HOWTO, Guides (), FAQ ( ) , , man.
, . Linux , . , , .
HOWTO , , . HOWTO , . HOWTO , , .
FAQ Usenet, 1. , . , FAQ , , , , . FAQ, , FAQ TLDP , ( ). ,
FAQ.FAQ The Linux Documentation Project
www.tldp.org/FAQ/LDP-FAQ/index.html.3.5.4. UsenetUsenet , .
Usenet , . , , . , .
, Usenet Google . , . , , , , .
, Usenet, . , . , .
1 , , FAQ Frequently Asked Questions.
-
1193.6. Linux
, Usenet . Usenet .
3.5.5. , .
, , , ( ). , , . , , .
(MARC) http://marc.theaimsgroup.com. Linux, , .
3.5.6. Linux Usenet ,
, . , , , . .
3.6. Linux
Linux . , . , Linux, . Linux. , http://kernel.org, . , , .
3.6.1. .
2.6 , ,
-
120 3.
. , , README, . What Is Linux ( Linux), . , , Makefile. , ,
:$ make help
Cleaning targets: clean — remove most generated files but keep
the config mrproper — remove all generated files + config + various
backup filesConfiguration targets: config — Update current config utilising
a line-oriented program menuconfig — Update current config
utilising a menu based program xconfig — Update current config
utilising a QT based frontend gconfig — Update current config
utilising a GTK based frontend oldconfig — Update current config
utilising a provided .config as base randconfig — New config with
random answer to all options defconfig — New config with default
answer to all options allmodconfig — New config selecting modules
when possible allyesconfig — New config where all options are
accepted with yes allnoconfig — New minimal configOther generic targets: all — Build all targets marked with [*]*
vmlinux — Build the bare kernel* modules — Build all modules
modules_install — Install all modules dir/ — Build all files in dir
and below dir/file.[ois] — Build specified target only rpm — Build
a kernel as an RPM package tags/TAGS — Generate tags file for
editors cscope — Generate cscope indexStatic analysers buildcheck — List dangling references to
vmlinux discarded sections and init sections from non-init sections
checkstack — Generate a list of stack hogs namespacecheck — Name
space analysis on compiled kernel -
1213.6. Linux
Kernel packaging: rpm-pkg — Build the kernel as an RPM package
binrpm-pkg — Build an rpm package containing the compiled kernel
& modules deb-pkg — Build the kernel as an deb packageDocumentation targets: Linux kernel internal documentation in
different formats: xmldocs (XML DocBook), psdocs (PostScript),
pdfdocs (PDF) htmldocs (HTML), mandocs (man pages, use
installmandocs to install)Architecture specific targets (i386):* bzImage — Compressed
kernel image (arch/i386/boot/bzImage) install — Install kernel
using (your) ~/bin/installkernel or (distribution)
/sbin/installkernel or install to $(INSTALL_PATH) and run lilo
bzdisk — Create a boot floppy in /dev/fd0 fdimage — Create a boot
floppy imagemake V=0|1 [targets] 0 => quiet build (default), 1 =>
verbose build make O=dir [targets] Locate all output files in
«dir», including .config make C=1 [targets] Check all c source with
$CHECK (sparse) make C=2 [targets] Force check of all c source with
$CHECK (sparse)Execute «make» or «make all» to build all targets marked with
[*]For further info see the ./README file, Kconfig, . , make config, make menuconfig . . Kconfig , .
3.6.2. Linux
, . modinfo , . . modinfo , . , . , ,
-
122 3.
modinfo, , . , .
3.6.3. ,
Documentation. 700 , , DocBook. DocBook . , , , :
$ make pdfdocs # C PDF-$ make mandocs # C man$ make psdocs # C
PostScript-, , .
3.7.
Linux , . . , Linux. .
3.7.1. ,
man UNIX. apropos man.
whatis whatis ( makewhatis) man.
info GNU, .
yelp GNOME, .
khelpcenter KDE. evince GNU DVI, PDF, PostScript .
-
1233.7.
makeinfo Texinfo (HTML, DocBook .).
gs Ghostscript; GNU PostScript.
xpdf PDF X Window.
3.7.2. -www.troff.org , troff.www.pathname.com/fhs Filesystem
Hierarchy Standard.http://marc.theaimsgroup.co m , .
www.foolabs.com/xpd f xpdf.www.gnome.org/projects/evince
evince.pinfo.alioth.debian.org pinfo. -
4
4.1. ,
. , , , , . , , .
. . , , . , .
, . , .
4.2. ,
, . . . , .
-
1254.2.
, IDE (Integrated Development Environment), . , . , , .
, . . , , , . Linux , . 4.1.
4.1.
vi/Vim Vi UNIX, —
POSIX. — , , , . Vim vi — , Linux
Emacs Emacs GNU- . — , — . Emacs GNU/Linux
, . , -, WordStar
GUI—
— GUI- , . : — . ,
vi Emacs. vi POSIX, , Linux UNIX. Emacs Linux. Emacs UNIX, .
-
126 4.
4.2.1.
, , , , . .
, , . . 4.2.
4.2.
, —
{}, () [], — . — , . , ,
— . , , , —
, — , . — , , . —
, . , — , .
. , , , . , —
-
1274.2.
ctags etags
. — . Emacs vi , , ,
— , — . , —
4.2.2. : vi Emacs
vi Emacs UNIX ( Linux). X, . ( ), . . vi Emacs , , , GUI. : ,
GUI 1.4.2.3. Vim: vi vi POSIX
UNIX. . , . Vim , Linux. Vim ( vi Improved vi) vi, , vi.
Vim
, Vim , . 4.2,
1 , .
-
128 4.
vi Linux. , . , . . , , , .
. 4.3 vi Vim. Vim ‘ , . , vi, Vim, vi, , Vim, Vim.
4.3. vi Vim
vi Vim —
GUI-
vi , . , , , GUI Emacs, , . vi : , Ex. , ( ) . , , vi.
, , vi ,
!. . , () . , , , . , vi . ,
-
1294.2.
. , vi, .
. 4.1 vi, .
. 4.1. vi
, , Esc. , . , , Ex.
vi. ?… , . , j, . . . , , , , .
. . i a . , , , . , jkhl , , .
, . . , 40j, 40 . , . , vi. , Vim .
-
130 4.
. 4.4
. , , . . jkhl, .
4.4. ,
j k h l Enter G . ,
. , — . , 50G 50-
+ —
—
% . — , (), {} [], —
[[ , — { .
]] [[, , —
{mark} , m. — m
() , — . , , , —
/{expr} . /, — . Enter. . ( ). . — ws . 4.18
-
1314.2.
?{expr} .
/, , — . —
n , —
N -,
w b
. , , . 4.4, , . , . . 4.5.
4.5.
Ctrl+F Ctrl+B Ctrl+] , . —
ctags, Ex :ta
Ctrl+T ( Back -)
,
, . . , . , , i. . 4.6 , .
4.6.
i , a ,
-
132 4.
I ,
A , —
o , —
O , —
, . 4.8, (d) . 4.12. Vim ( . 4.7) , . vi Vim. , 4s vi , . Vim
.4.7.
C , ,
. D (. . 4.10) A
c{motion} , — motion, . , . 4.4
{N}s () N , . c, , — . 5s c51
S () . — ( — )
4.8.
2cw ; —
cta
. — ta
5cta —
5S —
4.6 ()
-
1334.2.
, ,
. , (u), vi . Vim . vi , , Vim , . vi , . Vim , Ctrl+R. . 4.9 ,
.4.9.
u ,
.
Ctrl+R ( — Vim)
m{letter} . , —
. Ctrl+L . ,
zt
zz
zb
, , vi
(register) , (clipboard). , . (cut) (paste) vi (-) (yank) (put).
, (delete) , ., . , . 4.10,
-
134 4.
. vi, , , , 5, 5 .
4.10. ,
D ,
. ()
d{motion} , . motion. dd. (). , . 4.4
y{motion} ( ). — motion. yy. , — . 4.4
p () , ,
P () , ,
motion, , . motion , . 4.4, . 4.11.
, . 4.11, , . , . . 4.12 d y, , .
4.11.
f{char} ,
t{char} f, ,
F{char} ,
T{char} F, ,
-
1354.2.
4.12.
dfa ,
, , . : , a
dta , -, , . : a
5yta ,
yy4p — . : 1) yy ( ) 2) 4 ( )
dn , . d n
da , a. d — a
yG , . y G. , G
y50G , 50- , 50- . y 50G
d5l , — ( l , ). d 5l
5dd . — dd ,
, . 4.12, y d . , .
Ex vi
. Ex , vi, , Ex, . , Ex , , . Ex , . , Ex . Ex
-
136 4.
, , , . , , . , Ex .
. 4.1 , Ex , (:). Enter, Ex. Enter , vi .
Ex : , :
:[firstline][,lastline]command
, . . , . , . , , . , , , 25 30 , d :
:25,30d
. . 4.13.
4.13. Ex
. $ %
, 1,$a a. , —
m/{expr}/ , ?{expr}? , \/ \? \&
. 4.14 Ex, , , vi. , , , . , :w . , :
10,20w foo.dat
-
1374.2.
10 20 foo.dat. , . , .
4.14. Ex
write :w {filename}
. . vi . — :w! , , . :w!
quit :q vi ( , ). :q! , — vi . . :e
xit vi — . , . :x! , — , . :wq
edit :e {filename} . . , vi — , — , — . , :e!
delete :d map :map {a} {b} ,
.
set :set {argument} Vim (. . 4.18). .vimrc
help :help Vim. . vi, , vi, — Vim
-
138 4.
, , Ex, sed ( ). , , .
Vim
. , . , . Vim vi. Vim , , vi. , , . 4.15 .
4.15. , Vim
Ctrl+N/Ctrl+P , —
. , Vim — , -, , . , Ctrl+N, — Ctrl+P
Ctrl+T/Ctrl+D ( vi). — shiftwidth. 8 , set shiftwidth
Ctrl+R , Vim. :help registers. — . , , : % , . ()
Ctrl+V ( vi). , -, vi. —
,
Ex. , , , .
-
1394.2.
Ex substitute, subst , , s. Ex, , . 4.13. substitute :
:s/search/replacement/flags
. replacement flags . replacement , . (/), , . , vi , , . vi
::s/\/usr\/bin\/file1/\/usr\/bin\/file2\//
Vim ctags,
, Vim. ctags :
$ ctags -R
, , tags. Vim . POSIX , ctags vi , Fortran, ctags Exuberant,
Linux, , , C++, Java Python.vi Ex. . 4.16 , . Vim, , , vi. vi , ++, . , Vim , , Back .
4.16.
Ctrl+]
-
140 4.
:tag name :ta . ,
Ctrl+T
:pop :po ( Vim). —
Ctrl+T, ,
:tnext :tn ( Vim). , , — ++.
:tprevious :tp ( Vim). :tnext, ,
:tselect name :ts ( Vim). — , ,
:tags ( Vim). ,
Vim GUI , . 4.16, .
IDE. . Vim IDE, , , . , IDE, Vim Makefile. Vim make :make, . ,
Vim , . :make Ex::make arguments
:make make . , . Vim , . , ,
4.16 ()
-
1414.2.
. 4.17. , Vim. POSIX vi make, . 4.17.
4.17. , Vim
:make arguments :mak make
:cnext :cn , —
:cprev :cp ,
:cfile filename :cf — :cnext :cprev. make
vi , vi,
Ex :set. , vi .exrc, , Vim .vimrc. , Vim .exrc .vimrc. , vi. ,
.exrc , , , Vim, .vimrc. vi .exrc source .vimrc , .exrc::so ${HOME}/.exrc
.vimrc , Vim. . 4.18 , .vimrc .exrc.
4.18. ,
tabstop ts set ts=4 — ( 8). , ,
-
142 4.
shiftwidth sw set sw=4 , — ( 8). , tabstop
autoindent ai set ai — : ai , noai ( )
expandtabs et set et , — , tabstop. — (ASCII- \011)
wrapscan ws set ws : ( ), , . , Ex. , — .
syntax sy sy on ( Vim). . — , set
makeprg mp set mp=ant ( Vim). , make,
errorformat efm set efm=%f\ %d ( Vim). Vim scanf- , — , . Vim,
:help efm, :set, (, :syntax).
GUI
Vim GUI, , GNOME gvim, KDE kvim1.
1 , KDE GNOME , kvim gvim .
4.18 ()
-
1434.2.
GUI vi. , Vim, gvim (-y). Vim GUI, .
, GUI, vi. , . , , GUI, . , GUI, . . 4.19 , KDE GNOME.
4.19. , GUI- Vim
Knoppix (KDE) vim-gtkUbuntu (KDE) kvimUbuntu (GNOME)
vim-gnomeFedora
Мангейм Дж
Квалификационные характеристики программиста: требования ИТ-отрасли
Майкъл Дж e ксън
Мир героев Дж. Роулинг
MySQL 5.0. Библиотека программиста
Дж. Фроли — Подлинная астрология
Руководство программиста OPC Tuneller ‘Xpert’ уководство… · Многие из OPC протоколов базируются на Windows-технологиях:
FastReport 4.6 Руководство программиста · метод ShowReport. Задать настройки просмотра по умолчанию можно с помощью
Роджер Дж Джонстон Майкл Дж Тиммонс Джо С Уорнерscienceandglobalsecurity.org/ru/archive/sgsr15johnston.pdf · Существуют практические
дж. байрон (1)
50 Дж. Р.Р. Толкин
РУКОВОДСТВО AMEE № 84. ПРОБЛЕМНО ……2, 2018 77 Бейт Э., Хоммес Дж., Дювивье Р., Тейлор Д. Руководство AMEE 84. Проблемно-ориентированное
FastReport 4.6 Руководство программиста · Записывает отчет в поток. … Следующий пример показывает, как построить
СОДЕРЖАНИЕ — vcot.info5 Классики экономической мысли такие как М. Бэйли, Дж. Гэлбрейт, Дж. Кейнс, К. Маркс,
как воспитать программиста (Выступление в Sibirix)
ByndyuSoft 1 год глазами программиста
Автоматизация SEO без программиста
PHP настольная книга программиста
Дж. Бек Когнитивная Терапия
Perl & XML Библиотека Программиста
Профессиональные качества программиста
PM глазами программиста
Духовное руководство — Дж. Освальд Сандерс
Модуль АЦП ЦАП USB3000 Руководство программиста … › automation › r-technology › usb3000pr.pdf · Модуль АЦП/ЦАП usb3000 Руководство
Головатый А., Каплан-Мосс Дж. — Подробное руководство (2-е издание)(High Tech) — 2010
И-Класс (I-CLASS…компакт-диске с аксессуарами фирмы «Дейтамакс» можно найти «Руководство для программиста
дж, дз, апостроф
FastReport 4.6 Руководство программиста · 1.5 ПечаTтfьrx Rоeтpoчrеt.PтrаeviewOptions. В большинстве случаев печатать
Дж. Бек Когнитивная терапия
Вайнхолд Дж. Освобождение от созависимости
Руководство программиста · – таблицы CoreAPI.Range для текстового редактора, (см. раздел 3.19); – таблицы CoreAPI.CellRange
FastReport 3 Enterprise EditionВведение Данное руководство программиста содержит информацию о расширении библиотеки
Дж. Франзен — Поправки — 2008
Как воспитать программиста
профессиональные качества будущего программиста
Укажите регион, чтобы мы точнее рассчитали условия доставки
Начните вводить название города, страны, индекс, а мы подскажем
Например:
Москва,
Санкт-Петербург,
Новосибирск,
Екатеринбург,
Нижний Новгород,
Краснодар,
Челябинск,
Кемерово,
Тюмень,
Красноярск,
Казань,
Пермь,
Ростов-на-Дону,
Самара,
Омск
Назад к каталогу
ISBN 978-5-4461-9369-1
Тип издания:
Дополнительная литература
Издательство:
Санкт-Петербург: Питер
Аннотация
Данное руководство позволит вам освоить обширный перечень инструментов с открытым исходным кодом, доступных для GNU/Linux. Автор книги, Джон Фуско, подробно и доступно описывает наиболее полезные из них, используя наглядные краткие примеры, которые легко видоизменять и использовать на практике. Начав с самых основ — загрузки, построения и установки, — вы узнаете, как распределены инструменты с открытым кодом и как найти оптимальное решение для той или иной задачи, углубите свои знания о ядре Linux и способах взаимодействия ОС с программным обеспечением. Изложение теоретической информации в книге ориентировано на последующее практическое применение. Освоив ее, вы сможете пользоваться самыми продвинутыми инструментами, применяя их для разработки собственных приложений, а также для увеличения производительности ПО и его отладки.
Библиографическое описание
Скопировать библиографическое описание
Фуско Дж. Linux. Руководство программиста. — Санкт-Петербург : Питер, 2021. — 448 с. — ISBN 978-5-4461-9369-1. — URL: https://ibooks.ru/bookshelf/377961/reading (дата обращения: 24.09.2023). — Текст: электронный.