Оглавление
Об авторе............................................................................................................. 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
8   Оглавление
Глава 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
Оглавление   9
Постройка песочницы............................................................................................ 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
10   Оглавление
Конвейеры............................................................................................................. 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
Оглавление   11
Глава 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
12    Оглавление
Часть 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
Оглавление   13
Редактирование нескольких файлов.................................................................... 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
14   Оглавление
Вывод информации об установленном пакете ............................................... 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
Оглавление   15
Безопасные взаимодействия с удаленными узлами.............................................. 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
16   Оглавление
Якоря .................................................................................................................. 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
Оглавление   17
Сравнение текста ................................................................................................ 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
18   Оглавление
Наблюдение за заданиями печати и управление ими .......................................... 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
Оглавление   19
Встроенные документы........................................................................................ 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
20   Оглавление
Прерывание цикла............................................................................................... 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
Оглавление   21
Использование позиционных параметров в функциях ................................... 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
22   Оглавление
Доступ к элементам массива................................................................................ 522
Операции с массивами ........................................................................................ 524
Вывод содержимого всего массива................................................................ 524
Определение числа элементов в массиве ...................................................... 525
Поиск используемых индексов....................................................................... 526
Добавление элементов в конец массива........................................................ 526
Сортировка массива ...................................................................................... 526
Удаление массива ......................................................................................... 527
Ассоциативные массивы ...................................................................................... 528
Заключение......................................................................................................... 529
Глава 36. Экзотика............................................................................................ 530
Группы команд и подоболочки ............................................................................ 530
Подстановка процессов ....................................................................................... 534
Ловушки.............................................................................................................. 536
Асинхронное выполнение с командой wait........................................................... 540
Именованные каналы .......................................................................................... 541
Создание именованного канала..................................................................... 542
Использование именованных каналов ........................................................... 542
Заключение......................................................................................................... 543