Книга Уильяма Шоттса «Командная строка Linux»
делает простые задачи еще проще,
а интерфейс командной строки
делает сложные вещи выполнимыми.
Цитата из книги.
Решил я недавно прокачать свои знания про bash — в первую очередь разложить по полочкам для себя те конструкции языка, которыми иногда пользуюсь, но которые вызывали вопросы. Для этого решил прочитать книгу Уильяма Шоттса «Командная строка Linux», которая вышла на русском языке в прошлом году. И знаете, это, пожалуй, лучший учебник по командам Linux и консоли, который мне попадался. Если вы только собираетесь изучить программирование на bash, то эту книгу можно советовать в качестве основ.
В книге Шоттса мне в первую очередь понравилась подача материала. Автор очень методично и постепенно переходит от одной темы к другой, при этом каждую тему описывает очень аккуратно, чтобы из-за упрощений не возникло никаких некорректностей. Для многих команд кроме ее описания и примеров приводятся другие возможные варианты ее использования. Книга содержит много таблиц с возможными параметрами каждой команды, но при этом книга не превращается в справочник. Чтобы не углубляться в экзотические способы использования каких-то программ, автор за экзотическими подробностями отправляет в документацию.
Обычно я читаю книги последовательно от корки до корки, а поскольку в этой книге все начинается с основ использования консоли Linux (описываются команды cd, ls, cp, rm и т.д.), то я начал опасаться, что и дальше все ограничится типичным описанием в стиле «Linux для чайников» (я не имею в виду встраиваемые операционные системы). Но несмотря на то, что эта книга в первую очередь ориентирована на новичков, я для себя узнал некоторые новые вещи даже в первых главах. Особенно мне понравилось, что автор иногда делает вставки с историческими рассказами о том, как появилась та или иная программа, и почему она работает именно так. Например, в одной из врезок описывается, что это за загадочная клавиша Meta, которая постоянно упоминается в документации к Linux.
Книга разделена на четыре части. В первых трех из них в основном рассказывается о различных командах-программах в Linux. Как я уже говорил, все начинается с команд для работы с файлами. Очень хорошо описана работа с правами на файлы и папки, какие права, какие действия позволяют выполнять (теме прав посвящена целая глава). Отдельная глава посвящена горячим клавишам при работе с консолью. Очень подробно и аккуратно описываются символы подстановки в консоли, описаны возможные проблемы и непонимания, которые могут возникнуть при использовании их, а также почему эти проблемы возникли (это в основном касается подстановки интервалов символов [a-z] и [A-Z]).
В первой части очень подробно описан процесс перенаправления, в том числе рассказывается о том, как перенаправлять по отдельности стандартный вывод и стандартный вывод ошибок. Еще одна глава посвящена работе с процессами. В ней рассказывается о том, как «замораживать» процессы, как их отправлять на задний фон и возвращать на передний, что такое сигналы, и что на самом деле делает комбинация клавиш Ctrl+C.
Вторая часть книги посвящена переменным окружения, настройки внешнего вида консоли в Linux и, зачем-то, введению в vi/vim. Самая полезная из второй части глава посвящена переменным окружения и файлам настроек bash: .bash_profile, .profile, .bashrc и др.
Третья часть продолжает знакомить читателей с командами Linux, но именно эта часть больше всего устарела. Например, одна глава посвящена работе с пакетами deb и rpm. В ней упоминаются команды apt-get и aptitude, но не apt, говорится про yum, но не про dnf. Позже в этом разделе будет рассказываться про утилиту fdisk для работы с разделами на жестком диске, но ничего не будет сказано про parted.
Вообще, несмотря на то, что на русском языке эта книга вышла в 2017 году, оригинал датируется 2012, но видно, что книга была переработана из более древнего черновика. Например, упоминаются версии только Ubuntu 8.04 и 8.10 (2008 год), и даже есть небольшой раздел, буквально полстраницы, про форматирование дискет.
Кроме перечисленных тем, в третьей части описывается работа с сетью (ftp, wget, ssh, scp, tracerout и др.), с архивами, отдельная глава посвящена поиску файлов (find, locate, рассказывается о xargs), говорится о способах печати из консоли, о форматировании текста, регулярных выражениях и некоторых других темах.
И, наконец, четвертая часть книги посвящена программированию bash — тому, ради чего я ее и начал читать. И здесь я могу только еще раз похвалить стиль изложения — он очень аккуратный и последовательный. Примеры все достаточно компактные, хотя и есть одна программа на bash, которая проходит через несколько глав, но она не настолько длинная, чтобы мешала удержать в голове ее структуру.
На мой взгляд язык bash описан достаточно подробно и с хорошими краткими примерами для понимания сути той или иной конструкции языка. В книге рассказывается и об операторах ветвления, и о разных переменных подстановки вроде $?, $@, $*, $# и т.п. странно выглядящие сочетания символов. Рассказывается и о подстановках с обработкой данных — ${…}, когда внутри фигурных скобок стоят особые операторы. В последней главе рассказывается про именованные каналы.
Как вы уже поняли, книга мне понравилась, ей можно поставить твердую пятерку, но надо иметь в виду, что эта книга предназначена в первую очередь для новичков. И эта книга не об администрировании Linux. В то же время ее можно использовать как справочник по языку bash. Мне понравились исторические вставки автора. Единственное замечание к книге — это использование уже устаревших программ, но таких мест не много. Перевод книги на русский язык тоже хороший.
На английском языке книгу можно свободно скачать по адресу http://linuxcommand.org/tlcl.php.
PS. Вы можете подписаться на новости сайта через RSS, Группу Вконтакте или Канал в Telegram.
Alex:
Приветствую!
10 мая 2018, 1:26 ппРекомендую «Bash. Карманный справочник» Арнольда Роббинса.
На ее днях купил. Отличне главы про подстановку и встроенные команды, да и вообще книга из разряда «must have»
Я уже 15 лет использую баш, но нашел для себя там новые и интересные вещи.
Jenyay:
Спасибо за информацию. Мне эта книга попадалась на глаза, но я как-то не обратил на нее внимания. Надо будет почитать.
10 мая 2018, 4:03 пп