Навигация в файловой системе #
Рассматриваемые команды #
Команды bash
#
pwd
- узнать текущий рабочий каталог.cd
- изменить текущий рабочий каталог.
Приложения #
ls
- показать содержимое каталога.
Относительные и абсолютные пути #
В рамках занятия необходимо научиться работать с относительными и абсолютными путями при работе с файловой системой.
Абсолютный путь является де-факто уникальным идентификатором файла (и каталога) в рамках дерева файловой системы. Его можно использовать для обращения к каталогу или файлу вне зависимости от других факторов. Минусом абсолютного пути является то, что приходится набирать все части пути, он длинный. Ключевая особенность абсолютного пути — он начинается с символа /
, корня файловой системы.
Альтернативой абсолютному пути является относительный путь, который строится относительно текущего рабочего каталога. Текущий рабочий каталог у любого приложения, которое запущено в системе, включая командный интерпретатор. Из текущего рабочего каталога и относительного пути формируется абсолютный путь к файлу: Абсолютный путь = текущий рабочий каталог + относительный путь
. Относительный путь начинается либо с ./
, либо с имени каталога.
Если Вы собираетесь активно взаимодействовать с файловой системой, то наилучший вариант решения данной задачи:
- Изменить текущий рабочий каталог на каталог, который ближе всего находится ко всем файлам, с которыми будете взаимодействовать.
- Формировать относительные пути для файлов, с которыми надо взаимодействовать.
Может быть потребуется открыть несколько командных интерпретаторов для решения задач в каждом из целевых каталогов.
Рекомендации по выполнению задания #
При выполнении задания рекомендуется формировать краткий отчёт. Это позволит вам не только понять принципы работы команд и приложений, но также закрепить их. Предлагается следующий формат:
**Задача**
Перейти в каталог `/usr/share` из любого каталога.
**Решение**
`cd /usr/share`
Для ведения записей рекомендуется использовать формат Markdown, спецификацию которого можно прочитать на сайте commonmark.org. Расширение данных файлов — md
или markdown
. Большинство редакторов для программистов поддерживают удобную работу с данным форматом файлов.
Задачи на изучение относительных и абсолютных файлов #
Внимание. Перед выполнением каждого основного пункта задачи переходите в каталог /usr/share
, используя абсолютный путь.
- Используя абсолютный путь перейдите в каталог
/usr
.- Посмотрите содержимое каталога с помощью команды
ls
. - Удостоверьтесь, что вы перешли в целевой каталог
/usr
: проверьте приглашение и используйте командуpwd
для проверки. - Вернитесь в каталог
/usr/share
используя-
в качестве аргумента приложениюcd
.
- Посмотрите содержимое каталога с помощью команды
- Используя относительный путь перейдите в каталог
/usr
.- Удостоверьтесь, что вы перешли в целевой каталог
/usr
: проверьте приглашение и используйте командуpwd
для проверки. - Посмотрите содержимое каталога с помощью команды
ls
. Сравните вывод с первой командой. - Сравните данную команду с предыдущей. Какую из них следовало использовать для перехода в каталог
/usr
? - Вернитесь в каталог
/usr/share
с помощью относительного пути.
- Удостоверьтесь, что вы перешли в целевой каталог
- Используя абсолютный путь перейдите в каталог
/usr/share/doc/bash
.- Удостоверьтесь, что вы перешли в целевой каталог
/usr/share/doc/bash
: проверьте приглашение и используйте командуpwd
для проверки. - Посмотрите содержимое каталога с помощью команды
ls
. - Вернитесь в каталог
/usr/share
с помощью относительного пути.
- Удостоверьтесь, что вы перешли в целевой каталог
- Используя относительный путь перейдите в каталог
/usr/share/doc/bash
.- Удостоверьтесь, что вы перешли в целевой каталог
/usr/share/doc/bash
: проверьте приглашение и используйте командуpwd
для проверки. - Посмотрите содержимое каталога с помощью команды
ls
. Сравните данный вывод с выводомls
в прошлый раз. - Сравните команды с относительными и абсолютными путями. Какую из них следовало использовать для перехода в данный каталог?
- Вернитесь в каталог
/usr/share
с помощью абсолютного пути.
- Удостоверьтесь, что вы перешли в целевой каталог
- Используя абсолютный путь перейдите в корневой каталог,
/
.- Удостоверьтесь, что вы перешли в целевой каталог
/
: проверьте приглашение и используйте командуpwd
для проверки. - Посмотрите содержимое каталога с помощью команды
ls
. - Вернитесь в каталог
/usr/share
с помощью абсолютного пути.
- Удостоверьтесь, что вы перешли в целевой каталог
- Используя относительный путь перейдите в корневой каталог.
- Удостоверьтесь, что вы перешли в целевой каталог
/
: проверьте приглашение и используйте командуpwd
для проверки. - Посмотрите содержимое каталога с помощью команды
ls
. Сравните данный вывод с выводомls
в прошлый раз. - Сравните команды с относительными и абсолютными путями. Какую из них следовало использовать для перехода в данный каталог?
- Вернитесь в каталог
/usr/share
с помощью относительного пути. Чем данный путь отличается от абсолютного?
- Удостоверьтесь, что вы перешли в целевой каталог
- Используя абсолютный путь перейдите в каталог
/etc/sysconfig
.- Удостоверьтесь, что вы перешли в целевой каталог
/etc/sysconfig
: проверьте приглашение и используйте командуpwd
для проверки. - Посмотрите содержимое каталога с помощью команды
ls
. - Вернитесь в каталог
/usr/share
с помощью относительного пути.
- Удостоверьтесь, что вы перешли в целевой каталог
- Используя относительный путь перейдите в каталог
/etc/sysconfig
.- Удостоверьтесь, что вы перешли в целевой каталог
/
: проверьте приглашение и используйте командуpwd
для проверки. - Посмотрите содержимое каталога с помощью команды
ls
. Сравните данный вывод с выводомls
в прошлый раз. - Сравните команды с относительными и абсолютными путями. Какую из них следовало использовать для перехода в данный каталог?
- Вернитесь в каталог
/usr/share
с помощью абсолютного пути.
- Удостоверьтесь, что вы перешли в целевой каталог
- Используя специальное сокращение,
~
, перейдите в домашний каталог пользователя.- Удостоверьтесь, что вы перешли в целевой каталог: проверьте приглашение и используйте команду
pwd
для проверки. - Посмотрите содержимое каталога с помощью команды
ls
. - Вернитесь в каталог
/usr/share
с помощью абсолютного пути.
- Удостоверьтесь, что вы перешли в целевой каталог: проверьте приглашение и используйте команду
- Используя поведение по умолчанию команды
cd
перейдите в домашний каталог.- Удостоверьтесь, что вы перешли в целевой каталог: проверьте приглашение и используйте команду
pwd
для проверки. - Посмотрите содержимое каталога с помощью команды
ls
. - Вернитесь в каталог
/usr/share
с помощью относительного пути.
- Удостоверьтесь, что вы перешли в целевой каталог: проверьте приглашение и используйте команду
- Используя абсолютный путь перейдите в домашний каталог пользователя.
- Удостоверьтесь, что вы перешли в целевой каталог: проверьте приглашение и используйте команду
pwd
для проверки. - Посмотрите содержимое каталога с помощью команды
ls
. - Вернитесь в каталог
/usr/share
с помощью абсолютного пути.
- Удостоверьтесь, что вы перешли в целевой каталог: проверьте приглашение и используйте команду
- Используя относительный путь перейдите в домашний каталог пользователя.
- Удостоверьтесь, что вы перешли в целевой каталог: проверьте приглашение и используйте команду
pwd
для проверки. - Посмотрите содержимое каталога с помощью команды
ls
. - Какую из этих четырёх форм возвращения в домашний каталог следует использовать и почему?
- Вернитесь в каталог
/usr/share
с помощью относительного пути.
- Удостоверьтесь, что вы перешли в целевой каталог: проверьте приглашение и используйте команду
Работа с несколькими командными интерпретаторами #
При выполнении сложных действий над файлами или при выполнении нескольких задач одновременно зачастую используется подход с запуском нескольких эмуляторов терминала. Рассмотрим поведение текущего рабочего каталога при работе с несколькими командными интерпретаторами.
- Откройте второй эмулятор терминала, запустив его из . Одновременно у вас должно быть запущено несколько эмуляторов.
- В первом эмуляторе терминала перейдите в каталог
/tmp/
.- С помощью команды
pwd
удостоверьтесь, что находитесь в данном каталоге. - Узнайте текущий рабочий каталог во втором эмуляторе терминала.
- Сравните их между собой. Что происходит в первом эмуляторе терминала при изменении рабочего каталога во втором терминале.
- С помощью команды
- В первом эмуляторе терминала откройте новую вкладку. Для этого выберите меню «Файл» -> «Новая вкладка».
- Сравните текущий рабочий каталог в каждой вкладке терминала.
- Измените текущий рабочий каталог в первой вкладке терминала. Что произошло с текущим рабочим каталогом во второй вкладке?
Структура файловой системы GNU/Linux #
Для того, чтобы в ОС от разных производителей могли быть запущены различные приложения в GNU/Linux был сформирован стандарт. Стандарт называется Filesystem Hierarchy Standard, в котором описывается структура файловой системы и местонахождение ряда ключевых файлов для ОС.
Нельзя сказать, что этому стандарту на 100% соответствует файловая система каждого дистрибутива Linux, однако большая его часть соблюдается во всех. Это позволяет пользователям за разумное время переходить с одного дистрибутива на другой. А самое главное: разработчикам можно уверенно создавать свои решения для данной платформы.
Знакомая структура позволяет:
- Разработчикам корректно разместить файлы своего приложения.
- Пользователям находить приложения, документацию.
- Администраторам вносить конфигурацию системы.
Ниже представлен краткое описание ключевых каталогов, которые можно найти в файловой системе Linux дистрибутивов.
- При рассмотрении каждого каталога рекомендуется посмотреть содержимое данного каталога с помощью приложения
ls
. - Для сравнения вывода приложения
ls
рекомендуется запускать файловый менеджер с графическим пользовательским интерфейсомthunar
. Во время запуска он отобразит содержимое текущего рабочего каталога.
Корневой каталог ФС #
/
— корневой каталог, содержащий всю файловую иерархию
/bin
содержит исполняемые файлы и приложения, необходимые системы для запуска и функционирования./boot
содержит ядро ОС и настройки загрузчика./dev
содержит файлы, соответствующие физическим и логическим устройствам компьютера, которые воспринимает ядро ОС./etc
содержит конфигурационные файлы для всех приложений и системных служб, почти все файлы тут являются текстовыми. Тут также могут находится исполняемые файлы, которые производят настройку системы./home
содержит домашние каталоги для обычных пользователей ОС. В них пользователи хранят свои данные. Обычно самый большой каталог в системе, которая установлена на настольном компьютере./lib
содержит файлы разделяемых библиотек, которые используются ключевыми приложениями ОС. В дистрибутивах Linux по возможности устанавливается одна версия библиотеки, которая используется множеством приложений./media
в современных дистрибутивах используется для автоматического подключения съёмных дисков: флеш-носителей, DVD-дисков. В ALT Linux данные каталоги находятся в/run/
./mnt
в старых дистрибутивах использовалась для ручного подключения носителей, в том числе съёмных./opt
используется для установки «опционального», дополнительного, ПО. Обычно используется для установки коммерческого ПО./proc
предоставляет доступ к виртуальной ФС, предоставляемой самим ядром ОС. Файлы в этой директории позволяют считать или изменить состояние ядра Linux./root
домашний каталог суперпользователяroot
./run
каталог с временными файлами, необходимыми для системных приложений для поддержания своей работы или корректного завершения. Очищается при выключении компьютера./sbin
содержит исполняемые файлы, необходимые для настройки системы, системные приложения. Данные приложения обычно используются системным администратором./srv
содержит данные, специфичные для данного сервера, например файлы пользователей FTP-сервера./sys
содержит информацию об устройствах, драйверах и некоторых функциях ядра./tmp
содержит временные файлы, создаваемые различными приложениями во время своей работы. Зачастую очищается при перезагрузке.
Каталог /usr
#
/usr
является наверное самым большим каталогом в обычной установке Linux, так как содержит приложения и файлы, необходимые для их работы
/usr/bin
содержит исполняемые файлы, которые устанавливаются средствами самого дистрибутива ОС. Зачастую содержит тысячи файлов./usr/include
содержит стандартные заголовочные файлы для языка Си./usr/lib
содержит разделяемые библиотеки для исполняемых файлов в/usr/bin
и/usr/sbin
./usr/local
предназначен для установки приложений не через стандартные средства установки приложений дистрибутива. По структуре аналогично дереву каталогов/usr
./usr/sbin
содержит исполняемые файлы для выполнения различных задач системного администрирования./usr/share
содержит данные, которые используются приложениями из/usr/bin
. Включает в себя иконки, звуковые файлы, настройки по умолчанию./usr/share/doc
содержит документацию по установленным приложениям. В ряде дистрибутивов по умолчанию достаточно пуста и требует установки специальных пакетов с документацией.
Каталог /var
#
/var
в отличие от большинства предыдущих каталогов предназначен для хранения изменяемых данных. Примерами таких данных являются: содержимое баз данных, журналы работы приложений и так далее. Данный каталог наряду с каталогом /srv
может быть самым большим для сервера, на котором запущены службы СУБД и так далее.
/var/cache
содержит кэш для работы различных приложений./var/lib
содержит собственно данные, обрабатываемые различными приложениями: базами данных, пакетными менеджерами и т.д./var/lock
содержит lock-файлы, которые нужны для отображения занятых ресурсов./var/mail
содержит данные почтового сервера./var/opt
дополнительные данные, управляемые приложениями из каталога/opt
./var/spool
содержит задачи для дальнейшей обработки, например задачи для печати документов./var/tmp
содержит временные файлы, которые должны сохраниться после перезагрузки.
Сравнение с известными структурами файловых систем #
Для каждого каталога, который находится в корне файловой системы GNU/Linux приведите соответствующие примеры из файловой системы знакомой Вам операционной системы.