Глава 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. Практическая работа
- Из сеанса student выполните whoami, hostname и pwd. Запишите, какой каталог считается текущим.
- Перейдите в
/etc, затем домой и обратно черезcd -. После каждого перехода проверьте pwd. - Создайте
~/chapter04,empty.txtиnotes.txtкомандами раздела 5. Повторите touch для пустого файла и объясните, почему размер остался нулевым. - Сравните
ls,ls -laиls -ld .. Объясните различие между содержимым каталога и сведениями о самом каталоге. - Выведите notes.txt целиком, первые две строки и последнюю строку. Найдите student через grep с номерами строк.
- Откройте
/etc/servicesв less, выполните поискssh, выйдите через q. Файл не редактируйте. - Прочитайте последние 30 записей текущей загрузки через journalctl. Для одной записи определите время и источник сообщения.
- Удалите только empty.txt через
rm -i; сохраните notes.txt для следующего занятия.
В отчёте приведите результаты переходов, различие путей и выводов ls, примеры просмотра и поиска. Пароль и секретные записи журналов в отчёт не включают. Нельзя проверять удаление на домашних каталогах других пользователей или системных путях.
Контрольные вопросы
- Чем оболочка отличается от терминала? Почему cd встроена в оболочку?
- Чем отличаются
/,/root,~,.и..? - Почему относительный путь меняет смысл после cd?
- Чем ls -l отличается от ls -ld?
- Что делает touch для отсутствующего и существующего файла?
- Как выбрать cat, less, head и tail?
- Что означают grep -i, -n и -F?
- Почему отсутствие syslog не доказывает отсутствие журналов?