Заимствование из UNIX.
Тем временем в Linux.
Сообщения BugNet.

Заимствование из UNIX

Как и многое из того, что связано с UNIX, составляющие базовый комплект инструментов утилиты предназначены в первую очередь для тех, кто занимается разработкой программного обеспечения. Но многие из них пригодны и для выполнения задач системного администрирования. Эти утилиты имеет смысл импортировать в среду Windows, если вы готовы потратить на знакомство с ними немного времени.

Все под контролем. По старой памяти, как бывший разработчик ПО, я начал свои поиски с версии для Windows утилиты системы контроля за редакциями документов (Revision Control System, RCS). В полном соответствии со своим названием, RCS позволяет осуществлять контроль за вносимыми в файлы изменениями. Другими словами, если в файл периодически вносятся изменения, то все его последовательные редакции можно сохранить в RCS, благодаря чему вы можете вернуться к любой ранее сохраненной версии файла. Система хранит только текущий файл и изменения, необходимые для возврата к любой из предыдущих версий, поэтому она более эффективна, чем хранение множества версий одного и того же файла.

Копию RCS-подобной программы можно взять бесплатно на http://www.componentsoftware.com. Из-за ограниченности места я не могу вдаваться в подробности, зачем и почему нужна эта программа, но основная идея состоит в том, что она позволяет продемонстрировать возмущенному пользователю, что командный файл регистрации не менялся с прошлого месяца и что строка, на которую он в претензии, не изменялась с прошлого года.

В погоне за собственным хвостом. Если RCS является всеобъемлющей системой, то инструмент tail представляет собой небольшое удобное средство — так, ничего особенного. Он всего лишь показывает последние несколько строк файла и обновляет вывод всякий раз при добавлении новой строки в конец файла. Это позволяет видеть последнюю записанную в журнальном файле информацию.

Аналог tail, который мне удалось отыскать, — Tail32 for Win32 — не только бесплатен, но и лучше своего прообраза для UNIX. С одной стороны, Tail32 использует Windows Multiple Document Interface (MDI), поэтому он позволяет видеть последние строки нескольких файлов одновременно (конечно, в UNIX можно запустить несколько экземпляров tail, но в мире NT иметь MDI весьма неплохо). С другой стороны, Tail32 способен осуществлять грамматический разбор добавляемых в файл новых строк с выделением ключевых фраз другим цветом. Например, все найденные вхождения выражения File Not Found могут быть выделены жирным шрифтом красного цвета. Копию Tail32 можно загрузить с http://www.objektiv.demon.co.uk/.

Оптовая замена. До недавнего времени ни один из виденных мной собственных инструментов Windows не мог сравниться с командой sed потокового редактора UNIX по части перемалывания множества файлов, замены в них при необходимости текста и выполнения сложных преобразований (наподобие «добавить данный символ в конец каждой строки, если только это не символ «как его там», в таком случае удалить первый символ строки»). Синтаксис sed просто ужасен, но, освоив его, вы получаете в свое распоряжение мощный универсальный инструмент.

Условно-бесплатный инструмент Windows под названием TextPipe делает все, на что способена sed, плюс кое-что еще да вдобавок «упаковывает» весь процесс в графический интерфейс, пользоваться которым в миллион раз проще. При цене 26 долларов это одно из лучших приобретений, которое вы в состоянии сделать.

TextPipe можно использовать, например, когда в 200 конфигурационных файлах надо изменить +=option4 на ++option17 или на что вам требуется. Далее, если каждый из этих конфигурационных файлов находится в отдельном пользовательском подкаталоге, то диску с подкаталогами можно присвоить в качестве имени какую-нибудь из неиспользуемых букв дисков и поручить TextPipe найти все файлы с указанным расширением во всех подкаталогах, начиная с корня, и внести в каждый из них соответствующие изменения, если данный файл содержит заданный текст.

К сожалению, когда дело касается нахождения файлов, куда необходимо внести исправления, TextPipe оказывается не очень силен. Однако поиск можно выполнить с помощью другого инструмента, сохранить список найденных файлов в виде текста ASCII и задать этот список в качестве аргумента TextPipe.

Прекрасным инструментом для проведения такого сложного поиска и составления списка файлов является Windows Script Host (WSH), где вы можете использовать JavaScript (в действительности, если быть точным, это JScript) или VBScript для выполнения, по сути, сколь угодно сложного поиска. WSH рассматривался ранее в одном из предыдущих выпусков раздела «Тысяча мелочей», но это столь универсальное средство для выполнения административных задач, что оно заслуживает повторного упоминания. В данном конкретном приложении вы можете воспользоваться преимуществом поддержки регулярных выражений в обоих языках сценариев. Конечно, эту задачу можно решить с помощью Perl — этого непременного, по мнению некоторых, инструмента обработки регулярных выражений.

Необходимо извлечь только адреса из плохо форматированного списка имен и адресов электронной почты. В TextPipe имеется для этого фильтр. Необходимо удалить все начальные пробелы на странице Web, с которой вы скопировали некий текст? Опять же, в TextPipe есть предопределенный фильтр. Я не могу сказать в точности, для чего он может пригодиться еще, но если вам приходится иметь дело с текстовыми списками, то поверьте мне, он будет незаменим.

Все сразу. Наконец, если вам необходимо иметь все стандартные команды UNIX на машине с Windows или DOS, я советовал бы приобрести UnixDOS Toolkit от Professional Software Systems. При цене 60 долларов он вполне доступен и, как показывает мое краткое с ним знакомство, действительно соответствует своим обещаниям.

ТЕМ ВРЕМЕНЕМ В LINUX

Комментарий редактора. Для тех, кто собирается использовать свой инструментарий UNIX в их родной среде, замечу, что некоторые старые средства подверглись весьма любопытным модификациям. Р. Сараванан создал интересную замену для «почтенного» окна XTERM, с помощью которой... но, впрочем, он сам об этом расскажет. Другие подробности и загружаемую версию самой программы можно найти на http://pages.prodigy.net/hmmanju/xmlterm/.

XMLterm представляет собой «терминальную» программу, как и XTERM, используемый обычно в среде X Window во многих системах UNIX, и в Linux в том числе. XMLterm дополняет интерфейс XTERM мощными гипертекстовыми и графическими возможностями за счет использования расширяемого языка разметки (Extensible Markup Language, XML) — отсюда и его имя. Программное обеспечение XMLterm предоставляется в открытых кодах и реализуется с помощью библиотек компонентов Mozilla.

XMLterm может рассматриваться как графический интерфейс командной строки (Command Line Interface, CLI). Он создавался со скромной целью предоставить пользователю командной строки удобный доступ к графическим возможностям. По этой причине XMLterm полностью обратно совместим с XTERM и его предшественником — интерфейсом терминала VT100. Это означает, что он позволяет использовать обычные текстовые программы shell, такие, как bash и tcsh.

Основная заложенная при создании XMLterm философия состоит в том, что пользовательский интерфейс представляет собой динамический документ XML. Пользователь и компьютер взаимодействуют, по очереди внося добавления в этот документ XML. Текстовое наполнение документа (т. е. все, за исключением разметки) соответствует отображаемому XTERM тексту. Разметка в документе XML служит для добавления графических и гипертекстовых возможностей. Для отображения документа XMLterm использует механизм компоновки браузера.

Экран XMLterm представляет собой окно браузера, содержащее ряд вертикально расположенных блоков. Каждый из блоков отображает запрос на ввод команд, набранную пользователем команду и результат ее выполнения. По своим функциям блок команд XMLterm аналогичен окну графического пользовательского интерфейса. Вводимая команда используется в качестве заголовка окна. Запрос на ввод команды служит также в качестве кнопки «Свернуть» для данного блока. Щелчок на запросе приводит к свертыванию результатов выполнения команды, отображаемых в блоке XMLterm, так что видимой остается только вводимая командная строка (т. е. «заголовок окна»). Повторный щелчок на запросе на ввод свернутого командного блока приводит к обратному действию, т. е. к отображению результатов выполнения команды.

Это означает, что, используя терминологию Windows, XMLterm выступает в качестве «панели задач». Командные блоки XMLterm располагаются по вертикали в прокручиваемом окне браузера, а не хаотически распределяются по экрану, как окна графического пользовательского интерфейса. Это позволяет сохранить в XMLterm «линейность» CLI, когда одна команда следует за другой.

Возможность «пиктограммного ввода команд» естественным образом следует из природы XML. Обычный текст и элементы XML могут свободно чередоваться в командной строке. В частности, элементы IMG типа HTML могут использоваться для отображения имени файла в виде пиктограммы, но при этом имя файла передается нижележащей программе shell в виде обычного текста. (Элемент IMG позволяет внедрять в документ изображения и видеофрагменты.) Пиктограммные элементы можно вставлять в командную строку с помощью операций буксировки или копирования-вставки. Данные операции могут быть произведены из внешней настольной среды или из предыдущего командного блока XMLterm.

Сообщения BugNet

Комментарий редактора. Мы регулярно публикуем сообщения BugNet в разделе «Тысяча мелочей». О других ошибках и заплатах вы можете узнать на http://www.bugnet.com.

Norton AntiVirus 4.0

Специалисты Novell обнаружили, что в некоторых случаях Norton AntiVirus 4.0 с включенной опцией AutoProtect вызывает блокировку компьютера во время регистрации на NetWare 5.0 и Zero Effort Networks (Z.E.N.works). В этом случае Novell предлагает отредактировать реестр. В HKLMSYSTEMCurrentControlSetServicesNAV Auto Protect добавьте переменную для REG_MULTI_SZ, называемую Depend OnService, и установите ее значение в NetWareWork-station. Поскольку изменение реестра может привести к проблемам, то сначала прочитайте документ Novell Technical Information Document (TID) по адресу: http://support.novell.com/cgi-bin/search/tidfinder.cgi?2942964/.