Книга «Командная строка Linux. Полное руководство»
Уильям Шоттс знакомит вас с истинной философией Linux. Вы уже знакомы с Linux, и настала пора нырнуть поглубже и познакомиться с возможностями командной строки. Командная строка всегда с вами, от первого знакомства до написания полноценных программ в Bash — самой популярной оболочке Linux. Познакомьтесь с основами навигации по файловой системе, настройки среды, последовательностями команд, поиском по шаблону и многим другим.
Прочитав эту книгу, вы легко научитесь создавать и удалять файлы, каталоги и символьные ссылки; администрировать систему, включая сетевое оборудование, установку пакетов и управление процессами; редактировать файлы; писать скрипты для автоматизации общих или рутинных задач; выполнять любые работы с текстовыми файлами.
Преодолев начальный страх перед оболочкой Linux, вы поймете, что командная строка — это естественный, логичный и простой способ общения с компьютером. И не забывайте протирать пыль с мышки.
О чем эта книга
Эта книга представляет обширный обзор «жизни» в командной строке Linux. В отличие от других книг, посвященных одной программе, такой как командный интерпретатор bash, в этой книге я попытаюсь рассказать, как поладить с интерфейсом командной строки в более широком аспекте. Как он работает? Что можно сделать с его помощью? Как лучше его использовать?
Эта книга не об администрировании системы Linux. Даже при том, что любое серьезное обсуждение командной строки неизменно ведет к обсуждению тем администрирования системы, эта книга затрагивает лишь узкий круг задач, имеющих отношение к администрированию. Но она готовит читателя к дополнительным исследованиям, закладывая основы знаний, необходимых для использования командной строки как основного инструмента для решения любых серьезных задач системного администрирования.
Эта книга исключительно о Linux. Многие книги пытаются расширить свою целевую аудиторию, включая в обсуждение другие платформы, такие как Unix и Mac OS X. По этой причине в них обсуждаются лишь общие темы. Эта книга, напротив, посвящена только современным дистрибутивам Linux. И хотя девяносто пять процентов сведений будут полезны пользователями других Unix-подобных систем, основной целевой аудиторией этой книги являются пользователи командной строки современных версий Linux.
Кому адресована эта книга
Эта книга адресована новым пользователям Linux, мигрирующим с других платформ. Весьма вероятно, что вы — «опытный пользователь» определенной версии Microsoft Windows. Возможно, руководитель дал вам задание освоить администрирование Linux-сервера или, может быть, вы обычный пользователь, уставший от нескончаемых проблем безопасности и решивший попробовать Linux. Кем бы вы ни были, здесь вас ждет радушный прием.
Однако следует отметить, что в освоении Linux нет простых путей. Изучение командной строки — непростая задача, требующая определенных усилий. Не то чтобы это чересчур сложно, скорее очень многообразно. Обычная система Linux содержит тысячи программ, которые можно использовать в командной строке. Поэтому имейте в виду, что желание изучить командную строку должно быть осознанным и целенаправленным.
С другой стороны, изучение командной строки Linux чрезвычайно полезно. Если вы считаете себя опытным пользователем, подождите немного, и вы узнаете, что такое действительно опытный пользователь. Кроме того, в отличие от других навыков работы с компьютером, умение работать в командной строке еще долго будет оставаться полезным. Навыки, приобретенные сегодня, останутся полезными и через 10 лет. Командная строка выдержала испытание временем. Если у вас нет опыта программирования — не волнуйтесь, мы поможем в его приобретении.
Что дается в этой книге
В этой книге материал излагается в тщательно выверенной последовательности, как в школе, где учитель руководит вами и направляет вас по правильному пути. Многие авторы грешат тем, что подают материал в «систематическом» порядке, имеющем определенный смысл для писателя, но способном вызывать путаницу у начинающих пользователей.
Цель данной книги — познакомить вас с идеологией Unix, которая отличается от идеологии Windows. По пути мы иногда будем отклоняться в сторону, чтобы попытаться понять, почему то или иное работает именно так, а не иначе. Linux — это не просто программное обеспечение, это также часть обширной культуры Unix, имеющей свой язык и историю. Здесь я мог бы добавить еще пару напыщенных фраз. Но воздержусь от этого.
Книга делится на четыре части, каждая из которых охватывает определенный аспект владения командной строкой:
Часть I «Командная оболочка» вводит в курс основ языка командной строки: структура команд, приемы навигации в файловой системе, редактирование командной строки и поиск справочной информации с описанием команд.
Часть II «Окружение и настройка» посвящена редактированию конфигурационных файлов, управляющих работой командной строки.
Часть III «Типичные задачи и основные инструменты» исследует множество типовых задач, часто выполняемых в командной строке. Unix-подобные операционные системы, такие как Linux, имеют множество «классических» программ командной строки, помогающих выполнять различные операции с данными.
Часть IV «Сценарии командной оболочки» знакомит с программированием на языке командной оболочки, который, по общему мнению, обладает не слишком широкими возможностями, но прост в изучении и позволяет автоматизировать многие вычислительные задачи. Изучая программирование на языке командной оболочки, вы познакомитесь с идеями, которые сможете применять в других языках программирования.
Для Хаброжителей скидка 25% по купону — Шоттс
Книга «Командная строка Linux. Полное руководство. 2-е межд. изд.»
Добрый день! Предлагаю вашему вниманию еще одну книгу — «Командная строка Linux. Полное руководство. 2-е межд. изд.» Ее можно заказать на сайте издательства, и если применить промокод LinuxORG, то получите скидку 30%. Действует на все книги издательства. Также в подарок при покупке бумажной будет ее электронная версия.
Отрывок из книги для ознакомления:
Управление потоком выполнения: циклы while и until
В предыдущей главе мы написали программу, управляемую с помощью меню, для получения разного рода системной информации. Программа работает, но неудобна в использовании. Она выполняет только один выбранный вариант и завершается. Хуже того, в случае ошибочного выбора программа завершается с выводом сообщения об ошибке, не давая возможности повторить попытку. Пользоваться программой было бы намного удобнее, если бы она снова и снова выводила меню и предлагала сделать выбор, пока пользователь не выберет пункт, соответствующий выходу из программы.
В этой главе мы познакомимся с приемами организации циклов, с помощью которых можно реализовать многократное выполнение участков программ. Командная оболочка поддерживает три составные команды для организации циклов.
Циклы
Повседневная жизнь наполнена повторяющимися действиями. Каждодневная поездка на работу, прогулка с собакой и нарезание моркови — все эти действия состоят из повторяющейся последовательности действий. Рассмотрим в качестве примера резку моркови. Этот вид деятельности можно выразить на псевдокоде примерно так:
Шаги с 4-го по 7-й образуют цикл. Действия внутри цикла повторяются, пока не будет выполнено условие «вся морковь порезана».
while
В bash имеются средства, позволяющие выражать похожие идеи. Представьте, что нам нужно вывести пять чисел по порядку, от 1 до 5. В сценарии на языке bash это можно реализовать, как показано ниже:
Если запустить этот сценарий, он выведет:
Команда while имеет следующий синтаксис:
while команды; do команды; done
Подобно if, команда while проверяет код завершения списка команд. Пока код завершения равен 0, она выполняет команды внутри цикла. В сценарии, приведенном выше, создается переменная count, и ей присваивается начальное значение 1. Команда while проверяет код завершения составной команды [[ ]]. Пока [[ ]] возвращает код 0, команды внутри цикла продолжают выполняться. В конце каждого цикла повторно выполняется команда [[ ]]. После пяти итераций цикла значение переменной count увеличится до 6, команда [[ ]] вернет код завершения,отличный от 0, и цикл завершится, а программа продолжит выполнение с инструкции, следующей непосредственно за циклом.
Цикл while можно использовать для усовершенствования программы read-menu из предыдущей главы:
Заключив меню в цикл while, мы смогли заставить программу повторять вывод меню после каждой операции выбора. Цикл продолжает выполняться и выводить меню, пока переменная REPLY не получит значение 0, предоставляя пользователю возможность сделать другой выбор. После выполнения выбранной операции выполняется команда sleep, она приостанавливает программу на несколько секунд и дает возможность увидеть результаты до того, как экран будет очищен и на нем вновь появится меню. Когда переменная REPLY получит значение 0, соответствующее варианту «Quit» (выйти), цикл завершится и выполнение продолжится со строки, следующей за done.
Прерывание цикла
В bash имеются две встроенные команды для управления потоком выполнения внутри циклов. Команда break немедленно завершает цикл, после чего выполнение программы продолжается с первой инструкции, следующей за циклом. Команда пропускает оставшуюся часть цикла, и программа переходит к началу следующей итерации цикла. Ниже приводится версия программы while-menu, использующая обе команды — break и continue:
В этой версии сценария используется бесконечный цикл (цикл, который никогда не завершится сам по себе), в котором команда while проверяет код завершения команды true. Так как true всегда возвращает код 0, цикл никогда не завершится. Этот прием на удивление широко используется в сценариях. Поскольку цикл никогда не завершится сам по себе, программист должен предусмотреть его принудительное прерывание в нужный момент времени. В этом сценарии выход из цикла осуществляется с помощью команды break, когда пользователь выберет пункт 0. В конец других операций добавлена команда continue, чтобы увеличить эффективность работы сценария. Встретив команду continue, сценарий перепрыгнет через остальной код в цикле, который не требуется выполнять для данного выбора. Например, если пользователь выбрал пункт 1, нет никаких причин проверять выбор остальных вариантов.
until
Команда until очень похожа на while, но завершает цикл не когда обнаружит ненулевой код завершения, а наоборот. Цикл until продолжается, пока не получит код завершения 0. В сценарии while-count цикл продолжает выполняться, пока значение переменной count меньше или равно 5. Тот же результат можно получить, переписав сценарий с командой until:
Чтение файлов в циклах
Команды while и until могут принимать данные со стандартного ввода. Это дает возможность обрабатывать файлы с их помощью. В следующем примере мы выведем содержимое файла distros.txt, созданного в одной из предыдущих глав:
Чтобы перенаправить файл в цикл, мы поместили оператор перенаправления после инструкции done. Цикл будет вводить поля из указанного файла с помощью read. После ввода каждой строки команда read будет завершаться с кодом 0, пока не достигнет конца файла. В этот момент она вернет ненулевой код завершения, и цикл завершится. Цикл можно также использовать в конвейерах:
Здесь вывод команды sort передается на стандартный ввод цикла, который выводит поток текста на экран. Но не забывайте, что конвейер выполняет цикл в подоболочке, поэтому после его завершения любые переменные, созданные в цикле, будут потеряны.
Заключение
После знакомства с циклами и ранее представленными командами ветвления, функциями и последовательностями мы получили представление об основных способах управления потоком выполнения в программах. В арсенале bash имеется еще множество хитрых трюков, но все они основаны на этих простых идеях.
Командная строка Linux
Для профессионалов.
Уильям Шоттс «Командная строка Linux. Полное руководство» Питер, 2017 год, 479 стр. (PDF-EPUB)
Книга познакомит вас с идеологией Unix и в частности командной строкой Linux, как одним из основных интерфейсов общения с этой операционной системой. Настала пора поглубже познакомиться и досконально изучить возможности командной строки (Command Line Interface — CLI). Командная строка — всегда с вами, от первого знакомства до написания полноценных программ в Bash — самой популярной оболочке Linux. Книга разделена на четыре части, каждая из которых является логическим продолжением предыдущей.
Если вы впервые сталкиваетесь с Linux и командной строкой, то последовательное изучение всего материала является пожалуй единственным способом достижения положительного результата. Изучите основы навигации по файловой системе, настройки среды, последовательности команд, поиск по шаблону и многое другое. Вы сможете с легкостью создавать и удалять файлы, каталоги и символьные ссылки; администрировать систему, включая сетевое оборудование, установку пакетов и управление процессами; редактировать файлы; писать скрипты для автоматизации общих или рутинных задач; выполнять любые работы с текстовыми файлами.
Преодолев начальный страх перед оболочкой Linux, вы поймете, что командная строка — это естественный, логичный и простой способ общения с компьютером. Книга станет полезным руководством для системных администраторов и пользователей Linux. ISBN: 978-5-496-02303-0
Введение 20
Зачем нужна командная строка? 20
О чем эта книга 21
Кому адресована эта книга 22
Что дается в этой книге 22
Как читать эту книгу 23
Предварительные условия 23
Командная строка Linux
Часть I. Командная оболочка 25
Глава 1. Что такое командная оболочка 26
Эмуляторы терминалов 26
Первые удары по клавишам 26
История команд 28
Управление курсором 28
Некоторые простые команды 28
Завершение сеанса работы с терминалом 29
Глава 2. Навигация 30
Дерево каталогов файловой системы 30
Текущий рабочий каталог 31
Перечисление содержимого каталога 32
Смена текущего рабочего каталога 32
Абсолютные пути 32
Относительные пути 32
Некоторые полезные сокращения 34
Глава 3. Исследование системы 35
Любопытные возможности ls 35
Параметры и аргументы 36
Пристальный взгляд на длинный формат 37
Определение типов файлов командой file 38
Просмотр содержимого файлов командой less 39
Обзорное путешествие 40
Символические ссылки 43
Глава 4. Операции с файлами и каталогами 45
Групповые символы 46
mkdir — создание каталогов 48
cp — копирование файлов и каталогов 48
mv — перемещение и переименование файлов 49
rm — удаление файлов и каталогов 50
ln — создание ссылок 51
Жесткие ссылки 52
Символические ссылки 52
Давайте построим песочницу 53
Создание каталогов 53
Копирование файлов 53
Перемещение и переименование файлов 54
Создание жестких ссылок 55
Создание символических ссылок 56
Удаление файлов и каталогов 57
Заключительное замечание 59
Глава 5. Работа с командами 60
Что такое команды? 60
Идентификация команд 61
type — получение типа команды 61
which — определение местоположения выполняемого файла 61
Получение документации с описанием команд 62
help — получение справки для встроенных команд 62
—help — вывод инструкции по использованию 63
man — вывод страниц справочного руководства 63
apropos — вывод списка подходящих команд 65
whatis — вывод очень краткого описания команды 66
info — вывод записи из справочного руководства Info 66
README и другие файлы с описанием программ 67
Создание собственных команд с помощью alias 68
Навестите старых друзей 69
Глава 6. Перенаправление 70
Стандартный ввод, вывод и вывод ошибок 70
Перенаправление стандартного вывода 71
Перенаправление стандартного вывода ошибок 72
Перенаправление стандартного вывода и стандартного вывода ошибок в один файл 73
Удаление нежелательного вывода 73
Перенаправление стандартного ввода 74
Конвейеры 76
Фильтры 76
uniq — поиск или удаление повторяющихся строк 77
wc — вывод числа строк, слов и байтов 77
grep — поиск строк, соответствующих шаблону 77
head/tail — вывод первых/последних строк из файлов 78
tee — чтение со стандартного ввода и запись в стандартный вывод и в файлы 79
Заключительное замечание 81
Глава 7. Взгляд на мир глазами командной оболочки 82
Подстановка 82
Подстановка путей 83
Подстановка тильды 83
Подстановка результатов арифметических выражений 84
Подстановка фигурных скобок 86
Подстановка параметров 87
Подстановка команд 87
Экранирование 88
Двойные кавычки 89
Одиночные кавычки 90
Экранирование символов 91
Заключительное замечание 91
Глава 8. Продвинутые приемы работы с клавиатурой 93
Редактирование командной строки 93
Перемещение курсора 94
Изменение текста 94
Вырезание и вставка (удаление и возврат) текста 94
Дополнение 95
Использование истории 97
Поиск в истории 97
Подстановка записей истории 99
Заключительное замечание 100
Глава 9. Привилегии 101
Владельцы, члены группы и все остальные 102
Чтение, запись и выполнение 103
chmod — изменение режима доступа к файлу 105
Установка режима доступа к файлу с помощью графического интерфейса 108
umask — определение разрешений доступа к файлам по умолчанию 109
Изменение идентичности 112
su — запуск командной оболочки с подстановкой идентификаторов пользователя и группы 112
sudo — выполнение команды от имени другого пользователя 113
chown — изменение владельца и группы файла 115
chgrp — изменение группы файла 116
Использование привилегий 116
Изменение своего пароля 118
Глава 10. Процессы 120
Как действует процесс 120
Просмотр списка процессов с помощью ps 121
Просмотр состояния процессов в динамике с помощью top 123
Управление процессами 125
Прерывание процесса 126
Перевод процессов в фоновый режим 126
Возврат процесса на передний план 127
Приостановка процесса 128
Сигналы 128
Посылка сигналов процессам командой kill 129
Посылка сигналов нескольким процессам с помощью killall 131
Другие команды управления процессами 132
Командная строка Linux
Часть II. Окружение и настройка 133
Глава 11. Окружение 134
Что хранится в окружении? 134
Исследование окружения 135
Некоторые интересные переменные 136
Как устанавливается окружение? 137
Оболочка входа и простая оболочка 137
Что находится в файлах запуска? 138
Изменение окружения 140
Какие файлы следует изменять? 140
Текстовые редакторы 140
Использование текстового редактора 141
Активация изменений 144
Заключительное замечание 145
Глава 12. Плавное введение в vi 146
Зачем осваивать vi 146
Немного предыстории 147
Запуск и завершение vi 147
Режимы редактирования 148
Переход в режим вставки 149
Сохранение изменений 150
Перемещение курсора 151
Основы редактирования 151
Добавление текста в конец 152
Вставка строки 152
Удаление текста 153
Вырезание, копирование и вставка текста 155
Объединение строк 156
Поиск и замена 156
Поиск в пределах строки 156
Поиск во всем файле 156
Глобальный поиск и замена 157
Редактирование нескольких файлов 158
Переключение между файлами 159
Открытие дополнительных файлов для редактирования 159
Копирование содержимого из одного файла в другой 160
Вставка целого файла в другой файл 161
Сохранение результатов работы 162
Глава 13. Настройка приглашения к вводу 163
Устройство строки приглашения к вводу 163
Альтернативные варианты оформления приглашения 165
Добавление цвета 166
Перемещение курсора 168
Сохранение определения приглашения 170
Заключительное замечание 170
Командная строка Linux
Часть III. Типичные задачи и основные инструменты 171
Глава 14. Управление пакетами 172
Системы пакетов 173
Как действует система пакетов 173
Файлы пакетов 173
Репозитории 174
Зависимости 175
Высоко- и низкоуровневые инструменты управления пакетами 175
Типичные задачи управления пакетами 175
Поиск пакета в репозитории 176
Установка пакета из репозитория 176
Установка пакета из файла пакета 176
Удаление пакета 177
Обновление пакетов из репозитория 177
Обновление пакета из файла пакета 178
Список установленных пакетов 178
Определение, установлен ли пакет 178
Вывод информации об установленном пакете 179
Поиск пакета по установленному файлу 179
Заключительное замечание 180
Глава 15. Устройства хранения 182
Монтирование и размонтирование устройств хранения 183
Просмотр списка смонтированных файловых систем 184
Определение названий устройств 188
Создание новых файловых систем 190
Управление разделами с помощью fdisk 191
Создание новой файловой системы с помощью mkfs 193
Проверка и восстановление файловой системы 194
Форматирование гибких дисков 195
Непосредственное перемещение данных между устройствами 195
Создание образа компакт-диска 196
Создание образа-копии компакт-диска 196
Создание образа из коллекции файлов 197
Запись образа компакт-диска 197
Непосредственное монтирование файла ISO-образа 197
Очистка перезаписываемых компакт-дисков 198
Запись образа 198
Дополнительные сведения 198
Глава 16. Сети 200
Исследование и мониторинг сети 201
ping — передача специальных пакетов сетевым узлам 201
traceroute — трассировка пути сетевых пакетов 202
netstat — вывод параметров настройки сети и статистик 203
Передача файлов по сети 205
ftp — передача файлов по протоколу FTP 205
lftp — более удачная версия ftp 207
wget — неинтерактивный загрузчик файлов из сети 207
Безопасные взаимодействия с удаленными узлами 207
ssh — безопасный вход в удаленные компьютеры 208
scp и sftp — безопасная передача файлов 212
Глава 17. Поиск файлов 214
locate — простой способ поиска файлов 214
find — сложный способ поиска файлов 216
Проверки 216
Операции 221
Возвращаемся в песочницу 225
Параметры 228
Глава 18. Архивация и резервное копирование 229
Сжатие файлов 229
gzip — сжатие и распаковывание файлов 230
bzip2 — высокая степень сжатия ценой скорости 232
Архивирование файлов 233
tar — утилита архивирования на ленту 233
zip — упаковывание и сжатие файлов 238
Синхронизация файлов и каталогов 240
rsync — синхронизация файлов и каталогов с удаленной системой 240
Использование rsync для копирования по сети 242
Глава 19. Регулярные выражения 244
Что такое регулярные выражения? 244
grep — поиск в тексте 245
Метасимволы и литералы 246
Любой символ 247
Якоря 247
Выражения в квадратных скобках и классы символов 249
Отрицание 249
Традиционные диапазоны символов 250
Классы символов POSIX 251
Простые и расширенные регулярные выражения POSIX 254
Чередование 255
Квантификаторы 256
? — совпадение с элементом ноль или один раз 256
* — совпадение с элементом ноль или более раз 257
+ — совпадение с элементом один или более раз 258
< >— совпадение с элементом определенное число раз 258
Практические примеры применения регулярных выражений 259
Проверка списка телефонов с помощью grep 259
Поиск необычных имен файлов с помощью find 260
Поиск файлов с помощью locate 261
Поиск текста в less и vim 261
Заключительное замечание 263
Глава 20. Обработка текста 264
Области применения текста 265
Документы 265
Веб-страницы 265
Электронная почта 265
Вывод на принтер 265
Исходный код программ 266
А вот и наши старые знакомые! 266
cat — объединение файлов и вывод их в стандартный поток вывода 266
sort — сортировка строк текстовых файлов 268
uniq — выявление или удаление повторяющихся строк 274
Нарезка и перетасовка текста 276
cut — удаление фрагментов из всех строк в файлах 276
paste — слияние строк из файлов 279
join — объединение строк из двух файлов по общему полю 281
Сравнение текста 283
comm — построчное сравнение двух сортированных файлов 283
diff — построчное сравнение файлов 284
patch — применение diff-файла к оригиналу 286
Редактирование на лету 287
tr — перекодирование или удаление символов 288
sed — потоковый редактор для фильтрации и преобразования текста 290
aspell — интерактивная проверка орфографии 298
Заключительное замечание 301
Дополнительное задание 301
Глава 21. Форматирование вывода 302
Инструменты простого форматирования 302
nl — нумерация строк 302
fold — перенос строк после указанной длины 306
fmt — простое форматирование текста 306
pr — форматирование текста для печати 309
printf — форматирование и вывод данных 310
Системы форматирования документов 314
Семейство программ roff и T^X 314
groff — система форматирования документов 315
Заключительное замечание 320
Глава 22. Печать 321
Краткая история поддержки печати 321
Печать в ночное время 322
Символьные принтеры 322
Графические принтеры 323
Печать в Linux 324
Подготовка файлов к печати 325
pr — преобразование текстовых файлов для печати 325
Отправка задания печати на принтер 326
lpr — печать файлов (в стиле Berkeley) 326
lp — печать файлов (в стиле System V) 327
Еще одна возможность: a2ps 328
Наблюдение за заданиями печати и управление ими 331
lpstat — вывод информации о состоянии принтера 332
lpq — вывод информации о состоянии очереди печати 333
lprm и cancel — отмена заданий печати 333
Глава 23. Компиляция программ 334
Что такое компиляция? 335
Все ли программы компилируются? 336
Оглавление 15
Компиляция программ на C 336
Получение исходного кода 337
Исследование дерева исходных текстов 338
Сборка программ 340
Установка программ 343
Заключительное замечание 344
Командная строка Linux
Часть IV. Сценарии командной оболочки 345
Глава 24. Создание первого сценария командной оболочки 346
Что такое сценарии командной оболочки 346
Как написать сценарий командной оболочки 347
Формат файла сценария 347
Разрешения на выполнение 348
Местоположение файла сценария 348
Выбор местоположения для сценариев 350
Дополнительные хитрости по оформлению 350
Длинные имена параметров 350
Отступы и продолжения строк 350
Заключительное замечание 352
Глава 25. Начало проекта 353
Этап первый: минимальный документ 353
Этап второй: добавление некоторых данных 355
Переменные и константы 356
Создание переменных и констант 356
Присваивание значений переменным и константам 359
Встроенные документы 360
Заключительное замечание 363
Глава 26. Проектирование сверху вниз 364
Функции командной оболочки 365
Локальные переменные 368
Постоянное опробование сценария 369
Заключительное замечание 372
Глава 27. Управление потоком выполнения: ветвление при помощи if 373
Использование if 373
Код завершения 374
Команда test 375
Выражения для проверки файлов 376
Выражения для проверки строк 378
Выражения для проверки целых чисел 380
Более современная версия команды test 381
(( )) — для проверки целых чисел 382
Объединение выражений 383
Операторы управления: еще один способ ветвления 386
Заключительное замечание 386
Глава 28. Чтение ввода с клавиатуры 388
read — чтение значений со стандартного ввода 389
Параметры 392
Выделение полей в строке ввода с помощью IFS 392
Проверка ввода 395
Меню 396
Заключительное замечание 398
Дополнительные сведения 398
Глава 29. Управление потоком выполнения: циклы while и until 399
Циклы 399
while 400
Прерывание цикла 402
until 403
Чтение файлов в циклах 404
Заключительное замечание 405
Глава 30. Поиск и устранение ошибок 406
Синтаксические ошибки 406
Отсутствующие кавычки 407
Отсутствующие или неожиданные лексемы 407
Непредвиденная подстановка 408
Логические ошибки 409
Защитное программирование 410
Проверка ввода 411
Тестирование 412
Заглушки 412
Комплекты тестов 413
Отладка 413
Поиск проблемной области 413
Трассировка 414
Исследование значений в процессе выполнения 416
Заключительное замечание 417
Глава 31. Управление потоком выполнения:
ветвление с помощью case 418
case 418
Шаблоны 420
Объединение нескольких шаблонов 421
Заключительное замечание 422
Глава 32. Позиционные параметры 423
Доступ к командной строке 423
Определение числа аргументов 424
shift — доступ к множеству аргументов 425
Простые приложения 426
Использование позиционных параметров в функциях 427
Обработка позиционных параметров скопом 427
Более сложное приложение 429
Заключительное замечание 432
Глава 33. Управление потоком выполнения: цикл for 436
for: традиционная форма 436
for: форма в стиле языка C 439
Заключительное замечание 440
Глава 34. Строки и числа 442
Подстановка параметров 442
Простые параметры 442
Подстановка пустых переменных 443
Получение имен переменных 445
Операции со строками 445
Вычисление и подстановка арифметических выражений 448
Основание системы счисления 448
Унарные операторы 449
Простая арифметика 449
Присваивание 450
Битовые операции 453
Логические операторы 454
bc — язык калькулятора для вычислений с произвольной точностью 456
Применение bc 457
Пример сценария 458
Заключительное замечание 459
Дополнительные сведения 459
Глава 35. Массивы 460
Что такое массивы? 460
Создание массива 461
Присваивание значений массиву 461
Доступ к элементам массива 462
Операции с массивами 464
Вывод содержимого всего массива 464
Определение числа элементов в массиве 465
Поиск используемых индексов 465
Добавление элементов в конец массива 466
Сортировка массива 466
Удаление массива 467
Заключительное замечание 467
Глава 36. Экзотика 469
Группы команд и подоболочки 469
Перенаправление 470
Подстановка процессов 470
Ловушки 472
Асинхронное выполнение 476
wait 476
Именованные каналы 477
Создание именованного канала 478
Использование именованных каналов 478
Заключительное замечание 479