Командная строка Linux. Полное руководство. 2-е межд. изд.
Международный бестселлер «Командная строка Linux» поможет преодолеть путь от первых робких щелчков по клавишам до уверенного создания полноценных программ для последней версии bash — наиболее популярной командной оболочки Linux.
Второе издание рассказывает о новых возможностях bash 4.x, таких как новые операторы перенаправления и операции подстановки. В разделе, посвященном сценариям оболочки, рассматриваются современные надежные методы программирования, способы предотвращения типичных ошибок и потенциально опасных ситуаций.
Вы освоите неустаревающие навыки владения командной строкой: навигацию по файловой системе, настройку окружения, объединение команд в цепочки и сопоставление с регулярными выражениями. Вы постигнете философию, лежащую в основе многих инструментов командной строки, разберетесь с богатым наследием, полученным от суперкомпьютеров с Unix, и приобщитесь к знаниям, накопленным поколениями гуру, исключивших мышь из своего арсенала инструментов.
Из коротких и простых глав, вы узнаете, как:
- создавать и удалять файлы, каталоги и символические ссылки;
- администрировать свою систему, от работы с сетью до установки пакетов и управления процессами;
- использовать стандартный ввод и вывод, перенаправление и конвейеры;
- редактировать файлы с помощью vi, самого популярного в мире текстового редактора;
- писать сценарии командной оболочки для автоматизации рутинных задач;
- манипулировать содержимым текстовых файлов с помощью cut, paste, grep, patch и sed.
Преодолев первый «шок командной оболочки», вы поймете, насколько естественным и логичным является этот способ взаимодействия с компьютером.
Об авторе:
Уильям Шоттс — профессиональный программист и страстный сторонник Linux с огромным опытом в разработке программного обеспечения, технической поддержке, контроле качества и документировании. Он является создателем сайта LinuxCommand.org, занимающегося популяризацией Linux, где вы можете найти самые последние новости, обзоры и получить поддержку по всем вопросам, затрагивающим командную строку Linux.
Об авторе..............................................................................................................24
О научном редакторе..........................................................................................25
Благодарности.....................................................................................................26
К первому изданию................................................................................................26
Ко второму изданию...............................................................................................27
Введение..............................................................................................................28
Зачем нужна командная строка?.............................................................................29
О чем эта книга......................................................................................................29
Кому адресована эта книга.....................................................................................30
Что дается в этой книге..........................................................................................31
Как читать эту книгу...............................................................................................31
Предварительные условия...............................................................................32
Что нового во втором издании................................................................................33
Ваши отзывы важны для нас!.................................................................................33
От издательства.....................................................................................................34
Часть I. КОМАНДНАЯ ОБОЛОЧКА..........................................................35
Глава 1. Что такое командная оболочка............................................................36
Эмуляторы терминалов..........................................................................................36
Первые удары по клавишам...................................................................................36
История команд................................................................................................38
Управление курсором.......................................................................................38
Некоторые простые команды..................................................................................38
Завершение сеанса работы с терминалом...............................................................39
Заключение............................................................................................................40
Глава 2. Навигация..............................................................................................41
Дерево каталогов файловой системы.....................................................................41
Текущий рабочий каталог.......................................................................................42
Вывод содержимого каталога.................................................................................43
Смена текущего рабочего каталога........................................................................43
Абсолютные пути.............................................................................................43
Относительные пути.........................................................................................44
Некоторые полезные сокращения....................................................................46
Заключение............................................................................................................46
Глава 3. Исследование системы.........................................................................47
Любопытные возможности ls..................................................................................47
Параметры и аргументы...................................................................................48
Пристальный взгляд на длинный формат.........................................................49
Определение типов файлов командой file...............................................................50
Просмотр содержимого файлов командой less........................................................51
Обзорное путешествие...........................................................................................53
Символические ссылки...........................................................................................57
Жесткие ссылки......................................................................................................58
Заключение............................................................................................................58
Глава 4. Операции с файлами и каталогами.....................................................59
Групповые символы................................................................................................60
mkdir — создание каталогов...................................................................................62
cp — копирование файлов и каталогов...................................................................63
Параметры команды cp и примеры ее использования.......................................63
mv — перемещение и переименование файлов......................................................64
Параметры команды mv и примеры ее использования......................................64
rm — удаление файлов и каталогов.......................................................................65
Параметры команды rm и примеры ее использования......................................65
ln — создание ссылок.............................................................................................67
Жесткие ссылки...............................................................................................67
Символические ссылки.....................................................................................68
Постройка песочницы.............................................................................................68
Создание каталогов..........................................................................................68
Копирование файлов........................................................................................69
Перемещение и переименование файлов.........................................................70
Создание жестких ссылок.................................................................................71
Создание символических ссылок......................................................................72
Удаление файлов и каталогов..........................................................................73
Заключение............................................................................................................75
Глава 5. Работа с командами..............................................................................76
Что такое команды?................................................................................................76
Идентификация команд..........................................................................................77
type — получение типа команды......................................................................77
which — определение местоположения выполняемого файла..........................77
Получение документации с описанием команд.......................................................78
help — получение справки для встроенных команд..........................................78
--help — вывод инструкции по использованию.................................................80
man — вывод страниц справочного руководства..............................................80
apropos — вывод списка подходящих команд...................................................82
whatis — вывод очень краткого описания команды..........................................83
info — вывод записи из справочного руководства Info......................................83
README и другие файлы с описанием программ..............................................85
Создание собственных команд с помощью alias......................................................85
Заключение............................................................................................................87
Глава 6. Перенаправление..................................................................................88
Стандартный ввод, вывод и вывод ошибок.............................................................88
Перенаправление стандартного вывода.................................................................89
Перенаправление стандартного вывода ошибок.....................................................91
Перенаправление стандартного вывода и стандартного вывода ошибок
в один файл.....................................................................................................91
Удаление нежелательного вывода...................................................................92
Перенаправление стандартного ввода....................................................................93
cat — объединение файлов..............................................................................93
Конвейеры.............................................................................................................95
Фильтры...........................................................................................................95
uniq — поиск или удаление повторяющихся строк............................................96
wc — вывод числа строк, слов и байтов...........................................................97
grep — поиск строк, соответствующих шаблону...............................................97
head/tail — вывод первых/последних строк из файлов.....................................98
tee — чтение со стандартного ввода и запись в стандартный
вывод и в файлы..............................................................................................99
Заключение..........................................................................................................101
Глава 7. Взгляд на мир глазами командной оболочки...................................102
Подстановка.........................................................................................................102
Подстановка путей.........................................................................................103
Подстановка тильды.......................................................................................104
Подстановка результатов арифметических выражений..................................105
Подстановка фигурных скобок.......................................................................106
Подстановка параметров................................................................................107
Подстановка команд.......................................................................................108
Экранирование.....................................................................................................109
Двойные кавычки...........................................................................................109
Одиночные кавычки.......................................................................................111
Экранирование символов...............................................................................111
Управляющие последовательности................................................................112
Заключение..........................................................................................................113
Глава 8. Продвинутые приемы работы с клавиатурой...................................114
Редактирование командной строки.......................................................................114
Перемещение курсора....................................................................................115
Изменение текста...........................................................................................115
Вырезание и вставка (удаление и возврат) текста..........................................117
Дополнение..........................................................................................................117
Использование истории........................................................................................119
Поиск в истории.............................................................................................119
Подстановка записей истории........................................................................121
Заключение..........................................................................................................122
Глава 9. Привилегии..........................................................................................123
Владельцы, члены группы и все остальные..........................................................124
Чтение, запись и выполнение...............................................................................126
chmod — изменение режима доступа к файлу................................................128
Установка режима доступа к файлу с помощью
графического интерфейса..............................................................................131
umask — определение разрешений доступа к файлам по умолчанию.............132
Некоторые специальные разрешения.............................................................134
Изменение идентичности......................................................................................135
su — запуск командной оболочки с подстановкой идентификаторов пользователя и группы.....136
sudo — выполнение команды от имени другого пользователя........................137
chown — изменение владельца и группы файла.............................................139
chgrp — изменение группы файла..................................................................140
Использование привилегий..................................................................................140
Изменение своего пароля.....................................................................................142
Заключение..........................................................................................................143
Глава 10. Процессы...........................................................................................144
Как действует процесс..........................................................................................144
Просмотр списка процессов..................................................................................145
Просмотр состояния процессов в динамике с помощью top............................148
Управление процессами.......................................................................................150
Прерывание процесса....................................................................................151
Перевод процессов в фоновый режим............................................................151
Возврат процесса на передний план..............................................................152
Приостановка процесса..................................................................................152
Сигналы...............................................................................................................153
Посылка сигналов процессам командой kill.....................................................154
Посылка сигналов нескольким процессам с помощью killall............................156
Остановка системы...............................................................................................157
Другие команды управления процессами..............................................................158
Заключение..........................................................................................................158
Часть II. ОКРУЖЕНИЕ И НАСТРОЙКА..................................................159
Глава 11. Окружение.........................................................................................160
Что хранится в окружении?..................................................................................160
Исследование окружения...............................................................................161
Некоторые интересные переменные...............................................................162
Как устанавливается окружение?.........................................................................163
Что находится в файлах запуска?...................................................................165
Изменение окружения..........................................................................................167
Какие файлы следует изменять?....................................................................167
Текстовые редакторы.....................................................................................167
Использование текстового редактора.............................................................168
Активация изменений.....................................................................................172
Заключение..........................................................................................................172
Глава 12. Плавное введение в vi......................................................................173
Зачем осваивать vi...............................................................................................173
Немного предыстории..........................................................................................174
Запуск и завершение vi........................................................................................174
Режимы редактирования......................................................................................176
Переход в режим вставки...............................................................................177
Сохранение изменений...................................................................................177
Перемещение курсора..........................................................................................178
Основы редактирования.......................................................................................179
Добавление текста в конец............................................................................179
Вставка строки...............................................................................................180
Удаление текста.............................................................................................181
Вырезание, копирование и вставка текста.....................................................182
Объединение строк........................................................................................183
Поиск и замена.....................................................................................................184
Поиск в пределах строки................................................................................184
Поиск во всем файле......................................................................................184
Глобальный поиск и замена...........................................................................185
Редактирование нескольких файлов.....................................................................186
Переключение между файлами......................................................................187
Открытие дополнительных файлов для редактирования................................188
Копирование содержимого из одного файла в другой....................................188
Вставка целого файла в другой файл.............................................................189
Сохранение результатов работы...........................................................................190
Заключение..........................................................................................................191
Глава 13. Настройка приглашения к вводу.....................................................192
Устройство строки приглашения к вводу..............................................................192
Альтернативные варианты оформления приглашения..........................................194
Добавление цвета................................................................................................196
Перемещение курсора..........................................................................................198
Сохранение определения приглашения................................................................200
Заключение..........................................................................................................200
Часть III. ТИПИЧНЫЕ ЗАДАЧИ И ОСНОВНЫЕ ИНСТРУМЕНТЫ...........201
Глава 14. Управление пакетами.......................................................................202
Системы пакетов..................................................................................................203
Как действует система пакетов.............................................................................203
Файлы пакетов...............................................................................................203
Репозитории...................................................................................................204
Зависимости...................................................................................................205
Высоко- и низкоуровневые инструменты управления пакетами......................205
Типичные задачи управления пакетами...............................................................206
Поиск пакета в репозитории..........................................................................206
Установка пакета из репозитория...................................................................206
Установка пакета из файла пакета.................................................................207
Удаление пакета............................................................................................207
Обновление пакетов из репозитория..............................................................208
Обновление пакета из файла пакета..............................................................208
Список установленных пакетов......................................................................209
Определение, установлен ли пакет................................................................209
Вывод информации об установленном пакете................................................209
Поиск пакета по установленному файлу.........................................................210
Заключение..........................................................................................................210
Глава 15. Устройства хранения........................................................................212
Монтирование и размонтирование устройств хранения........................................213
Просмотр списка смонтированных файловых систем......................................214
Определение названий устройств..................................................................218
Создание новых файловых систем........................................................................221
Управление разделами с помощью fdisk.........................................................221
Создание новой файловой системы с помощью mkfs......................................224
Проверка и восстановление файловой системы....................................................225
Непосредственное перемещение данных между устройствами.............................226
Создание образа компакт-диска.....................................................................226
Создание образа-копии компакт-диска...........................................................227
Создание образа из коллекции файлов..........................................................227
Запись образа компакт-диска...............................................................................228
Непосредственное монтирование файла ISO-образа......................................228
Очистка перезаписываемых компакт-дисков..................................................228
Запись образа................................................................................................228
Заключительное замечание..................................................................................229
Дополнительные сведения...................................................................................229
Глава 16. Сети....................................................................................................231
Исследование и мониторинг сети.........................................................................232
ping................................................................................................................232
traceroute.......................................................................................................233
ip...................................................................................................................234
netstat............................................................................................................235
Передача файлов по сети.....................................................................................237
ftp..................................................................................................................237
lftp — более удачная версия ftp.....................................................................239
wget...............................................................................................................239
Безопасные взаимодействия с удаленными узлами...............................................240
ssh.................................................................................................................240
scp и sftp........................................................................................................245
Заключение..........................................................................................................246
Глава 17. Поиск файлов....................................................................................247
locate — простой способ поиска файлов...............................................................247
find — сложный способ поиска файлов.................................................................249
Проверки.......................................................................................................250
Операторы.....................................................................................................253
Предопределенные операции.........................................................................255
Операции, определяемые пользователем.......................................................257
Увеличение эффективности...........................................................................258
xargs..............................................................................................................259
Возвращаемся в песочницу............................................................................260
Параметры.....................................................................................................262
Заключение..........................................................................................................263
Глава 18. Архивация и резервное копирование.............................................264
Сжатие файлов.....................................................................................................264
gzip................................................................................................................265
bzip2..............................................................................................................268
Архивирование файлов........................................................................................268
tar..................................................................................................................269
zip..................................................................................................................274
Синхронизация файлов и каталогов.....................................................................276
Использование rsync для копирования по сети...............................................279
Заключение..........................................................................................................280
Глава 19. Регулярные выражения...................................................................281
Что такое регулярные выражения?.......................................................................281
grep......................................................................................................................282
Метасимволы и литералы.....................................................................................284
Любой символ......................................................................................................284
Якоря...................................................................................................................285
Выражения в квадратных скобках и классы символов...........................................286
Отрицание.....................................................................................................287
Традиционные диапазоны символов...............................................................287
Классы символов POSIX........................................................................................288
Простые и расширенные регулярные выражения POSIX.......................................291
Чередование........................................................................................................293
Квантификаторы..................................................................................................295
? — совпадение с элементом ноль или один раз.............................................295
* — совпадение с элементом ноль или более раз...........................................295
+ — совпадение с элементом один или более раз..........................................296
{ } — совпадение с элементом определенное число раз.................................297
Практические примеры применения регулярных выражений................................298
Проверка списка телефонов с помощью grep.................................................298
Поиск необычных имен файлов с помощью find.............................................299
Поиск файлов с помощью locate.....................................................................299
Поиск текста в less и vim................................................................................300
Заключение..........................................................................................................301
Глава 20. Обработка текста..............................................................................303
Области применения текста.................................................................................304
Документы.....................................................................................................304
Веб-страницы.................................................................................................304
Электронная почта.........................................................................................304
Вывод на принтер..........................................................................................304
Исходный код программ.................................................................................305
А вот и наши старые знакомые!............................................................................305
cat........................................................................................................................305
sort................................................................................................................307
uniq — выявление или удаление повторяющихся строк..................................314
Нарезка и перетасовка текста..............................................................................316
cut — удаление фрагментов из всех строк в файлах......................................316
paste — слияние строк из файлов..................................................................319
join — объединение строк из двух файлов по общему полю...........................321
Сравнение текста.................................................................................................323
comm — построчное сравнение двух сортированных файлов.........................323
diff — построчное сравнение файлов.............................................................324
patch — применение diff-файла к оригиналу...................................................327
Редактирование на лету.......................................................................................328
tr — перекодирование или удаление символов...............................................328
sed — потоковый редактор для фильтрации и преобразования текста...........331
aspell — интерактивная проверка орфографии...............................................339
Заключение..........................................................................................................343
Дополнительное задание......................................................................................343
Глава 21. Форматирование вывода..................................................................344
Инструменты простого форматирования...............................................................344
nl — нумерация строк.....................................................................................345
fold — перенос строк после указанной длины.................................................348
fmt — простое форматирование текста..........................................................349
pr — форматирование текста для печати.......................................................352
printf — форматирование и вывод данных......................................................353
Системы форматирования документов..................................................................357
groff...............................................................................................................358
Заключение..........................................................................................................364
Глава 22. Печать................................................................................................365
Краткая история поддержки печати.....................................................................365
Печать в ночное время...................................................................................366
Символьные принтеры...................................................................................366
Графические принтеры..................................................................................367
Печать в Linux......................................................................................................369
Подготовка файлов к печати................................................................................369
pr — преобразование текстовых файлов для печати......................................369
Отправка задания печати на принтер...................................................................371
lpr — печать файлов (в стиле Berkeley)..........................................................371
lp — печать файлов (в стиле System V)..........................................................372
Еще одна возможность: a2ps..........................................................................373
Наблюдение за заданиями печати и управление ими...........................................376
lpstat — вывод информации о состоянии принтера.........................................376
lpq — вывод информации о состоянии очереди печати..................................377
lprm и cancel — отмена заданий печати..........................................................378
Заключение..........................................................................................................378
Глава 23. Компиляция программ......................................................................379
Что такое компиляция?........................................................................................380
Все ли программы компилируются?................................................................381
Компиляция программ на C..................................................................................382
Получение исходного кода.............................................................................382
Исследование дерева исходных текстов.........................................................384
Сборка программ............................................................................................386
Установка программ.......................................................................................390
Заключение..........................................................................................................390
Часть IV. СЦЕНАРИИ КОМАНДНОЙ ОБОЛОЧКИ..................................391
Глава 24. Создание первого сценария командной оболочки.........................392
Что такое сценарии командной оболочки.............................................................392
Как написать сценарий командной оболочки........................................................393
Формат файла сценария.................................................................................393
Разрешения на выполнение...........................................................................394
Местоположение файла сценария..................................................................394
Выбор местоположения для сценариев..........................................................396
Дополнительные хитрости по оформлению..........................................................397
Длинные имена параметров...........................................................................397
Отступы и продолжения строк.......................................................................397
Заключение..........................................................................................................398
Глава 25. Начало проекта.................................................................................399
Этап первый: минимальный документ..................................................................399
Этап второй: добавление некоторых данных........................................................401
Переменные и константы.....................................................................................402
Присваивание значений переменным и константам........................................405
Встроенные документы.........................................................................................407
Заключение..........................................................................................................409
Глава 26. Проектирование сверху вниз...........................................................410
Функции командной оболочки..............................................................................411
Локальные переменные........................................................................................414
Постоянное опробование сценария......................................................................416
Заключение..........................................................................................................419
Глава 27. Управление потоком выполнения:
ветвление при помощи if..................................................................................420
Инструкция if........................................................................................................420
Код завершения...................................................................................................421
Команда test.........................................................................................................423
Выражения для проверки файлов..................................................................423
Выражения для проверки строк......................................................................426
Выражения для проверки целых чисел...........................................................428
Более современная версия команды test..............................................................429
(( )) — для проверки целых чисел..................................................................430
Объединение выражений.....................................................................................431
Операторы управления: еще один способ ветвления............................................434
Заключение..........................................................................................................435
Глава 28. Чтение ввода с клавиатуры.............................................................437
read — чтение значений со стандартного ввода...................................................438
Параметры.....................................................................................................440
Выделение полей в строке ввода с помощью IFS............................................442
Проверка ввода....................................................................................................444
Меню....................................................................................................................446
Заключение..........................................................................................................448
Дополнительные сведения...................................................................................448
Глава 29. Управление потоком выполнения: циклы while и until.................449
Циклы..................................................................................................................449
while...............................................................................................................450
Прерывание цикла...............................................................................................452
until................................................................................................................454
Чтение файлов в циклах.......................................................................................454
Заключение..........................................................................................................455
Глава 30. Поиск и устранение ошибок.............................................................456
Синтаксические ошибки.......................................................................................456
Отсутствующие кавычки.................................................................................457
Отсутствующие или неожиданные лексемы....................................................458
Непредвиденная подстановка........................................................................458
Логические ошибки..............................................................................................460
Защитное программирование.........................................................................460
Будьте внимательны к именам файлов...........................................................462
Проверка ввода..............................................................................................463
Тестирование.......................................................................................................464
Комплекты тестов..........................................................................................465
Отладка................................................................................................................465
Поиск проблемной области............................................................................465
Трассировка...................................................................................................466
Исследование значений в процессе выполнения............................................468
Заключение..........................................................................................................469
Глава 31. Управление потоком выполнения:
ветвление с помощью case...............................................................................470
Команда case........................................................................................................470
Шаблоны........................................................................................................472
Выполнение нескольких вариантов................................................................474
Заключение..........................................................................................................476
Глава 32. Позиционные параметры.................................................................477
Доступ к командной строке..................................................................................477
Определение числа аргументов......................................................................478
shift — доступ к множеству аргументов..........................................................479
Простые приложения.....................................................................................480
Использование позиционных параметров в функциях....................................481
Обработка позиционных параметров скопом........................................................482
Более сложное приложение.................................................................................484
Заключение..........................................................................................................487
Глава 33. Управление потоком выполнения: цикл for...................................491
for: традиционная форма......................................................................................491
for: форма в стиле языка C...................................................................................494
Заключение..........................................................................................................496
Глава 34. Строки и числа..................................................................................498
Подстановка параметров......................................................................................498
Простые параметры.......................................................................................499
Подстановка пустых переменных...................................................................499
Получение имен переменных.........................................................................501
Операции со строками....................................................................................502
Преобразование регистра символов...............................................................505
Вычисление и подстановка арифметических выражений................................507
Основание системы счисления.......................................................................508
Унарные операторы.......................................................................................508
Простая арифметика......................................................................................508
Присваивание................................................................................................510
Битовые операции..........................................................................................512
Логические операторы...................................................................................513
bc — язык калькулятора для вычислений с произвольной точностью...................516
Применение bc...............................................................................................517
Пример сценария...........................................................................................518
Заключение..........................................................................................................519
Дополнительные сведения...................................................................................519
35. Массивы........................................................................................................520
Что такое массивы?..............................................................................................520
Создание массива.................................................................................................521
Присваивание значений массиву..........................................................................521
Доступ к элементам массива................................................................................522
Операции с массивами.........................................................................................524
Вывод содержимого всего массива.................................................................524
Определение числа элементов в массиве.......................................................525
Поиск используемых индексов.......................................................................526
Добавление элементов в конец массива.........................................................526
Сортировка массива.......................................................................................526
Удаление массива..........................................................................................527
Ассоциативные массивы.......................................................................................528
Заключение..........................................................................................................529
Глава 36. Экзотика.............................................................................................530
Группы команд и подоболочки.............................................................................530
Подстановка процессов........................................................................................534
Ловушки...............................................................................................................536
Асинхронное выполнение с командой wait............................................................540
Именованные каналы...........................................................................................541
Создание именованного канала......................................................................542
Использование именованных каналов............................................................542
Заключение..........................................................................................................543