Навигация в файловой системе

Навигация в файловой системе #

Рассматриваемые команды #

Команды bash #

Приложения #

Относительные и абсолютные пути #

В рамках занятия необходимо научиться работать с относительными и абсолютными путями при работе с файловой системой.

Абсолютный путь является де-факто уникальным идентификатором файла (и каталога) в рамках дерева файловой системы. Его можно использовать для обращения к каталогу или файлу вне зависимости от других факторов. Минусом абсолютного пути является то, что приходится набирать все части пути, он длинный. Ключевая особенность абсолютного пути — он начинается с символа /, корня файловой системы.

Альтернативой абсолютному пути является относительный путь, который строится относительно текущего рабочего каталога. Текущий рабочий каталог у любого приложения, которое запущено в системе, включая командный интерпретатор. Из текущего рабочего каталога и относительного пути формируется абсолютный путь к файлу: Абсолютный путь = текущий рабочий каталог + относительный путь. Относительный путь начинается либо с ./, либо с имени каталога.

Если Вы собираетесь активно взаимодействовать с файловой системой, то наилучший вариант решения данной задачи:

  1. Изменить текущий рабочий каталог на каталог, который ближе всего находится ко всем файлам, с которыми будете взаимодействовать.
  2. Формировать относительные пути для файлов, с которыми надо взаимодействовать.

Может быть потребуется открыть несколько командных интерпретаторов для решения задач в каждом из целевых каталогов.

Рекомендации по выполнению задания #

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

**Задача**

Перейти в каталог `/usr/share` из любого каталога.

**Решение**

`cd /usr/share`

Для ведения записей рекомендуется использовать формат Markdown, спецификацию которого можно прочитать на сайте commonmark.org. Расширение данных файлов — md или markdown. Большинство редакторов для программистов поддерживают удобную работу с данным форматом файлов.

Задачи на изучение относительных и абсолютных файлов #

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

  1. Используя абсолютный путь перейдите в каталог /usr.
    1. Посмотрите содержимое каталога с помощью команды ls.
    2. Удостоверьтесь, что вы перешли в целевой каталог /usr: проверьте приглашение и используйте команду pwd для проверки.
    3. Вернитесь в каталог /usr/share используя - в качестве аргумента приложению cd.
  2. Используя относительный путь перейдите в каталог /usr.
    1. Удостоверьтесь, что вы перешли в целевой каталог /usr: проверьте приглашение и используйте команду pwd для проверки.
    2. Посмотрите содержимое каталога с помощью команды ls. Сравните вывод с первой командой.
    3. Сравните данную команду с предыдущей. Какую из них следовало использовать для перехода в каталог /usr?
    4. Вернитесь в каталог /usr/share с помощью относительного пути.
  3. Используя абсолютный путь перейдите в каталог /usr/share/doc/bash.
    1. Удостоверьтесь, что вы перешли в целевой каталог /usr/share/doc/bash: проверьте приглашение и используйте команду pwd для проверки.
    2. Посмотрите содержимое каталога с помощью команды ls.
    3. Вернитесь в каталог /usr/share с помощью относительного пути.
  4. Используя относительный путь перейдите в каталог /usr/share/doc/bash.
    1. Удостоверьтесь, что вы перешли в целевой каталог /usr/share/doc/bash: проверьте приглашение и используйте команду pwd для проверки.
    2. Посмотрите содержимое каталога с помощью команды ls. Сравните данный вывод с выводом ls в прошлый раз.
    3. Сравните команды с относительными и абсолютными путями. Какую из них следовало использовать для перехода в данный каталог?
    4. Вернитесь в каталог /usr/share с помощью абсолютного пути.
  5. Используя абсолютный путь перейдите в корневой каталог, /.
    1. Удостоверьтесь, что вы перешли в целевой каталог /: проверьте приглашение и используйте команду pwd для проверки.
    2. Посмотрите содержимое каталога с помощью команды ls.
    3. Вернитесь в каталог /usr/share с помощью абсолютного пути.
  6. Используя относительный путь перейдите в корневой каталог.
    1. Удостоверьтесь, что вы перешли в целевой каталог /: проверьте приглашение и используйте команду pwd для проверки.
    2. Посмотрите содержимое каталога с помощью команды ls. Сравните данный вывод с выводом ls в прошлый раз.
    3. Сравните команды с относительными и абсолютными путями. Какую из них следовало использовать для перехода в данный каталог?
    4. Вернитесь в каталог /usr/share с помощью относительного пути. Чем данный путь отличается от абсолютного?
  7. Используя абсолютный путь перейдите в каталог /etc/sysconfig.
    1. Удостоверьтесь, что вы перешли в целевой каталог /etc/sysconfig: проверьте приглашение и используйте команду pwd для проверки.
    2. Посмотрите содержимое каталога с помощью команды ls.
    3. Вернитесь в каталог /usr/share с помощью относительного пути.
  8. Используя относительный путь перейдите в каталог /etc/sysconfig.
    1. Удостоверьтесь, что вы перешли в целевой каталог /: проверьте приглашение и используйте команду pwd для проверки.
    2. Посмотрите содержимое каталога с помощью команды ls. Сравните данный вывод с выводом ls в прошлый раз.
    3. Сравните команды с относительными и абсолютными путями. Какую из них следовало использовать для перехода в данный каталог?
    4. Вернитесь в каталог /usr/share с помощью абсолютного пути.
  9. Используя специальное сокращение, ~, перейдите в домашний каталог пользователя.
    1. Удостоверьтесь, что вы перешли в целевой каталог: проверьте приглашение и используйте команду pwd для проверки.
    2. Посмотрите содержимое каталога с помощью команды ls.
    3. Вернитесь в каталог /usr/share с помощью абсолютного пути.
  10. Используя поведение по умолчанию команды cd перейдите в домашний каталог.
    1. Удостоверьтесь, что вы перешли в целевой каталог: проверьте приглашение и используйте команду pwd для проверки.
    2. Посмотрите содержимое каталога с помощью команды ls.
    3. Вернитесь в каталог /usr/share с помощью относительного пути.
  11. Используя абсолютный путь перейдите в домашний каталог пользователя.
    1. Удостоверьтесь, что вы перешли в целевой каталог: проверьте приглашение и используйте команду pwd для проверки.
    2. Посмотрите содержимое каталога с помощью команды ls.
    3. Вернитесь в каталог /usr/share с помощью абсолютного пути.
  12. Используя относительный путь перейдите в домашний каталог пользователя.
    1. Удостоверьтесь, что вы перешли в целевой каталог: проверьте приглашение и используйте команду pwd для проверки.
    2. Посмотрите содержимое каталога с помощью команды ls.
    3. Какую из этих четырёх форм возвращения в домашний каталог следует использовать и почему?
    4. Вернитесь в каталог /usr/share с помощью относительного пути.

Работа с несколькими командными интерпретаторами #

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

  1. Откройте второй эмулятор терминала, запустив его из . Одновременно у вас должно быть запущено несколько эмуляторов.
  2. В первом эмуляторе терминала перейдите в каталог /tmp/.
    1. С помощью команды pwd удостоверьтесь, что находитесь в данном каталоге.
    2. Узнайте текущий рабочий каталог во втором эмуляторе терминала.
    3. Сравните их между собой. Что происходит в первом эмуляторе терминала при изменении рабочего каталога во втором терминале.
  3. В первом эмуляторе терминала откройте новую вкладку. Для этого выберите меню «Файл» -> «Новая вкладка».
    1. Сравните текущий рабочий каталог в каждой вкладке терминала.
    2. Измените текущий рабочий каталог в первой вкладке терминала. Что произошло с текущим рабочим каталогом во второй вкладке?

Структура файловой системы 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 приведите соответствующие примеры из файловой системы знакомой Вам операционной системы.

© A. M. Васильев, 2022, CC BY-SA 4.0, andrey@crafted.su