Skip to main content

Глава 4. Навигация и основные команды

Учебная методичка. Ubuntu Server 26.04.1 LTS. Актуализация и проверка команд на виртуальной машине: 7 октября 2026 года.

Цель занятия

Научиться ориентироваться в дереве каталогов, читать текстовые файлы и находить нужные записи журналов. После занятия студент должен различать абсолютный и относительный путь, выбирать средство просмотра файла и объяснять назначение основных системных каталогов.

Работа выполняется в VirtualBox от имени student с паролем 123456. Имя узла — 562-01–562-13 по номеру рабочего места от входа. Сеть: первый адаптер — мост и DHCP, второй — NAT без настройки в Ubuntu. Для этой главы сеть изменять не требуется.

1. Терминал, оболочка и команда

Терминал принимает ввод и показывает вывод программ. Оболочка, обычно Bash, разбирает командную строку и запускает команды. Приглашение может содержать пользователя, имя узла и текущий каталог; его оформление на разных установках отличается.

Команда обычно состоит из имени программы, параметров и аргументов. В ls -l /etc имя команды — ls, параметр — -l, аргумент пути — /etc. Не все команды являются отдельными файлами: cd встроена в оболочку, поскольку меняет её текущий каталог.

whoami
hostname
pwd

Ожидаемый пользователь — student; pwd показывает текущий каталог. Команды вводят без копирования приглашения вида student@562-01:~$. Linux различает регистр: Report.txt и report.txt — разные имена. Пробел разделяет аргументы; имя с пробелом нужно заключать в кавычки.

Запомнить: терминал и оболочка

Терминал — средство ввода и отображения текста. Оболочка — программа обработки команд. Текущий каталог — каталог, относительно которого оболочка разрешает относительные пути.

2. Пути и перемещение по каталогам

Абсолютный путь начинается с / и задаётся от корня дерева. Относительный путь начинается относительно текущего каталога. . означает текущий каталог, .. — родительский. ~ в начале соответствующего слова Bash раскрывается в домашний каталог пользователя.

cd /etc
pwd
cd /home/student
pwd
cd ~
cd /var/log
cd -

cd - возвращает в предыдущий каталог, а не обязательно домой. cd без аргументов обычно переходит в домашний каталог. Не путайте /root — домашний каталог root — с /, корнем всего дерева.

Файлы могут находиться на разных разделах, но представлены в одном дереве через точки монтирования. Поэтому / нельзя полностью приравнивать к диску C: в Windows.

Выучить: пути

Абсолютный путь: /home/student/report.txt. Относительный путь из /home/student: report.txt. Для определения результата относительного пути сначала определяют текущий каталог.

Записать: pwd — показать каталог; cd — перейти; cd .. — на уровень выше; cd - — в предыдущий каталог.

3. Просмотр каталога

ls /etc
ls -l /etc
ls -la /home/student
ls -ld /home/student

ls -l выводит подробные сведения: тип и права объекта, владельца, группу, размер, время и имя. -a добавляет имена, начинающиеся с точки, включая . и ..; -A исключает эти два служебных имени. -d показывает сам каталог, а не его содержимое. -h делает размеры в подробном выводе удобнее для чтения.

Скрытое имя — соглашение интерфейса, а не защита доступа. Права определяются владельцем, группой, режимом и другими механизмами из главы 2. Видимость имени не означает возможность прочитать файл.

В Ubuntu 26.04 часть базовых утилит предоставлена rust-coreutils. Стандартные команды занятия сохраняются, но не следует ожидать полностью идентичного вывода старых снимков экрана. Справка ls для установленного выпуска.

4. Назначение основных каталогов

Путь Назначение
/ Корень дерева каталогов
/home/student Личные файлы и настройки student
/root Домашний каталог root
/etc Системная конфигурация
/usr/bin, /usr/sbin Команды и административные программы
/usr/lib Библиотеки и другие служебные компоненты
/var Изменяемые данные служб, очереди и журналы
/var/log Файлы журналов и, при соответствующей настройке, постоянный журнал systemd
/run Данные текущего запуска, обычно на временной файловой системе
/tmp Временные файлы; их сохранность между запусками не предполагается
/dev Узлы устройств
/proc, /sys Виртуальные интерфейсы сведений о процессах, ядре и устройствах
/mnt Место для временного монтирования администратором
/media Часто используется для подключаемых носителей
/opt Дополнительные комплекты программ
/srv Данные, предоставляемые службами системы

Современная Ubuntu использует объединённую структуру /usr: например, /bin и /sbin могут быть ссылками на соответствующие каталоги внутри /usr. Проверка: ls -ld /bin /sbin /lib. Историческое описание этих каталогов как обязательно отдельных мест хранения требует этого уточнения.

Файлы в /proc нельзя считать обычными документами на диске: их содержимое формируется ядром. Команда cat /proc/version читает сведения о ядре, а не сохранённый преподавателем текстовый файл.

Выучить: четыре каталога

/etc — конфигурация; /home — домашние каталоги обычных пользователей; /var — изменяемые данные; /run — состояние текущего запуска. Свою учебную работу размещают в домашнем каталоге, системные настройки не перемещают туда произвольно.

5. Создание учебных объектов

Перед просмотром собственных файлов нужно создать каталог и файлы:

mkdir -p ~/chapter04
cd ~/chapter04
touch empty.txt
printf 'Ubuntu Server\nstudent\nРабота с файлами\n' > notes.txt
ls -l

mkdir создаёт каталог; -p допускает существующий каталог и создаёт недостающие родительские каталоги. touch создаёт отсутствующий файл без содержимого; у существующего обычно обновляет время доступа и изменения, сохраняя содержимое. Это не редактор файла. printf здесь формирует три строки, а > записывает их в файл с заменой прежнего содержимого. Подробнее потоки рассматриваются в следующей главе.

Для удаления отдельного учебного файла используют rm -i empty.txt: -i запрашивает подтверждение удаления. Пустой каталог удаляют через rmdir. Рекурсивное rm -r удаляет каталог с вложенными объектами; оно не нужно для чтения системных файлов. rm не перемещает объект в привычную графическую корзину. Перед удалением проверяют pwd и точный путь.

6. Чтение текстовых файлов

Перед использованием просмотрщика и определения типа файла проверьте наличие команд:

command -v less
command -v file

При наличии программы выводится её путь. Если одна из команд не найдена в минимальном образе, сначала установите соответствующий пакет через APT: sudo apt update, затем sudo apt install less или sudo apt install file. После успешной установки повторите проверку. Для уже доступных команд повторная установка не требуется.

cat notes.txt
cat /etc/os-release
head -n 2 notes.txt
tail -n 1 notes.txt
less /etc/services

cat выводит файл целиком и удобна для коротких текстов. Пустой файл даёт пустой вывод, что не является ошибкой. /etc/os-release содержит сведения о выпуске ОС. head выводит начало, tail — конец; без -n обычно выводятся десять строк.

less позволяет листать большой текст: стрелки и Page Up/Page Down — перемещение, /слово — поиск вперёд, n — следующее совпадение, q — выход. more тоже предназначена для постраничного просмотра, но для занятия удобно использовать less.

Не выводите бинарный файл через cat ради определения типа. Для этого существует команда file; её наличие проверяют заранее. Чтение конфигурации не показывает автоматически её эффективный результат: приложение может учитывать подключаемые файлы, значения по умолчанию и параметры запуска.

Записать: выбор просмотра

Короткий текст — cat; длинный текст — less; начало — head; конец — tail. q закрывает less. Просмотр файла не изменяет его содержимое.

7. Поиск строк через grep

grep -n 'student' notes.txt
grep -ni 'ubuntu' notes.txt
grep -F 'Работа с файлами' notes.txt
grep '^PRETTY_NAME=' /etc/os-release

grep выводит строки, соответствующие шаблону. По умолчанию поиск чувствителен к регистру; -i снимает это различие, -n добавляет номера строк, -F ищет буквальную строку вместо регулярного выражения. ^ в последнем примере обозначает начало строки.

Отсутствие совпадений обычно означает код возврата 1 и пустой вывод, а не поломку утилиты. Для подготовленного notes.txt проверьте это отдельно:

grep 'Отсутствующая строка' notes.txt
printf 'Код завершения grep: %s\n' "$?"

Первая команда не выводит строк, вторая сообщает код 1. При найденном совпадении код равен 0; ошибка, например недоступный файл, даёт иной код, обычно 2. $? нужно прочитать сразу после нужной команды: последующая команда изменяет это значение.

Поиск Port в конфигурации SSH может найти комментарий #Port 22; это не доказательство действующего порта. Для определения эффективных параметров SSH в главе 10 используется sshd -T.

Когда grep читает файл сама, cat файл | grep шаблон не обязателен. Конвейеры полезны для передачи вывода программ, но не нужно добавлять лишнюю команду для каждой проверки.

8. Журналы файлов и systemd

Журнал — последовательность сообщений о событиях работы системы или приложения. В Ubuntu используются как текстовые файлы, так и структурированный журнал systemd. Наличие /var/log/syslog зависит от установленного и настроенного rsyslog; его отсутствие само по себе не означает отсутствия журналирования.

ls -l /var/log
sudo journalctl -b -n 30 --no-pager
sudo journalctl -u ssh.service -n 20 --no-pager

-b выбирает текущую загрузку, -n ограничивает число последних сообщений, -u выбирает unit. --no-pager выводит результат без просмотрщика. Пустой вывод для конкретной службы возможен, если за выбранный период у неё не было записей.

Следить за новыми сообщениями можно через sudo journalctl -f; выход — Ctrl+C. Для обычного текстового файла используют tail -f; если файл заменяется при ротации, tail -F обычно удобнее, поскольку отслеживает имя и повторяет попытки открытия. Не подставляйте в tail бинарные файлы журнала systemd. Справка journalctl.

Запись журнала интерпретируют вместе с временем, именем службы, уровнем сообщения и окружающими событиями. Одно слово «error» в найденной строке не даёт полного диагноза.

Запомнить: журнал и просмотр

journalctl читает журнал systemd; tail читает обычные файлы. Наличие текстового syslog зависит от конфигурации. Ctrl+C завершает непрерывный просмотр, а не выключает сервер.

9. Практическая работа

  1. Из сеанса student выполните whoami, hostname и pwd. Запишите, какой каталог считается текущим.
  2. Перейдите в /etc, затем домой и обратно через cd -. После каждого перехода проверьте pwd.
  3. Создайте ~/chapter04, empty.txt и notes.txt командами раздела 5. Повторите touch для пустого файла и объясните, почему размер остался нулевым.
  4. Сравните ls, ls -la и ls -ld .. Объясните различие между содержимым каталога и сведениями о самом каталоге.
  5. Выведите notes.txt целиком, первые две строки и последнюю строку. Найдите student через grep с номерами строк.
  6. Откройте /etc/services в less, выполните поиск ssh, выйдите через q. Файл не редактируйте.
  7. Прочитайте последние 30 записей текущей загрузки через journalctl. Для одной записи определите время и источник сообщения.
  8. Удалите только empty.txt через rm -i; сохраните notes.txt для следующего занятия.

В отчёте приведите результаты переходов, различие путей и выводов ls, примеры просмотра и поиска. Пароль и секретные записи журналов в отчёт не включают. Нельзя проверять удаление на домашних каталогах других пользователей или системных путях.

Контрольные вопросы

  1. Чем оболочка отличается от терминала? Почему cd встроена в оболочку?
  2. Чем отличаются /, /root, ~, . и ..?
  3. Почему относительный путь меняет смысл после cd?
  4. Чем ls -l отличается от ls -ld?
  5. Что делает touch для отсутствующего и существующего файла?
  6. Как выбрать cat, less, head и tail?
  7. Что означают grep -i, -n и -F?
  8. Почему отсутствие syslog не доказывает отсутствие журналов?

Документация и актуальность