Категории
Самые читаемые
💎Читать книги // БЕСПЛАТНО // 📱Online » Компьютеры и Интернет » Программное обеспечение » UNIX — универсальная среда программирования - Брайан Керниган

Читаем без скачивания UNIX — универсальная среда программирования - Брайан Керниган

Читать онлайн UNIX — универсальная среда программирования - Брайан Керниган

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
1 ... 79 80 81 82 83 84 85 86 87 ... 103
Перейти на страницу:

В третьих, выполняйте работу поэтапно. Постройте какую-нибудь простую полезную программу и, исходя из своего опыта, определите, что (если вообще что либо нужно) следует делать далее. Не добавляйте к ней средства, пока вы на практике не выясните, что именно необходимо.

В-четвертых, создавайте инструментарий. Пишите программы, которые "стыкуются" с существующей средой, усиливая их, а не просто расширяя их возможности. Хорошо построенные, такие программы сами становятся частью чьего либо инструментария.

Разумеется, система не вполне совершенна. Читая книгу, вы сталкивались со многими условностями, бессмысленными различиями в программах и произвольными ограничениями. Однако, несмотря на все свои недостатки, UNIX, в самом деле, хороша в том, для чего она предназначена: в обеспечении удобной среды программирования. И хотя система уже начала обнаруживать признаки "среднего возраста", она все еще жизнеспособна и все еще популярна. Это заслуга нескольких одаренных человек, которые в 1969 г. набросали на доске проект удобной среды программирования, получившей впоследствии высокую оценку целого поколения программистов.

Приложение 1

Краткое описание редактора

Стандартный текстовый редактор UNIX создан К. Томпсоном в начале 70-х годов для вычислительной среды на малых машинах (первая система UNIX ограничивала предельный размер программ пользователя до 8К байт) с терминалами "твердой копии", работавшими при очень низких скоростях (10-15 символов в секунду). Этот редактор написан на базе более ранней версии qed, которая была в то время популярна.

С развитием технологии ed постигла та же судьба. Почти наверняка вы найдете в своей системе другие редакторы с интересными свойствами, в частности с возможностью "визуального", или "экранного", редактирования, при котором на экране терминала отражаются все вносимые вами коррективы.

Почему же тогда мы тратим время на, казалось бы, устаревшую программу? Дело в том, что ed выполняет некоторые операции весьма успешно, несмотря на свой возраст. Эта программа есть на всех установках UNIX, и вы всегда найдете ее при переходе с одной системы на другую. Она работает хорошо и с низкоскоростными телефонными линиями, и с любыми терминалами. Кроме того, ed легко запускать из командного файла, в то время как большинство экранных редакторов управляются с терминала и не могут должным образом получить входной поток из файла.

Редактор ed предоставляет регулярные выражения для поиска по образцу. Регулярные выражения, на которых основан ed, присутствуют во всех частях системы: grep и sed применяют почти такие же, a egrep, awk, lex расширяют их. Shell использует для сравнения имен файлов иной синтаксис, но те же самые идеи. Некоторые экранные редакторы имеют "строчный режим", который предусматривает обращение к регулярным выражениям ed.

И, наконец, ed обладает высоким быстродействием. Вполне возможно вызвать ed, заменить в файле одну строку, записать новую версию и вернуться из него, причем все это происходит быстрее, чем один только запуск большого и более сложного экранного редактора.

Основные сведения

Программа ed редактирует один файл за один раз. Она работает с копией файла. Чтобы внести исправления в первоначальный файл, вы должны дать явную команду. Редактор предоставляет команды для манипуляций с последовательными строками или строками, соответствующими образцу, а также команды для внесения в строки изменений.

Каждая команда ed представляет собой символ (обычно букву). Большинству команд может предшествовать один или два номера строки, которые указывают, на какую строку или строки должна воздействовать команда: в противном случае подразумевается номер, принятый по умолчанию. Номер строки можно специфицировать абсолютной позицией в файле (1, 2 ...), символами $ для последней строки и "." для текущей, процедурой поиска по образцу, использующей регулярные выражения, и их аддитивными комбинациями.

Рассмотрим, как с помощью ed можно создавать файлы, используя стихи Де Моргана из первой главы.

$ ed poem

? poem Предупреждение: файл poem не существует

а      Начать добавление строк

Great fleas have little fleas

 upon their backs to bite 'em,

And little fleas have lesser fleas,

 and so ad infinitum.

.      Печатаем '.' чтобы закончить ввод

w poem Пишем строки в файл poem

121    ed сообщает, что записан 121 символ

q      Выход

Команда а добавляет или присоединяет строки. Режим добавления заканчивается строкой, состоящей из одной точки. Из-за отсутствия индикации режима, в котором вы работаете, возможны две распространенные ошибки: ввод текста без команды а и ввод команды до ввода '.'.

Редактор ed никогда не будет писать ваш текст в файл автоматически; вы должны задать это с помощью команды w. Однако, если вы пытаетесь закончить редактирование без записи ваших изменений, ed выдает '?' как предупреждение. Есть другая команда q, позволяющая завершить работу независимо от внесения исправлений.

$ ed poem

121       Файл существует и имеет 121 символ

а         Добавить еще строки в его конец

And the great fleas themselfs, in turn,

 have greater fleas to go on;

While these again have greater still,

 and greater still, and so on.

.         Печатаем '.' для завершения

q         Пытаемся выйти

?         Предупреждение: не было записи

w         Нет имени файла; подразумевается poem

263

q         Теперь можно выходить

$ wc poem Проверьте для уверенности

8 46 263 poem

$

Временная передача управления shell с помощью '!'

Если вы запустили ed, то можете временно выйти из него, чтобы запустить другую команду shell. В этом случае нет необходимости прекращать работу достаточно ввести команду ed '!'.

$ ed poem

! wc poem Запуск wc без выхода из ed

8 46 263 poem

!         Вернулись из команды

q         Выход без w годится: не было исправлений

$

Печать

Строки файла нумеруются как 1, 2 … Вы можете печатать n-ю строку, дав команду np или просто номер n, и строки с m по n, используя m,np. "Номером строки" $ обозначается последняя строка, так что строки можно не считать.

1 Печатать первую строку; 1р то же самое $ Печатать последнюю строку; $p то же самое 1,$p Печатать строки с первой по последнюю

Печатать файл по одной строке проще всего; нажимая клавишу RETURN, вы можете вернуться на одну строку назад с помощью '-'. Можно комбинировать номера строк с '+' и '-'.

$-2,$p Печатать последние три строки 1,2+3p Печатать строки с первой по пятую

Однако нельзя печатать после конца файла или в обратном порядке; команды типа $,$+1p и $,1p считаются незаконными.

Команда list 1 выводит текст в формате с видимыми символами. Это удобно при поиске в файлах управляющих символов, при различении пробелов, табуляции и т.п. (см. vis в гл. 7).

Образцы

Как только размер начинает превышать две строки, становится неудобным печатать его весь целиком, чтобы отыскать нужную строку. Редактор ed предлагает способ поиска строк, совпадающих с некоторым образцом, шаблоном: /pattern/ обнаруживает очередное вхождение pattern.

$ ed poem 263

/flea/ Ищет очередную строку, содержащую flea

Great fleas have little fleas

/flea/ Ищет еще одну

And little fleas have lesser fleas,

//     Ищет следующую по тому же образцу

And the great fleas themselves, in turn,

??     Поиск в обратном направлении по тому же образцу

And little fleas have lesser fleas,

Редактор запоминает образец, применявшийся вами в последний раз, так что можно повторить поиск просто с помощью //. Для поиска в обратном направлении воспользуйтесь ?pattern? и ??.

Поиск с помощью /.../ и ?...? циклический, т.е. продолжается в обратном направлении после достижения одного из концов текста:

$p     Печатать последнюю строку ('p' необязательна)

and greater still, and so on.

1 ... 79 80 81 82 83 84 85 86 87 ... 103
Перейти на страницу:
На этой странице вы можете бесплатно скачать UNIX — универсальная среда программирования - Брайан Керниган торрент бесплатно.
Комментарии