Перейти к основному содержанию
Рецепты Linux

Main navigation

  • Основы
  • Система
  • Команды
  • Программы
  • Дистро
  • Интерфейсы
  • Устройства
  • Доки
User account menu
  • Войти

Строка навигации

  1. Главная
  2. Linux: Введение
  3. Работа с файловой системой

Текущий каталог

Файловая система не только систематизирует данные, но и является основой метафоры «рабочего места» в Linux. Каждая выполняемая программа «работает» в строго определённом каталоге файловой системы. Такой каталог называется текущим каталогом, можно представлять, что программа во время работы «находится» именно в этом каталоге, это её «рабочее место». В зависимости от текущего каталога может меняться поведение программы: зачастую программа будет по умолчанию работать с файлами, расположенными именно в текущем каталоге — до них она «дотянется» в первую очередь. Текущий каталог есть у любой программы, в том числе и у командной оболочки (shell) пользователя. Поскольку взаимодействие пользователя с системой обязательно опосредовано командной оболочкой, можно говорить о том, что пользователь «находится» в том каталоге, который в данный момент является текущим каталогом его командной оболочки.

Все команды, отдаваемые пользователем при помощи shell, наследуют текущий каталог shell, т. е. «работают» в том же каталоге. По этой причине пользователю важно знать текущий каталог shell. Для этого служит утилита pwd:

[methody@localhost methody]$ pwd
/home/methody
[methody@localhost methody]$

Пример 1. Текущий каталог: pwd

pwd (аббревиатура от print working directory) возвращает полный путь текущего каталога командной оболочки, естественно, именно той командной оболочки, при помощи которой была выполнена команда pwd. В данном случае Мефодий узнал, что в этот момент (на этой виртуальной консоли) текущим является каталог «/home/methody».

Почти все утилиты, с которыми работал Мефодий в предыдущих лекциях, по умолчанию читают и создают файлы в текущем каталоге. Так, Мефодий обращался к файлам, не используя никаких путей, просто по имени. Например, использовал утилиту cat, чтобы вывести на экран содержимое файла «text».

[methody@localhost methody]$ cat text 
File: info.info,  Node: Help-Cross,  Up: Cross-refs

The node reached by the cross reference in Info
 . . . 
[methody@localhost methody]$ cat /home/methody/text
File: info.info,  Node: Help-Cross,  Up: Cross-refs

The node reached by the cross reference in Info

Пример 2. Полный и относительный путь к файлу

В действительности, командная оболочка, прежде чем передавать параметр «text» (имя файла) утилите cat, подставляет значение текущего каталога — получается полный путь к этому файлу в файловой системе: «/home/methody/text». Содержимое именно этого файла утилита cat выведет на экран.

Вообще говоря, в нескольких разных каталогах файловой системы могут оказаться файлы с именем «text», именно поэтому командная оболочка всегда передаёт программам и утилитам «точный адрес» файла в файловой системе — полный путь.

Набирая только имя файла без пути к текущему каталогу, Мефодий воспользовался относительным путём к этому файлу.

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

Относительный путь строится точно так же, как и полный — перечислением через «/» всех названий каталогов, встретившихся при движении к искомому каталогу или файлу. Между полным путём и относительным есть только одно существенное различие: относительный путь начинается от текущего каталога, в то время как полный путь всегда начинается от корневого каталога. Относительный путь любого файла или каталога в файловой системе может иметь любую конфигурацию: чтобы добраться до искомого файла можно двигаться как по направлению к корневому каталогу, так и от него (см. раздел Filesystem_use.Перемещение по дереву каталогов). Linux различает полный и относительный пути очень просто: если имя объекта начинается на «/» — это полный путь, в любом другом случае — относительный.

Пользователь может обращаться к файлу при помощи полного или относительного пути — результат будет совершенно тот же. Так, команды cat text и cat /home/methody/text, отданные Мефодием, дали одинаковый результат, поскольку выводился один и тот же файл. Если в относительном пути встречаются символы «/», рассматриваются подкаталоги текущего каталога, их подкаталоги и т. д. Короче говоря, относительный путь строится по тем же правилам, что и полный, с той разницей, что относительный путь начинается не с символа «/». Сам текущий каталог, каков бы ни был полный путь к нему, всегда имеет ещё одно обозначение, «.», которое можно использовать, если по каким-то причинам требуется, чтобы даже в относительном пути к файлу, находящемуся в текущем каталоге, присутствовал элемент «имя каталога». Так, пути «text» и «./text» тоже приводят к одному и тому же файлу, однако в первом случае в строке пути не содержится ничего, кроме имени файла.

Отделить путь к файлу от его имени можно с помощью команд dirname и basebane соответственно:

[methody@localhost methody]$ basename /home/methody/text
text
[methody@localhost methody]$ basename text
text
[methody@localhost methody]$ dirname /home/methody/text
/home/methody
[methody@localhost methody]$ dirname ./text
.
[methody@localhost methody]$ dirname text

Пример 3. Использование dirname и basename

Мефодий заметил, что для «text» и «./text» dirname выдало одинаковый результат: «.», что понятно: как было сказано выше, эти формы пути совершенно эквивалентны, а при автоматической обработке результатов dirname гораздо лучше получить «.», чем пустую строку.

Перекрёстные ссылки книги для Текущий каталог

  • Работа с файловой системой
  • Вверх
  • Домашний каталог

Book navigation

  • Предисловие
  • Сеанс работы в Linux
  • Терминал и командная строка
  • Структура файловой системы
  • Работа с файловой системой
    • Текущий каталог
    • Домашний каталог
    • Информация о каталоге
    • Перемещение по дереву каталогов
    • Создание каталогов
    • Копирование и перемещение файлов
    • Файл и его имена: ссылки
    • Удаление файлов и каталогов
  • Доступ процессов к файлам и каталогам
  • Права доступа
  • Работа с текстовыми данными
  • Возможности командной оболочки
  • Текстовые редакторы
  • Этапы загрузки системы
  • Работа с внешними устройствами
  • Конфигурационные файлы
  • Управление пакетами
  • Сеть TCP/IP в Linux
  • Сетевые и серверные возможности
  • Графический интерфейс (X11)
  • Прикладные программы
  • Политика свободного лицензирования

Последние материалы

  • Приложение scanimage
    1 day ago
  • Утилита sensors
    5 days ago
  • Сканер Rkhunter
    1 week 5 days ago
  • Программа resize2fs
    2 weeks 3 days ago
  • Аудиопроигрыватель QMMP
    3 weeks 2 days ago
RSS feed

Secondary menu

  • О проекте

© 2008–2025 Олег Меньшенин mensh@yandex.ru