| 3.8.69 zap2 | |
| 3.8.70 zap.c | |
| Керниган Б. В., Пайк Р. UNIX — универсальная среда программирования | 1 |
| Предисловия | 1 |
| Предисловие к русскому изданию | 1 |
| Предисловие | 1 |
| Глава 1 UNIX для начинающих | 2 |
| Что такое UNIX? В узком смысле слова это ядро операционной системы разделения времени, т.е. про... | 2 |
| 1.1 Итак, приступаем | 3 |
| 1.2 Повседневная работа: файлы и основные команды | 6 |
| 1.3 Продолжаем изучать файлы: каталоги | 11 |
| 1.4 Интерпретатор shell | 12 |
| 1.5 Другие средства UNIX | 17 |
| Глава 2 Файловая система | 17 |
| Все, с чем работает система UNIX, она воспринимает в виде файла. Это не такое уж упрощение, как... | 17 |
| 2.1 Основные сведения о файлах | 17 |
| 2.2 Что хранится в файле? | 19 |
| 2.3. Каталоги и имена файлов | 20 |
| 2.4. Права доступа | 22 |
| 2.5 Индексные дескрипторы | 24 |
| 2.6 Иерархия каталогов | 27 |
| 2.7 Файлы устройств | 28 |
| Глава 3 Возможности интерпретатора shell | 30 |
| Интерпретатор shell — это наиболее важная программа для пользователей UNIX, быть может, за искл... | 30 |
| 3.1 Структура командной строки | 31 |
| 3.2 Метасимволы | 32 |
| 3.3 Создание новых команд | 34 |
| 3.4 Аргументы и параметры команд | 35 |
| 3.5 Результат выполнения программы в качестве аргумента | 37 |
| 3.6 Переменные языка shell | 38 |
| 3.7 Еще раз о переключении ввода-вывода | 39 |
| 3.8 Циклы в shell-программах | 40 |
| 3.9 Программа bundle : соберем все воедино | 41 |
| 3.10 Для чего нужно программировать на языке shell! | 42 |
| Глава 4 Фильтры | 43 |
| Существует большое число программ UNIX, которые читают входной поток, выполняют простые операци... | 43 |
| 4.1 Семейство программ grep | 43 |
| 4.2 Другие фильтры | 46 |
| 4.3 Потоковый редактор sed | 47 |
| 4.4 Язык awk поиска и обработки шаблонов | 50 |
| 4.5 Хорошие файлы и хорошие фильтры | 57 |
| Глава 5 Программирование на языке shell | 57 |
| Большинство пользователей считают, что shell представляет собой диалоговый интерпретатор команд... | 57 |
| 5.1 Совершенствование команды cal | 58 |
| 5.2 Что представляет собой команда which ? | 60 |
| 5.3 Циклы while и until : контроль входа в систему | 63 |
| 5.4 Команда trap : обработка прерываний | 65 |
| 5.5 Команда overwrite : замена файла | 66 |
| 5.6 Команда zap : уничтожение процесса по имени | 68 |
| 5.7 Команда pick : пробелы или аргументы | 69 |
| 5.8 Команда news : служба информации пользователей | 70 |
| 5.9 Команды get и put : контроль изменении файла | 72 |
| 5.10 Заключение | 74 |
| Глава 6 Программирование с помощью стандартных функций ввода-вывода | 74 |
| До сих пор мы использовали существующие инструменты, чтобы разрабатывать новые, но сейчас уже д... | 74 |
| 6.1 Стандартные входной и выходной потоки: программа vis | 75 |
| 6.2 Аргументы программы: vis версия 2 | 76 |
| 6.3 Доступ к файлам: vis версия 3 | 77 |
| 6.4 Вывод на экран порциями: программа p | 79 |
| 6.5 Пример: pick | 81 |
| 6.6 Об ошибках и отладке | 82 |
| 6.7 Пример: zap | 83 |
| 6.8 Диалоговая программа сравнения файлов: idiff | 84 |
| 6.9 Доступ к среде | 86 |
| Глава 7 Системные вызовы в UNIX | 87 |
| В настоящей главе мы рассмотрим самый низкий уровень взаимодействия с операционной системой UNI... | 87 |
| 7.1 Ввод-вывод низкого уровня | 87 |
| 7.2 Файловая система: каталоги | 90 |
| 7.3 Файловая система: индексные дескрипторы | 92 |
| 7.4 Процессы | 95 |
| 7.5 Сигналы и прерывания | 97 |
| Глава 8 Разработка программ | 100 |
| Первоначально системе UNIX предназначалась роль среды для разработки программ. В настоящей глав... | 100 |
| 8.1 Этап 1: калькулятор с четырьмя действиями | 100 |
| 8.2 Этап 2: переменные и восстановление после ошибки | 104 |
| 8.3 Этап 3: переменные с произвольными именами | 105 |
| встроенные функции | 111 |
| 8.4 Этап 4: компиляция на машину | 114 |
| 8.5 Этап 5: структуры управления и операции отношений | 117 |
| 8.6 Этап 6: функции и процедуры | 122 |
| ввод-вывод | 123 |
| 8.7 Оценка времени выполнения | 124 |
| 8.8 Заключение | 124 |
| Глава 9 Подготовка документации | 124 |
| Средства редактирования и форматирования документации стали одним из ранних приложений системы ... | 127 |
| 9.1 Пакет макроопределений ms | 129 |
| 9.2 Уровень troff | 133 |
| 9.3 Препроцессоры tbl и eqn | 135 |
| 9.4 Справочник | 135 |
| 9.5 Дополнительные средства для подготовки документации | 136 |
| Глава 10 Эпилог | 143 |
| Приложение 1 Краткое описание редактора | 145 |
| Приложение 2 Справочное руководство по hoc | 145 |
| Приложение 3 Исходные тексты калькулятора hoc | 145 |
| These files contain all the code from "The Unix Programming Environment", by Brian Kernighan an... | 145 |
| 3.1 hoc1 | 145 |
| 3.1.1 makefile | 146 |
| 3.1.2 hoc.y | 146 |
| 3.1.3 hoc1.y , версия 1.5 | 146 |
| 3.2 hoc2 | 147 |
| 3.2.1 hoc.y | 147 |
| 3.2.2 makefile | 147 |
| 3.3 hoc3 | 147 |
| 3.3.1 makefile | 147 |
| 3.3.2 hoc.h | 148 |
| 3.3.3 hoc.y | 149 |
| 3.3.4 init.c | 149 |
| 3.3.5 math.c | 149 |
| 3.3.6 symbol.c | 149 |
| 3.4 hoc3 с lex | 150 |
| 3.4.1. hoc.h | 150 |
| 3.4.2 hoc.y | 151 |
| 3.4.3 init.c | 151 |
| 3.4.4. lex.l | 151 |
| 3.4.5 makefile | 151 |
| 3.4.6 math.c | 152 |
| 3.4.7 symbol.c | 152 |
| 3.5 hoc4 | 153 |
| 3.5.1 code.c | 153 |
| 3.5.2 hoc.h | 154 |
| 3.5.3 hoc.y | 155 |
| 3.5.4 init.c | 155 |
| 3.5.5. makefile | 155 |
| 3.5.6. math.c | 156 |
| 3.5.7 symbol.c | 156 |
| 3.6 hoc5 | 158 |
| 3.6.1 code.c | 158 |
| 3.6.2 fib | 158 |
| 3.6.3 fib2 | 158 |
| 3.6.4 hoc.h | 160 |
| 3.6.5 hoc.y | 160 |
| 3.6.6 init.c | 160 |
| 3.6.7 makefile | 161 |
| 3.6.8 math.c | 161 |
| 3.6.9 symbol.c | 161 |
| 3.7 hoc6 | 161 |
| 3.7.1 ack | 161 |
| 3.7.2 ack1 | 164 |
| 3.7.3 code.c | 165 |
| 3.7.4 double | 165 |
| 3.7.5 fac | 165 |
| 3.7.6 fac1 | 165 |
| 3.7.7 fac2 | 165 |
| 3.7.8 fib | 165 |
| 3.7.9 fib2 | 165 |
| 3.7.10 fibsum | 165 |
| 3.7.11 fibtest | 165 |
| 3.7.12 hoc.h | 168 |
| 3.7.13 hoc.ms | 171 |
| 3.7.14 hoc.y | 172 |
| 3.7.15 init.c | 172 |
| 3.7.16 makeapp | 172 |
| 3.7.17 makefile | 173 |
| 3.7.18 math.c | 173 |
| 3.7.19 mbox | 173 |
| 3.7.20 symbol.c | 173 |
| 3.8 Всякая всячина | 173 |
| 3.8.1 addup1 | 173 |
| 3.8.2. addup2 | 174 |
| 3.8.3 backup | 174 |
| 3.8.4 backwards | 174 |
| 3.8.5 badpick.c | 174 |
| 3.8.6 bundle | 174 |
| 3.8.7 cal | 174 |
| 3.8.8 calendar1 | 174 |
| 3.8.9 calendar2 | 174 |
| 3.8.10 calendar3 | 174 |
| 3.8.11 cat0.c | 175 |
| 3.8.12 checkmail.c | 175 |
| 3.8.13 checkmail.sh | 175 |
| 3.8.14 cp.c | 175 |
| 3.8.15 doctype | 175 |
| 3.8.16 double | 176 |
| 3.8.17 efopen.c | 176 |
| 3.8.18 error.c | 176 |
| 3.8.19 field1 | 176 |
| 3.8.20 field2 | 176 |
| 3.8.21 fold | 176 |
| 3.8.22 frequent | 176 |
| 3.8.23 frequent2 | 176 |
| 3.8.24 get | 176 |
| 3.8.25 get.с | 176 |
| 3.8.26 getname | 178 |
| 3.8.27 idiff.c | 178 |
| 3.8.28 makefile | 178 |
| 3.8.29 newer | 178 |
| 3.8.30 news1 | 178 |
| 3.8.31 news2 | 178 |
| 3.8.32 news3 | 178 |
| 3.8.33 nohup | 178 |
| 3.8.34 older | 179 |
| 3.8.35 overwrite1 | 179 |
| 3.8.36 overwrite2 | 179 |
| 3.8.37 overwrite3 | 179 |
| 3.8.38 p1.c | 180 |
| 3.8.39 p2.c | 180 |
| 3.8.40 p3.c | 181 |
| 3.8.41 p4.c | 181 |
| 3.8.42 pick1 | 181 |
| 3.8.43 pick.c | 181 |
| 3.8.44 prpages | 182 |
| 3.8.45 put | 182 |
| 3.8.46 readslow.c | 182 |
| 3.8.47 replace | 182 |
| 3.8.48 signaltest.c | 183 |
| 3.8.49 spname.c | 183 |
| 3.8.50 strindex.c | 184 |
| 3.8.51 sv.c | 184 |
| 3.8.52 system1.c | 184 |
| 3.8.53 system.c | 184 |
| 3.8.54 timeout.c | 184 |
| 3.8.55 toolong | 185 |
| 3.8.56 ttyin1.c | 185 |
| 3.8.57 ttyin2.c | 185 |
| 3.5.58 vis1.c | 185 |
| 3.5.59 vis2.c | 186 |
| 3.8.60 vis3.c | 186 |
| 3.8.61 waitfile.c | 186 |
| 3.8.62 watchfor | 186 |
| 3.8.63 watchwho | 186 |
| 3.8.64 which1 | 186 |
| 3.8.65 which1.H | 187 |
| 3.8.66 which2 | 187 |
| 3.8.67 wordfreq | 187 |
| 3.8.68 zap1 | 187 |
В книге американских авторов — разработчиков операционной системы UNIX — блестяще решена проблема автоматизации деятельности программиста, системной поддержки его творчества, выходящей за рамки языков программирования. Профессионалам открыт богатый \"встроенный\" арсенал системы UNIX. Многочисленными примерами иллюстрировано использование языка управления заданиями shell . Для программистов-пользователей операционной системы UNIX.