Блок 7
Текстовые редакторы в терминале
На протяжении предыдущих блоков мы уже несколько раз упоминали, что множество задач администрирования Linux сводится к редактированию конфигурационных файлов — текстовых файлов с настройками, разбр…
Введение в блок
На протяжении предыдущих блоков мы уже несколько раз упоминали, что множество задач администрирования Linux сводится к редактированию конфигурационных файлов — текстовых файлов с настройками, разбросанных в основном по папке /etc (вспомните урок 5.2). До сих пор мы обходились простым перенаправлением (echo "текст" > файл) для создания содержимого файлов — рабочий, но крайне ограниченный способ, не подходящий для реального, удобного редактирования уже существующих многострочных файлов. В этом коротком, но важном блоке мы освоим два главных консольных текстовых редактора Ubuntu — простой и дружелюбный nano, и мощный, но более сложный в освоении vim.
Урок 7.1. Зачем нужен консольный редактор
Понять, зачем вообще нужны отдельные редакторы для работы именно в терминале, если существует уже привычный по Блоку 3 графический текстовый редактор.
Теория
Казалось бы, зачем изучать отдельные, менее привычные редакторы, если можно просто открыть файл в обычном графическом текстовом редакторе (например, приложение «Text Editor», доступное через файловый менеджер из урока 3.2)? Причина проста и практически крайне важна: на серверах, как правило, вообще нет графического интерфейса. Мы уже упоминали в уроке 1.6, что подавляющее большинство серверов Linux в мире работают именно в текстовом режиме, без установленной графической среды (GNOME из Блока 3) — это экономит ресурсы сервера и снижает количество потенциальных уязвимостей безопасности (тема Блока 14). При администрировании такого сервера через SSH (тему которого подробно разберём в Блоке 13) единственным доступным способом отредактировать конфигурационный файл будет именно консольный текстовый редактор.
Кроме того, даже при работе на компьютере с установленным графическим интерфейсом, консольные редакторы часто оказываются быстрее и удобнее для administрирования: не нужно переключаться между окнами терминала и графического редактора, не нужно поднимать мышь — все действия выполняются, не отрывая рук от клавиатуры, что для опытного администратора становится значительно быстрее.
Существует множество различных консольных текстовых редакторов, но мы сосредоточимся на двух самых распространённых и практически значимых для системного администратора Ubuntu:
nano — простой, интуитивно понятный редактор с видимыми подсказками горячих клавиш прямо на экране. Идеален для новичков и для быстрых, несложных правок.
vim (улучшенная версия более старого редактора vi, само название — Vi IMproved) — значительно более мощный, но и заметно менее интуитивный редактор с принципиально иной, «модальной» логикой работы (подробно разберём в уроке 7.3). Vim практически гарантированно присутствует на любом Linux-сервере даже в самой минимальной конфигурации (в отличие от nano, который иногда приходится устанавливать отдельно), поэтому уверенное владение хотя бы базовыми операциями vim — важный практический навык, который может пригодиться в ситуации, когда nano просто недоступен.
Практика
Практика этого урока — вводная, подготовительная.
Шаг 1. Проверьте, установлены ли оба редактора в вашей системе, используя уже знакомую команду из Блока 5: which nano и which vim.
Что вы увидите: пути к обоим редакторам (обычно /usr/bin/nano и /usr/bin/vim или /bin/vim), если они предустановлены — в Ubuntu Desktop оба редактора, как правило, присутствуют «из коробки».
Шаг 2. Проверьте версии обоих редакторов (аналогично уже знакомой нам практике из Блока 4 с bash --version): nano --version и vim --version.
Разбор команд
В этом уроке мы только проверили наличие редакторов командой which, уже подробно разобранной в уроке 5.8. Сами команды запуска редакторов (nano, vim) подробно разберём в следующих двух уроках.
Возможные ошибки
- Ошибка:** попытка редактировать конфигурационные файлы через графический текстовый редактор на сервере без графического интерфейса.
Почему возникает: привычка к графическому интерфейсу, сформированная за время работы с Ubuntu Desktop в предыдущих блоках курса.
Как определить: на сервере без графической среды попытка запустить графический редактор приведёт к ошибке — либо программа не найдена, либо (если запускается удалённо через SSH без специальной настройки перенаправления графики) она попросту не сможет отобразить окно.
Как исправить: переключиться на использование консольного редактора (nano или vim).
Как избежать: заранее привыкнуть к работе с консольными редакторами уже сейчас, на учебной виртуальной машине, чтобы этот навык был готов к моменту, когда вы начнёте администрировать реальные серверы (Блок 20).
Практические задания
- Проверьте наличие и версии nano и vim в вашей системе, запишите результаты в конспект.
- Своими словами объясните в конспекте, почему на реальных серверах консольные редакторы часто являются единственным доступным способом редактирования файлов.
Проверка знаний
Вопрос 1. Почему консольные текстовые редакторы остаются практически важным навыком, даже если на вашем личном компьютере всегда есть графический интерфейс?
Ответ: Потому что подавляющее большинство серверов Linux работают без графического интерфейса, и при администрировании такого сервера (в том числе удалённо через SSH) единственным доступным способом редактирования файлов будет именно консольный редактор.
Вопрос 2. Какой из двух изучаемых в этом блоке редакторов гарантированно присутствует практически на любом Linux-сервере даже в минимальной конфигурации?
Ответ: vim (точнее, как минимум его более простой предок vi) — он входит в базовый набор практически любого дистрибутива Linux, в то время как nano иногда приходится устанавливать отдельно.
Итоги урока
Вы изучили: причины, по которым консольные текстовые редакторы остаются важным навыком системного администратора.
Вы умеете: проверять наличие и версии установленных текстовых редакторов.
В следующем уроке потребуется: это понимание, чтобы начать практическое освоение простого и дружелюбного редактора nano.
Урок 7.2. Редактор `nano`: интерфейс, горячие клавиши, работа с файлом
Освоить nano как быстрый и удобный инструмент для повседневного редактирования файлов через терминал — для большинства несложных задач редактирования конфигурационных файлов на протяжении оставшегося курса именно nano станет вашим основным рабочим инструментом.
Теория
nano спроектирован специально с расчётом на интуитивность и низкий порог входа — в отличие от vim (о котором поговорим в следующем уроке), интерфейс nano всегда явно показывает список доступных горячих клавиш прямо внизу экрана, поэтому вам не нужно запоминать их все заранее — достаточно посматривать на подсказки в процессе работы.
Ключевая особенность записи горячих клавиш nano (и многих других терминальных программ): символ ^ (крышка) в подсказках интерфейса означает клавишу Ctrl. Например, подсказка ^O означает сочетание Ctrl+O, ^X — Ctrl+X, и так далее.
Основные горячие клавиши nano, которые стоит запомнить с самого начала:
Ctrl+O** (Write Out, «записать») — сохранить текущий файл. После нажатия nano попросит подтвердить имя файла (по умолчанию предложит текущее имя) — нажмите Enter, чтобы подтвердить сохранение под тем же именем.Ctrl+X** (Exit, «выход») — выйти из nano. Если в файле есть несохранённые изменения, nano спросит, сохранить ли их перед выходом.Ctrl+K** (Cut, «вырезать») — вырезать («вырезать» означает удалить с возможностью последующей вставки, аналогично привычному по графическим редакторам действию) текущую строку целиком.Ctrl+U** (Uncut/Paste, «вставить») — вставить ранее вырезанный текст.Ctrl+W** (Where Is, «где находится») — начать поиск текста внутри файла.Ctrl+G** (Get Help, «получить помощь») — открыть встроенную краткую справку по всем горячим клавишам nano.
Практика
Шаг 1. Откройте терминал и создайте новый файл (или откройте уже существующий) через nano: nano ~/Linux-Course/Block-07/my_notes.txt (при необходимости заранее создайте папку Block-07 через уже знакомую команду mkdir -p, изученную в Блоке 5).
Что произойдёт: откроется полноэкранный интерфейс nano — сверху название программы и имя открытого файла, в основной части экрана — область редактирования текста, внизу — панель с наиболее часто используемыми горячими клавишами.
[Скриншот терминала]
Шаг 2. Введите с клавиатуры несколько строк текста, например: «Это мой первый файл, отредактированный через nano. Я изучаю Linux командную строку.»
Шаг 3. Сохраните файл: нажмите Ctrl+O, затем, увидев внизу экрана запрос подтверждения имени файла, просто нажмите Enter, чтобы сохранить именно под указанным при открытии именем.
[Скриншот настроек]
Шаг 4. Не выходя из nano, потренируйте поиск текста: нажмите Ctrl+W, введите слово «Linux», нажмите Enter.
Что произойдёт: курсор переместится к первому найденному вхождению слова «Linux» в тексте.
Шаг 5. Потренируйте вырезание и вставку строки: переместите курсор на любую строку (стрелками клавиатуры), нажмите Ctrl+K (строка исчезнет из текста, но сохранится во временном «буфере обмена» nano), затем переместите курсор в другое место документа и нажмите Ctrl+U, чтобы вставить ранее вырезанную строку в новое место.
[Скриншот результата]
Шаг 6. Выйдите из nano, сохранив изменения: нажмите Ctrl+X. Если есть несохранённые изменения (в нашем случае они уже были сохранены на шаге 3, но после экспериментов с вырезанием/вставкой на шаге 5 появились новые изменения), nano спросит «Save modified buffer?» («Сохранить изменённый файл?») — нажмите Y (yes, «да»), затем Enter для подтверждения имени файла.
Шаг 7. Проверьте результат уже знакомой командой из Блока 5: cat ~/Linux-Course/Block-07/my_notes.txt.
Разбор команд
Команда nano
- Назначение:** запускает консольный текстовый редактор nano, открывая указанный файл (или создавая новый, если файла с таким именем ещё не существует).
- Синтаксис:**
nano [опции] [файл] - Основные параметры:**
+номер_строки— открыть файл сразу с переходом на указанную строку (полезно, например, при работе с сообщением об ошибке, явно указывающим номер проблемной строки в конфигурационном файле). - Реальные примеры использования:**
nano /etc/hosts— открыть конкретный системный конфигурационный файл для редактирования (тему файла/etc/hostsподробно затронем в Блоке 12, посвящённом сети). - Типичные ошибки:** попытка отредактировать системный файл, требующий прав администратора, без соответствующих прав — nano откроет файл в режиме только для чтения, о чём явно предупредит в верхней части экрана, и попытка сохранить изменения (
Ctrl+O) завершится ошибкой доступа.
Способы исправления: закрыть nano без сохранения (Ctrl+X, затем N на вопрос о сохранении) и открыть файл заново с использованием механизма повышения прав sudo, который подробно разберём в Блоке 8.
Возможные ошибки
- Ошибка:** случайное закрытие nano без сохранения важных изменений (ответ «N» на вопрос о сохранении вместо «Y», по невнимательности).
Почему возникает: невнимательность при быстром нажатии клавиш, особенно на начальном этапе привыкания к интерфейсу.
Как определить: при повторном открытии того же файла обнаруживается, что внесённые ранее изменения отсутствуют.
Как исправить: внести изменения заново — восстановление невозможно, если файл не сохранялся ранее (или не была заранее создана резервная копия, тема Блока 11).
Как избежать: внимательно читать запрос nano перед нажатием клавиши ответа, особенно при выходе из редактора с внесёнными правками.
Практические задания
- Создайте новый файл через nano, введите произвольный текст из 5–10 строк, сохраните и закройте файл, а затем откройте его снова, чтобы убедиться в успешном сохранении.
- Откройте существующий файл (например,
people.txtиз Блока 6), используя параметр+номер_строкидля перехода сразу к конкретной строке (например,nano +3 people.txt), и убедитесь, что курсор действительно оказался на третьей строке. - Потренируйте поиск (
Ctrl+W) в любом из ранее созданных многострочных файлов (например,big_file.txtиз Блока 6), найдя конкретное искомое слово или число.
Проверка знаний
Вопрос 1. Что означает символ ^ в подсказках горячих клавиш, отображаемых внизу экрана nano?
Ответ: Символ ^ обозначает клавишу Ctrl. Например, подсказка ^O означает сочетание клавиш Ctrl+O.
Вопрос 2. Что произойдёт, если попытаться сохранить (Ctrl+O) файл, для редактирования которого у вас недостаточно прав доступа?
Ответ: Сохранение завершится ошибкой доступа — nano заранее предупреждает об этом ограничении при открытии такого файла, показывая соответствующее уведомление в верхней части экрана.
Итоги урока
Вы изучили: интерфейс и основные горячие клавиши редактора nano — сохранение, выход, вырезание/вставка, поиск.
Вы умеете: создавать, редактировать, сохранять и искать текст внутри файлов с помощью nano.
В следующем уроке потребуется: общее понимание консольного редактирования, чтобы освоить значительно более мощный, но и более сложный редактор vim.
Урок 7.3. Редактор `vim`: режимы (normal/insert/command), базовые команды, выход и сохранение
Освоить базовый минимум работы с vim, достаточный для уверенного редактирования файлов на любом сервере, где может не оказаться nano — этот навык является своего рода «страховкой» системного администратора на случай ограниченного окружения.
Теория
Принципиальное концептуальное отличие vim от nano (и от большинства привычных текстовых редакторов вообще) заключается в модальности (modal editing, «модальное редактирование») — vim имеет несколько разных режимов работы, и одни и те же клавиши клавиатуры выполняют совершенно разные действия в зависимости от того, в каком режиме вы сейчас находитесь. Это может показаться странным и неудобным на первый взгляд (и действительно является главной причиной, по которой у vim репутация «сложного для новичков» редактора), но со временем даёт значительное ускорение работы для опытных пользователей, так как большинство операций можно выполнять, не отрывая пальцы от основной раскладки клавиатуры и не используя мышь.
Разберём три основных режима, которых достаточно для базового практического владения:
Нормальный режим (Normal mode) — режим, в котором vim находится сразу после открытия файла, и в который всегда можно вернуться нажатием клавиши Esc. В этом режиме клавиши клавиатуры интерпретируются не как ввод текста, а как команды — перемещение курсора, удаление, копирование, поиск и так далее. Это принципиально отличается от nano, где вы можете печатать текст сразу же после открытия файла.
Режим вставки (Insert mode) — режим, в котором vim ведёт себя привычным образом: то, что вы печатаете на клавиатуре, действительно вводится как текст в файл, точно так же, как в nano или любом графическом редакторе. Переход в этот режим из нормального осуществляется нажатием клавиши i (insert, «вставить»).
Командный режим (Command mode, также называют режимом «Ex-команд») — специальный режим для ввода более сложных команд, связанных с сохранением, выходом, поиском и заменой (то есть, по сути, использованием знакомого нам по Блоку 6 sed-подобного синтаксиса прямо внутри редактора). Переход в этот режим осуществляется из нормального режима нажатием двоеточия :, после чего в нижней части экрана появляется командная строка для ввода.
Базовый практический алгоритм работы с vim, которого достаточно для начала уверенной работы:
- Открыть файл командой
vim имя_файла— вы окажетесь в нормальном режиме. - Нажать
i, чтобы перейти в режим вставки и начать печатать текст. - Нажать
Esc, чтобы вернуться в нормальный режим, когда ввод текста завершён. - Ввести
:wq(write and quit, «записать и выйти») и нажать Enter, чтобы сохранить файл и закрыть vim.
Дополнительные полезные команды в нормальном режиме:
dd** — удалить (буквально «delete», повторённая дважды для полного удаления строки, а не части) текущую строку целиком.yy** (yank, «скопировать») — скопировать текущую строку.p** (paste, «вставить») — вставить скопированную или удалённую строку после текущей позиции курсора./текст** (нажатое в нормальном режиме) — начать поиск текста, аналогичноCtrl+Wв nano.u** (undo, «отменить») — отменить последнее действие.
Команды командного режима (вводимые после :):
:w** — сохранить (write) файл без выхода.:q** — выйти (quit), если нет несохранённых изменений.:q!** — выйти принудительно, отменив все несохранённые изменения (восклицательный знак в vim традиционно используется для обозначения «принудительного» варианта команды).:wq** — сохранить и выйти одновременно (самая часто используемая комбинация для завершения работы).
Практика
Шаг 1. Откройте терминал и создайте новый файл через vim: vim ~/Linux-Course/Block-07/vim_practice.txt.
Что произойдёт: откроется интерфейс vim в нормальном режиме — в отличие от nano, вы окажетесь на почти пустом экране без явных подсказок горячих клавиш (это ещё одна причина, по которой vim менее интуитивен для новичка — подсказок значительно меньше, чем в nano).
[Скриншот терминала]
Шаг 2. Нажмите клавишу i, чтобы перейти в режим вставки.
Что произойдёт: в нижней части экрана обычно появится индикатор `-- INSERT --» («вставка»), подтверждающий, что вы теперь находитесь именно в режиме вставки, а не в нормальном режиме.
Шаг 3. Введите несколько строк текста, например: «Первая строка про vim. Вторая строка про режимы. Третья строка про сохранение.» (нажимайте Enter после каждого предложения, чтобы создать отдельные строки).
Шаг 4. Нажмите клавишу Esc, чтобы вернуться в нормальный режим.
Что произойдёт: индикатор -- INSERT -- в нижней части экрана исчезнет, подтверждая возврат в нормальный режим.
[Скриншот настроек]
Шаг 5. Потренируйте команды нормального режима. Переместите курсор (стрелками) на вторую строку и нажмите dd.
Что произойдёт: вторая строка будет удалена целиком, а оставшиеся строки сдвинутся вверх.
Шаг 6. Отмените это удаление командой u (undo).
Что произойдёт: удалённая строка вернётся на своё прежнее место — vim, как и многие современные редакторы, поддерживает отмену последних действий.
Шаг 7. Сохраните файл без выхода: нажмите :, введите w, нажмите Enter.
Что произойдёт: в нижней части экрана появится краткое сообщение об успешном сохранении (обычно с указанием количества сохранённых строк и байт).
[Скриншот результата]
Шаг 8. Сохраните и выйдите одновременно: нажмите :, введите wq, нажмите Enter.
Что произойдёт: vim закроется, и вы вернётесь к обычному приглашению командной строки терминала.
Шаг 9. Проверьте результат: cat ~/Linux-Course/Block-07/vim_practice.txt.
Разбор команд
Команда vim
- Назначение:** запускает консольный текстовый редактор vim.
- Синтаксис:**
vim [опции] [файл] - Реальные примеры использования:**
vim /etc/ssh/sshd_config— открыть конфигурационный файл службы SSH (тему которого подробно разберём в Блоке 13) для редактирования на сервере, где nano может быть недоступен. - Типичные ошибки:** попытка сразу начать печатать текст сразу после открытия файла, находясь в нормальном режиме — вместо ввода текста нажатые клавиши интерпретируются как команды, что может привести к неожиданным изменениям в файле или странному поведению редактора.
Как определить: введённый «текст» не появляется как обычные символы, а вызывает странные, непредсказуемые действия (перемещение курсора, удаление символов, и подобное).
Способы исправления: нажать Esc для возврата в заведомо известный нормальный режим, после чего заново нажать i для правильного перехода в режим вставки перед вводом текста.
Возможные ошибки
- Ошибка:** «застревание» в vim без понимания, как из него выйти — одна из самых знаменитых, часто упоминаемых в шутках среди программистов и администраторов проблем новичков, встретившихся с vim впервые.
Почему возникает: незнание о необходимости сначала нажать Esc для перехода в нормальный режим, а затем ввести команду выхода через :.
Как определить: попытки набрать exit, quit, Ctrl+X (по аналогии с nano) или другие интуитивно ожидаемые способы выхода не работают, потому что вводимые символы либо интерпретируются как команды нормального режима, либо, если вы всё ещё в режиме вставки, добавляются как обычный текст в файл.
Как исправить: нажать Esc (возможно, несколько раз подряд, чтобы гарантированно оказаться в нормальном режиме, даже если было неясно, в каком режиме находились до этого), затем ввести :q!, чтобы принудительно выйти, отменив любые случайные изменения, которые могли произойти во время «застревания».
Как избежать: твёрдо запомнить этот алгоритм экстренного выхода из vim ещё до того, как он реально понадобится: Esc, затем :q!, затем Enter — универсальный «аварийный выход» для любой ситуации растерянности внутри vim.
Практические задания
- Откройте новый файл через vim, введите текст из 5 строк в режиме вставки, вернитесь в нормальный режим, удалите одну строку командой
dd, скопируйте другую строку командойyyи вставьте её в конец файла командойp, затем сохраните и выйдите через:wq. - Потренируйте алгоритм «аварийного выхода» из раздела «Возможные ошибки»: откройте любой тестовый файл, внесите произвольные, не важные для вас изменения, но выйдите без сохранения через
:q!, и убедитесь черезcat, что файл остался в исходном, неизменном состоянии. - Найдите (через поиск в интернете или собственные эксперименты внутри vim, если чувствуете уверенность) ещё одну полезную команду нормального режима vim, помимо уже изученных
dd,yy,p,u,/, и запишите её в конспект вместе с кратким описанием.
Проверка знаний
Вопрос 1. Что произойдёт, если начать печатать текст сразу после открытия файла в vim, находясь в нормальном режиме, не нажав предварительно i?
Ответ: Нажатые клавиши будут интерпретироваться не как вводимый текст, а как команды нормального режима, что может привести к неожиданным изменениям файла (например, удалению символов или строк) или другому непредсказуемому поведению, вместо ожидаемого добавления текста.
Вопрос 2. Какая последовательность действий является универсальным «аварийным выходом» из vim без сохранения каких-либо изменений?
Ответ: Нажать Esc (для гарантированного перехода в нормальный режим), затем ввести :q! и нажать Enter — это принудительно закроет vim, отменив любые несохранённые изменения.
Итоги урока
Вы изучили: концепцию модальности vim, три основных режима (нормальный, вставки, командный), и базовый набор команд для навигации, редактирования, сохранения и выхода.
Вы умеете: открывать, редактировать, сохранять файлы в vim, а также уверенно и безопасно выходить из редактора в любой ситуации.
В следующем уроке потребуется: владение обоими редакторами, чтобы применить эти навыки на практике — редактирование реальных конфигурационных файлов системы.
Урок 7.4. Практика: редактирование конфигурационных файлов
Закрепить владение обоими редакторами на практике, применив их к реальным (хотя и относительно безопасным для экспериментов) конфигурационным файлам системы, а также познакомиться с важной практикой резервного копирования конфигурационных файлов перед их изменением.
Теория
Прежде чем редактировать любой системный конфигурационный файл, опытные системные администраторы придерживаются важного правила, которое мы уже упоминали в контексте sed -i в Блоке 6: всегда создавать резервную копию файла перед его изменением. Это простое правило, требующее буквально одной короткой команды (уже знакомая нам cp из Блока 5), может спасти вас от долгих часов диагностики проблем, если внесённые изменения окажутся ошибочными и приведут к неработоспособности связанной с этим файлом службы.
Устоявшееся, широко распространённое в сообществе Linux соглашение — добавлять к резервной копии суффикс .bak (сокращение от «backup») или дату изменения, чтобы отличать её от оригинала и, при необходимости, от нескольких последовательных резервных копий одного и того же файла.
В этом уроке мы потренируемся на файле /etc/hosts — сравнительно безопасном для экспериментов системном файле (мы подробно вернёмся к его настоящему назначению в Блоке 12, посвящённом сети, а пока используем его просто как учебный пример реального конфигурационного файла с понятной структурой).
Практика
Шаг 1. Просмотрите текущее содержимое файла /etc/hosts командой cat /etc/hosts (эта команда не требует особых прав, в отличие от изменения файла).
Что вы увидите: несколько строк, обычно начинающихся с 127.0.0.1 и ::1, за которыми следует слово localhost — это стандартная, предустановленная конфигурация, которая указывает компьютеру, как интерпретировать имя «localhost» (подробно разберём это понятие в Блоке 12).
[Скриншот терминала]
Шаг 2. Создайте резервную копию файла перед любыми изменениями, следуя описанному в теории правилу (обратите внимание: для копирования файлов внутри /etc в некоторых случаях может потребоваться sudo, подробно о котором поговорим в Блоке 8 — если команда завершится ошибкой доступа, просто зафиксируйте это наблюдение в конспекте и продолжите урок, ознакомившись с оставшимися шагами теоретически, до момента полноценного изучения прав в следующем блоке): cp /etc/hosts /etc/hosts.bak.
Шаг 3. Попробуйте открыть файл /etc/hosts через nano в режиме только для чтения (без прав администратора): nano /etc/hosts.
Что вы увидите: в верхней части экрана nano, вероятно, появится предупреждение вида «File is read only» («Файл доступен только для чтения») — это наглядная практическая демонстрация уже упомянутой в уроке 7.2 ситуации, когда для реального изменения системного файла требуются повышенные права, которые мы подробно изучим уже в следующем блоке курса.
[Скриншот настроек]
Шаг 4. Закройте nano без попытки сохранения (Ctrl+X), так как мы намеренно не будем в этом уроке вносить реальные изменения в системный файл без должного понимания механизма прав доступа — это будет полноценно раскрыто в Блоке 8, а здесь мы лишь наблюдаем и практикуемся на безопасном учебном примере.
Шаг 5. Для полноценной практики редактирования без риска затронуть реальную системную конфигурацию — скопируйте файл /etc/hosts в свою домашнюю папку, где у вас точно есть все необходимые права на изменение (вспомните понятие владельца файла, которое мы вскользь видели в выводе ls -l ещё в Блоке 5, и подробно раскроем в Блоке 8): cp /etc/hosts ~/Linux-Course/Block-07/hosts_practice.txt.
Шаг 6. Откройте скопированный файл через nano: nano ~/Linux-Course/Block-07/hosts_practice.txt.
Шаг 7. Добавьте в конец файла новую строку с комментарием (в конфигурационных файлах Linux символ # в начале строки, как мы уже упоминали в уроке 6.5, обычно означает комментарий — пояснительный текст, игнорируемый самой программой при чтении файла, но полезный для человека, читающего конфигурацию): # Эта строка добавлена в рамках практики курса Linux.
Шаг 8. Сохраните и закройте файл (Ctrl+O, Enter, Ctrl+X).
Шаг 9. Откройте тот же файл теперь уже через vim, чтобы дополнительно потренировать оба редактора на одном и том же практическом примере: vim ~/Linux-Course/Block-07/hosts_practice.txt.
Шаг 10. Перейдите в режим вставки (i), добавьте ещё одну строку-комментарий, например # Вторая строка, добавленная через vim, вернитесь в нормальный режим (Esc), и сохраните с выходом (:wq).
Шаг 11. Проверьте итоговый результат: cat ~/Linux-Course/Block-07/hosts_practice.txt.
Что вы увидите: исходное содержимое файла /etc/hosts плюс обе добавленные вами строки-комментария — подтверждение успешной практики обоих редакторов на одном и том же реалистичном примере.
[Скриншот результата]
Разбор команд
В этом уроке мы применили уже подробно разобранные ранее команды cat (Блок 5), cp (Блок 5), nano (урок 7.2) и vim (урок 7.3) — новых команд не вводилось, урок целиком посвящён практическому закреплению уже изученного материала на реалистичном примере.
Возможные ошибки
- Ошибка:** внесение изменений напрямую в реальный системный файл (например, настоящий
/etc/hosts, а не его копию) без предварительной резервной копии, при последующем экспериментировании в будущих блоках курса (особенно в Блоке 12, где мы вернёмся к этому файлу уже с реальными правами администратора).
Почему возникает: спешка или забывчивость относительно важности резервного копирования, о которой говорилось в теории этого урока.
Как определить: сетевые функции, зависящие от корректности файла /etc/hosts (подробно — в Блоке 12), начинают работать не так, как ожидалось, после внесённых изменений.
Как исправить: восстановить файл из заранее созданной резервной копии простой командой cp в обратном направлении (из .bak-файла обратно на исходное место).
Как избежать: сформировать привычку, закреплённую уже в этом уроке — перед изменением любого системного конфигурационного файла первым делом создавать его резервную копию, ещё до открытия в редакторе.
Практические задания
- Повторите шаги 5–11 практики этого урока для любого другого некритичного текстового файла из ваших материалов курса (не обязательно системного), потренировав последовательное редактирование одного и того же файла сначала через nano, а затем через vim.
- Составьте в конспекте личную памятку — краткую пошаговую инструкцию «Как безопасно редактировать конфигурационный файл», основанную на всём материале этого урока (включая обязательный шаг резервного копирования).
- Удалите тестовые файлы, созданные в рамках практики этого урока (
hosts_practice.txtи, если получилось создать,/etc/hosts.bak), чтобы не путать их с реальными системными файлами в будущих блоках курса — используйте уже знакомую командуrmс должной осторожностью, о которой говорилось в Блоке 5.
Проверка знаний
Вопрос 1. Почему перед редактированием системного конфигурационного файла рекомендуется сначала создать его резервную копию?
Ответ: Потому что ошибочные изменения в конфигурационном файле могут привести к неработоспособности связанной с ним службы или функции системы, а наличие резервной копии позволяет быстро восстановить исходное рабочее состояние простым копированием файла обратно, вместо долгой диагностики и исправления проблемы вручную.
Вопрос 2. Что означает символ # в начале строки типичного конфигурационного файла Linux?
Ответ: Он обозначает комментарий — пояснительный текст для человека, читающего файл, который сама программа, использующая эту конфигурацию, игнорирует при чтении настроек.
Итоги урока
Вы изучили: практику безопасного редактирования конфигурационных файлов, включая обязательное резервное копирование перед изменениями.
Вы умеете: применять оба изученных редактора (nano и vim) к реальным конфигурационным файлам, создавать резервные копии перед их изменением.
В следующем уроке (это будет уже Блок 8) потребуется: весь накопленный материал этого блока про редактирование файлов, чтобы перейти к теме, ради которой мы, по сути, столкнулись с ограничением прав на файл `/etc/hosts» в этом уроке, — полноценному изучению пользователей, групп и прав доступа в Linux.
Мини-проект блока
Задача: закрепить владение обоими редакторами, создав небольшой личный справочник конфигурационных файлов — подготовительный шаг перед полноценным администрированием системы в последующих блоках.
Что нужно сделать:
- С помощью
find(Блок 5) найдите в папке/etcпять любых конфигурационных файлов с расширением.conf. - Для каждого из пяти файлов просмотрите его содержимое (
catилиless, Блок 6) и запишите в отдельный файл-конспект (создайте и заполните его через nano) краткое предположение о назначении каждого файла, судя по его имени, расположению и содержимому. - Откройте этот файл-конспект повторно, но уже через vim, и добавьте в конец итоговый вывод — какой из двух редакторов показался вам удобнее на данном этапе обучения и почему.
- Заархивируйте получившийся файл-конспект вместе с любыми другими текстовыми учебными материалами этого блока в единый
.tar.gzархив (используя командуtarиз Блока 6).
Критерий готовности: файл-конспект создан и отредактирован обоими редакторами, архив создан.
Контрольные вопросы
- Почему консольные текстовые редакторы остаются важным навыком, несмотря на существование графических редакторов?
- Перечислите основные горячие клавиши nano для сохранения, выхода, поиска, вырезания и вставки текста.
- Объясните разницу между нормальным режимом и режимом вставки в vim.
- Опишите пошагово алгоритм «аварийного выхода» из vim без сохранения изменений.
- Почему перед редактированием системного конфигурационного файла рекомендуется сначала создать его резервную копию?
Выводы по блоку
Этот блок был короче предыдущих, но не менее практически важен: вы освоили оба главных консольных текстовых редактора Ubuntu — простой nano для повседневных быстрых правок, и мощный, хотя и требующий привыкания vim, который гарантированно доступен практически на любом Linux-сервере. Вы также усвоили критически важное практическое правило резервного копирования конфигурационных файлов перед их изменением — привычку, которая будет сопровождать вас на протяжении всего оставшегося курса.
Список изученных тем
- Причины важности консольных текстовых редакторов для системного администрирования.
- Редактор nano: интерфейс, горячие клавиши сохранения, выхода, поиска, вырезания/вставки.
- Редактор vim: концепция модальности, режимы normal/insert/command, базовые команды и алгоритм безопасного выхода.
- Практика безопасного редактирования конфигурационных файлов с обязательным резервным копированием.
Рекомендации перед переходом
Убедитесь, что вы можете уверенно создать, отредактировать и сохранить файл в обоих редакторах, а также твёрдо помните алгоритм «аварийного выхода» из vim (Esc, затем :q!) — это тот навык, отсутствие которого может создать неприятную растерянность в реальной рабочей ситуации на сервере. В следующем блоке мы наконец полноценно разберёмся, почему некоторые файлы (как /etc/hosts в этом блоке) были доступны только для чтения, и научимся управлять правами доступа осознанно — это одна из центральных тем всего курса.