Опубликовано в журнале "Компьютерра" №3 от 29 января 2002 года
В этой рубрике нам уже случалось приводить сентенцию, что изучающим Linux лучше поискать книжку с названием, начинающимся на U, чем на L. Из пачки относительно свежих книг для очередной проверки справедливости этой сентенции я отобрал две, содержащие слово UNIX в заглавии.
В общем и целом ее справедливость подтвердилась. Книжки по Linux продолжают оставаться попытками одновременного введения читателя в вопросы использования и вопросы администрирования, тогда как аудитория корпоративных пользователей Linux, видимо, уже превышает аудиторию домашних, и, соответственно, для большинства пользователей, тем более начинающих, вопросы администрирования малоактуальны.
А с чисто прагматической точки зрения все открытые системы похожи друг на друга, и устоявшаяся традиция введения пользователя в UNIX, начатая еще Керниганом с Ричи, продолжает быть успешной - с той поправкой, что пользователя сегодня меньше интересуют текстовые редакторы (описание которых традиционно занимало половину руководства), а больше - коммуникационный софт, графические пользовательские среды да «офисные приложения».
Книга Немнюгина и др. посвящена открытым системам вообще и Linux особенно. Называть Linux (или FreeBSD) UNIX’ом кажется мне некорректным: хотя в обыденном языке слово «UNIX» стало синонимом «открытых систем», формально оно продолжает оставаться торговой маркой, и непонятно, почему издательство, пометив как (tm) название своей серии, вот так отнеслось к чужим правам.
Содержание книги охватывает все основные вопросы, могущие возникнуть у пользователя, и практически не касается вопросов администрирования. «Концептуальные» главы (вводящие понятия файла, процесса, сети, структуру графической подсистемы) чередуются с «технологическими», в которых описываются приемы выполнения типовых пользовательских задач.
Особо хочу отметить «задания для практической работы», завершающие каждую главу и часто требующие ответов на вопросы, получить которые простым пересказом содержания главы трудно: приходится действительно садиться за клавиатуру (проверил на себе).
Недостатками книги мне показались, во-первых, «прянично-лубочное» изложение истории открытых систем (полностью игнорирующее такие проблемы, как конфликт между Bell/UCL и командой BSD или запоздалая реакция на распространение и, во-вторых, путаница с правовыми вопросами (полагаю, не намеренная), начиная с упомянутого использования слова «UNIX», и кончая невнимательностью к моделям лицензирования.
Забавная особенность текста - употребление в качестве синонима слова «компьютер» аббревиатуры «ЭВМ», казалось бы, ушедшей даже из журналистики (профсообщество ни то ни другое массово никогда не употребляло, предпочитая слово «машина»).
Перевод руководства Дэвида Тейнсли, кажется, первая на русском языке книга, целиком посвященная программированию в языке стандартной оболочки ОС. Нынешняя волна интереса к интерпретируемым языкам программирования, обусловленная возросшей вычислительной мощностью, находящейся в распоряжении среднестатистического пользователя, потребностью в программировании для WWW и доступностью интерпретаторов под свободными лицензиями, привлекает внимание аудитории к таким (относительно новым) языкам, как Perl, PHP или Python. В то же время традиционно доступные каждому пользователю открытых систем оболочки (пользовательские интерфейсы) сами по себе предоставляют возможности программирования, достаточные для решения большинства (я не хочу употреблять слово «всех») пользовательских и администраторских задач.
Тейнсли написал очень подробное руководство, описывающее, наряду с управляющими конструкциями самой оболочки (части 4 и 5), использование множества стандартных (и не стандартных) встроенных команд и утилит (части 1 и 2), начиная с простейших и кончая самыми продвинутыми и обладающими собственными развитыми языками, такими как grep, awk (не удержусь от цитаты: «Среди всех инструментов фильтрации… труднее всего освоить работу именно с awk. Причина этого явления не ясна») или sed. А в первой главе описана концепция файла в стандартизованных ОС и роль их атрибутов.
Следует предупредить читателя о неотловленном редакторами перевода «баге»: Тейнсли ошибочно называет стандартным интерпретатором Bourne shell, хотя в действительности международный стандарт на оболочку операционных систем основан на Korn shell. bash и современные реализации Korn shell совместимы со стандартом сверху вниз, а вот «ветеранша» Bourne shell (или просто shell) - не полностью, что может стать для новичка неприятным сюрпризом.
Кстати, оригинальное название книги LINUX and UNIX Shell Programming, на мой взгляд, правильнее было бы перевести как «Программирование в оболочке Linux и UNIX». Поскольку оболочки, такие как shell и в особенности bash, хотя и являются «собственными» для Linux и UNIX, вообще говоря, доступны и для других операционных систем, даже не относящихся к открытым (вплоть до Microsoft Windows). Это можно сказать и о стандартных утилитах, описанных в книге, и их пользователям знакомство со стандартной оболочкой тоже может оказаться весьма полезным.