Файловая система обычно изображается в виде дерева с ветвями

Обновлено: 08.07.2024

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

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

Начнем с того, что большинство современных файловых систем имеют древовидную структуру. В компьютерных науках дерево — это структура, содержащая узлы и ветви, при этом корневой узел отображается вверху, а не внизу. Узлы представляют каждый каталог или файл, а ветви показывают связи между ними. Каждый каталог может содержать другие каталоги или файлы. Файл будет конечным узлом, поскольку он не может содержать другие файлы или каталоги.

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

Теперь давайте рассмотрим файловые системы некоторых распространенных операционных систем, просто чтобы понять, как они выглядят на практике. В Windows каждый диск или раздел действует как отдельная файловая система, поэтому каждый из них представляет собой корневой узел дерева. Внутри мы видим каталоги, в которых находятся наши файлы. Итак, чтобы найти мои файлы, мы можем открыть диск C:\, затем папку «Пользователи» и, наконец, мое имя пользователя.

Одна важная вещь, которую следует помнить о Windows, это то, что она использует расширение файла для определения типа каждого файла. Вы можете скрыть их по умолчанию, но их также легко включить. Возможно, вы знакомы с такими расширениями, как PDF, DOCX и JPG.

Файловые системы Linux и Mac похожи. Однако вместо того, чтобы каждый отдельный диск или раздел был отдельной файловой системой, компьютеры Linux и Mac часто используют виртуальную «корневую» файловую систему, в которой каждый диск или раздел, кроме корневого раздела, содержится в корневой файловой системе. Точно так же Linux включает в себя каталоги и файлы. Основное различие между Linux и Windows заключается в том, как он определяет тип файла. Linux также может смотреть на расширение файла в конце имени файла, но также может проверять содержимое файла. Большинство основных типов файлов содержат в начале специальную часть, называемую «заголовок файла», которая идентифицирует тип файла. Таким образом, даже если расширение файла отсутствует или неверно, во многих случаях Linux может определить тип файла, изучив заголовок.

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

Важно отметить, где хранятся файлы в Codio. Codio создает специальную папку, называемую папкой рабочей области, непосредственно в домашнем каталоге пользователя Codio. Итак, путь /home/codio/workspace — это место, где находятся все эти файлы. Поэтому всякий раз, когда мы открываем терминал, нам нужно быть осторожными и убедиться, что мы находимся в правильном каталоге, прежде чем продолжить. В следующем видео мы покажем, как это сделать.

Кроме того, поскольку Codio основан на Linux, мы знаем, что нам не нужно беспокоиться об использовании правильных расширений файлов в наших файлах. Тем не менее, это все еще хорошая практика, так как это помогает нам определить типы файлов, с которыми мы работаем, и другие программы, кроме Linux, по-прежнему потребуют, чтобы эти файлы имели правильные расширения.

Ну вот! Это краткий обзор файловых систем в различных системах. Далее мы обсудим немного более конкретную информацию о навигации и использовании файловой системы Linux в Codio.

В этом уроке мы познакомимся с нашими первыми тремя командами: pwd (вывести рабочий каталог), cd (сменить каталог) и ls (вывести список файлов и каталогов).

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

Организация файловой системы

Как и в Windows, файлы в системе Linux расположены в так называемой иерархической структуре каталогов. Это означает, что они организованы в виде дерева каталогов (называемых папками в других системах), которые могут содержать файлы и подкаталоги. Первый каталог в файловой системе называется корневым каталогом. Корневой каталог содержит файлы и подкаталоги, которые содержат дополнительные файлы и подкаталоги и так далее и тому подобное.

дерево каталогов

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

Одно из важных различий между Windows и Unix-подобными операционными системами, такими как Linux, заключается в том, что в Linux не используется концепция букв дисков. В то время как буквы дисков Windows разбивают файловую систему на несколько разных деревьев (по одному для каждого устройства), в Linux всегда есть одно дерево. Разные устройства хранения могут быть разными ветвями дерева, но дерево всегда одно.

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

Каталог, в котором мы находимся, называется рабочим каталогом. Чтобы увидеть имя рабочего каталога, мы используем команду pwd.

Когда мы впервые заходим в нашу систему Linux, рабочим каталогом становится наш домашний каталог. Сюда мы помещаем наши файлы. В большинстве систем домашний каталог будет называться /home/имя_пользователя, но это может быть что угодно по прихоти системного администратора.

Чтобы вывести список файлов в рабочем каталоге, мы используем команду ls.

[me@linuxbox me]$ ls Настольные загрузки foo.txt Изображения Шаблоны Документы examples.desktop Музыка Общедоступные видео

Мы вернемся к ls на следующем уроке. С ним можно делать много забавных вещей, но сначала нам нужно немного поговорить о путях и каталогах.

Чтобы изменить рабочий каталог (где мы находимся в лабиринте), мы используем команду cd. Для этого мы набираем cd, а затем путь к нужному рабочему каталогу. Путь — это маршрут, по которому мы идем по ветвям дерева, чтобы добраться до нужного каталога. Пути могут быть указаны двумя разными способами; абсолютные пути или относительные пути. Сначала рассмотрим абсолютные пути.

Абсолютный путь начинается с корневого каталога и следует по ветви дерева за ветвью, пока не будет завершен путь к нужному каталогу или файлу. Например, в вашей системе есть каталог, в котором установлено большинство программ. Путь к каталогу — /usr/bin. Это означает, что в корневом каталоге (представленном косой чертой в имени пути) есть каталог с именем «usr», который содержит каталог с именем «bin».

Давайте попробуем это:

me@linuxbox me]$ cd /usr/bin me@linuxbox bin]$ pwd /usr/bin me@linuxbox bin]$ ls '[' mshortname 2to3-2.7 mshowfat 411toppm mtools a2ps mtoolstest a2ps-lpr-wrapper mtr aa-enabled mtrace aa-exec mtr-packet aclocal mtvtoppm aclocal-1.15 mtype aconnect mutter acpi_listen mxtar add-apt-repository mzip addpart namei и многие другие.

Теперь мы видим, что мы изменили текущий рабочий каталог на /usr/bin и что он заполнен файлами. Заметили, как изменилось приглашение оболочки? Для удобства обычно настраивается отображение имени рабочего каталога.

Там, где абсолютный путь начинается с корневого каталога и ведет к месту назначения, относительный путь начинается с рабочего каталога. Для этого он использует пару специальных обозначений для представления относительных позиций в дереве файловой системы. Эти специальные обозначения "." (точка) и ".." (точка точка).

"." нотация относится к самому рабочему каталогу, а нотация «..» относится к родительскому каталогу рабочего каталога. Вот как это работает. Снова изменим рабочий каталог на /usr/bin:

Хорошо, теперь предположим, что мы хотим изменить рабочий каталог на родительский каталог /usr/bin, которым является /usr . Мы могли бы сделать это двумя разными способами. Во-первых, с абсолютным путем:

Или с относительным путем:

Два разных метода с одинаковыми результатами. Какой из них мы должны использовать? Тот, который требует меньше всего печатать!

Точно так же мы можем изменить рабочий каталог с /usr на /usr/bin двумя разными способами. Сначала используйте абсолютный путь:

Или с относительным путем:

Теперь есть кое-что важное, на что мы должны обратить внимание. В большинстве случаев мы можем опустить «./». Это подразумевается. Ввод:

сделал бы то же самое. В общем, если мы не укажем путь к чему-либо, предполагается рабочий каталог. Есть одно важное исключение, но мы пока не будем об этом.

Несколько ярлыков

Если мы введем cd, а затем ничего, cd изменит рабочий каталог на наш домашний.

Связанный ярлык — ввести cd ~user_name .В этом случае cd изменит рабочий каталог на домашний каталог указанного пользователя.

Ввод cd — изменяет рабочий каталог на предыдущий.

Важные факты об именах файлов

Имена файлов, начинающиеся с символа точки, скрыты. Это означает только то, что ls не будет их перечислять, пока мы не скажем ls -a . Когда ваша учетная запись была создана, в ваш домашний каталог было помещено несколько скрытых файлов для настройки вашей учетной записи. Позже мы более подробно рассмотрим некоторые из этих файлов, чтобы увидеть, как вы можете настроить нашу среду. Кроме того, некоторые приложения размещают свои файлы конфигурации и настроек в вашем домашнем каталоге как скрытые файлы.

Имена файлов в Linux, как и в Unix, вводятся с учетом регистра. Имена файлов "Файл1" и "файл1" относятся к разным файлам.

В Linux нет понятия "расширение файла", как в системах Windows. Вы можете называть файлы как угодно. Однако, в то время как сама Linux не заботится о расширениях файлов, многие прикладные программы заботятся о них.

Хотя Linux поддерживает длинные имена файлов, которые могут содержать встроенные пробелы и знаки пунктуации, ограничьтесь символами пунктуации точкой, тире и подчеркиванием. Самое главное, не вставляйте пробелы в имена файлов. Если вы хотите представить пробелы между словами в имени файла, используйте символы подчеркивания. Вы поблагодарите себя позже.

© 2000-2022, William E. Shotts, Jr. Дословное копирование и распространение всей этой статьи разрешено на любом носителе при условии сохранения этого уведомления об авторских правах.

Файловая система Unix представляет собой логичный метод организации и хранения больших объемов информации таким образом, чтобы ими было легко управлять. Файл — это наименьшая единица, в которой хранится информация. Файловая система Unix имеет несколько важных особенностей. Все данные в Unix организованы в файлы. Все файлы организованы в каталоги. Эти каталоги организованы в виде древовидной структуры, называемой файловой системой.

Файлы в системе Unix организованы в многоуровневую иерархическую структуру, известную как дерево каталогов. В самом верху файловой системы находится каталог с именем «root», который представлен знаком «/». Все остальные файлы являются «потомками» корня.


Типы файлов Unix. Файловая система UNIX содержит несколько различных типов файлов:


  • Используется для хранения вашей информации, такой как текст, который вы написали, или изображение, которое вы нарисовали. Это тип файла, с которым вы обычно работаете.
  • Всегда находится внутри/под файлом каталога.
  • Не содержать других файлов.
  • В длинноформатном выводе ls -l этот тип файла обозначается символом «-».
<р>2. Каталоги. В каталогах хранятся как специальные, так и обычные файлы. Для пользователей, знакомых с Windows или Mac OS, каталоги UNIX эквивалентны папкам. Файл каталога содержит запись для каждого файла и подкаталога, которые он содержит. Если у вас есть 10 файлов в каталоге, в каталоге будет 10 записей. Каждая запись состоит из двух компонентов.
(1) Имя файла
(2) Уникальный идентификационный номер файла или каталога (называемый номером инода)

В длинноформатном выводе ls –l этот тип файла обозначается символом «d».

  • Когда для устройства ввода/вывода (I/O) используется специальный символьный файл, данные передаются по одному символу за раз. Этот тип доступа называется прямым доступом к устройству.
  • Когда для ввода/вывода (ввода/вывода) устройства используется специальный файл блока, данные передаются большими блоками фиксированного размера. Этот тип доступа называется доступом к блочным устройствам.
  • В длинноформатном выводе ls -l специальные символьные файлы помечаются символом "c".
  • В длинноформатном выводе ls -l специальные блочные файлы помечаются символом "b".
<р>4. Каналы — UNIX позволяет вам связывать команды вместе с помощью канала. Канал действует как временный файл, который существует только для хранения данных одной команды до тех пор, пока они не будут прочитаны другой. Канал Unix обеспечивает односторонний поток данных. Выходные данные или результат первой последовательности команд используются в качестве входных данных для вторая последовательность команд. Чтобы сделать канал, поставьте вертикальную черту (|) в командной строке между двумя командами. Например: who | туалет -l

В длинноформатном выводе ls –l именованные каналы помечаются символом «p».

<р>5. Сокеты. Сокет Unix (или сокет межпроцессного взаимодействия) — это специальный файл, обеспечивающий расширенное межпроцессное взаимодействие. Unix Socket используется в среде клиент-серверных приложений. По сути, это поток данных, очень похожий на сетевой поток (и сетевые сокеты), но все транзакции локальны для файловой системы.

В длинноформатном выводе ls -l сокеты Unix помечаются символом «s».

<р>6.Символическая ссылка. Символическая ссылка используется для ссылки на какой-либо другой файл файловой системы. Символическая ссылка также известна как программная ссылка. Он содержит текстовую форму пути к файлу, на который он ссылается. Для конечного пользователя символическая ссылка будет иметь собственное имя, но когда вы попытаетесь прочитать или записать данные в этот файл, вместо этого она будет ссылаться на эти операции на файл, на который указывает. Если мы удалим саму программную ссылку, файл данных все равно будет там. Если мы удалим исходный файл или переместим его в другое место, символический файл не будет работать должным образом.

В длинноформатном выводе ls –l символические ссылки помечаются символом «l» (это строчная буква L).

Ссылка –

UNIX – концепции и приложения | Сумитабха Дас | Тата МакГроу Хилл | 4-е издание

Пожалуйста, напишите комментарии, если обнаружите что-то неверное или хотите поделиться дополнительной информацией по теме, обсуждавшейся выше.

В этом уроке мы познакомимся с нашими первыми тремя командами: pwd (вывести рабочий каталог), cd (сменить каталог) и ls (вывести список файлов и каталогов).

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

Организация файловой системы

Как и в Windows, файлы в системе Linux расположены в так называемой иерархической структуре каталогов. Это означает, что они организованы в виде дерева каталогов (называемых папками в других системах), которые могут содержать файлы и подкаталоги. Первый каталог в файловой системе называется корневым каталогом. Корневой каталог содержит файлы и подкаталоги, которые содержат дополнительные файлы и подкаталоги и так далее и тому подобное.

дерево каталогов

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

Одно из важных различий между Windows и Unix-подобными операционными системами, такими как Linux, заключается в том, что в Linux не используется концепция букв дисков. В то время как буквы дисков Windows разбивают файловую систему на несколько разных деревьев (по одному для каждого устройства), в Linux всегда есть одно дерево. Разные устройства хранения могут быть разными ветвями дерева, но дерево всегда одно.

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

Каталог, в котором мы находимся, называется рабочим каталогом. Чтобы увидеть имя рабочего каталога, мы используем команду pwd.

Когда мы впервые заходим в нашу систему Linux, рабочим каталогом становится наш домашний каталог. Сюда мы помещаем наши файлы. В большинстве систем домашний каталог будет называться /home/имя_пользователя, но это может быть что угодно по прихоти системного администратора.

Чтобы вывести список файлов в рабочем каталоге, мы используем команду ls.

[me@linuxbox me]$ ls Настольные загрузки foo.txt Изображения Шаблоны Документы examples.desktop Музыка Общедоступные видео

Мы вернемся к ls на следующем уроке. С ним можно делать много забавных вещей, но сначала нам нужно немного поговорить о путях и каталогах.

Чтобы изменить рабочий каталог (где мы находимся в лабиринте), мы используем команду cd. Для этого мы набираем cd, а затем путь к нужному рабочему каталогу. Путь — это маршрут, по которому мы идем по ветвям дерева, чтобы добраться до нужного каталога. Пути могут быть указаны двумя разными способами; абсолютные пути или относительные пути. Сначала рассмотрим абсолютные пути.

Абсолютный путь начинается с корневого каталога и следует по ветви дерева за ветвью, пока не будет завершен путь к нужному каталогу или файлу. Например, в вашей системе есть каталог, в котором установлено большинство программ. Путь к каталогу — /usr/bin. Это означает, что в корневом каталоге (представленном косой чертой в имени пути) есть каталог с именем «usr», который содержит каталог с именем «bin».

Давайте попробуем это:

me@linuxbox me]$ cd /usr/bin me@linuxbox bin]$ pwd /usr/bin me@linuxbox bin]$ ls '[' mshortname 2to3-2.7 mshowfat 411toppm mtools a2ps mtoolstest a2ps-lpr-wrapper mtr aa-enabled mtrace aa-exec mtr-packet aclocal mtvtoppm aclocal-1.15 mtype aconnect mutter acpi_listen mxtar add-apt-repository mzip addpart namei и многое другое.

Теперь мы видим, что мы изменили текущий рабочий каталог на /usr/bin и что он заполнен файлами. Заметили, как изменилось приглашение оболочки? Для удобства обычно настраивается отображение имени рабочего каталога.

Там, где абсолютный путь начинается с корневого каталога и ведет к месту назначения, относительный путь начинается с рабочего каталога. Для этого он использует пару специальных обозначений для представления относительных позиций в дереве файловой системы. Эти специальные обозначения "." (точка) и ".." (точка точка).

"." нотация относится к самому рабочему каталогу, а нотация «..» относится к родительскому каталогу рабочего каталога. Вот как это работает. Снова изменим рабочий каталог на /usr/bin:

Хорошо, теперь предположим, что мы хотим изменить рабочий каталог на родительский каталог /usr/bin, которым является /usr . Мы могли бы сделать это двумя разными способами. Во-первых, с абсолютным путем:

Или с относительным путем:

Два разных метода с одинаковыми результатами. Какой из них мы должны использовать? Тот, который требует меньше всего печатать!

Точно так же мы можем изменить рабочий каталог с /usr на /usr/bin двумя разными способами. Сначала используйте абсолютный путь:

Или с относительным путем:

Теперь есть кое-что важное, на что мы должны обратить внимание. В большинстве случаев мы можем опустить «./». Это подразумевается. Ввод:

сделал бы то же самое. В общем, если мы не укажем путь к чему-либо, предполагается рабочий каталог. Есть одно важное исключение, но мы пока не будем об этом.

Несколько ярлыков

Если мы введем cd, а затем ничего, cd изменит рабочий каталог на наш домашний.

Связанный ярлык — ввести cd ~user_name . В этом случае cd изменит рабочий каталог на домашний каталог указанного пользователя.

Ввод cd — изменяет рабочий каталог на предыдущий.

Важные факты об именах файлов

Имена файлов, начинающиеся с символа точки, скрыты. Это означает только то, что ls не будет их перечислять, пока мы не скажем ls -a . Когда ваша учетная запись была создана, в ваш домашний каталог было помещено несколько скрытых файлов для настройки вашей учетной записи. Позже мы более подробно рассмотрим некоторые из этих файлов, чтобы увидеть, как вы можете настроить нашу среду. Кроме того, некоторые приложения размещают свои файлы конфигурации и настроек в вашем домашнем каталоге как скрытые файлы.

Имена файлов в Linux, как и в Unix, вводятся с учетом регистра. Имена файлов "Файл1" и "файл1" относятся к разным файлам.

В Linux нет понятия "расширение файла", как в системах Windows. Вы можете называть файлы как угодно. Однако, в то время как сама Linux не заботится о расширениях файлов, многие прикладные программы заботятся о них.

Хотя Linux поддерживает длинные имена файлов, которые могут содержать встроенные пробелы и знаки пунктуации, ограничьтесь символами пунктуации точкой, тире и подчеркиванием. Самое главное, не вставляйте пробелы в имена файлов. Если вы хотите представить пробелы между словами в имени файла, используйте символы подчеркивания. Вы поблагодарите себя позже.

© 2000-2022, William E. Shotts, Jr. Дословное копирование и распространение всей этой статьи разрешено на любом носителе при условии сохранения этого уведомления об авторских правах.

Читайте также: