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