Типы файлов для linux

Типы файлов в Linux

1. Введение

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

2. Идентификация типов файлов в Linux

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

Ниже пример вывода этой команды.

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

— : обычный файл
d : директория
c : файл символьного устройства
b : файл блочного устройства
s : файл локального сокета
p : именованный канал
l : символическая ссылка

2.1. Обычный файл

Обычный файл — это самый распространенный тип файлов в системе Linux. Он объединяет самые различные виды файлов, такие как текст, изображения, бинарные файлы, библиотеки и т.д. Обычный файл вы можете создать с помощью команды:

Первый символ в выводе команды ls, в данном случае «-«, представляет собой код идентификации для обычного файла. Для удаления обычного файла используется команда:

2.2. Директория

Директория — это второй самый распространенный тип файлов в Linux. Директории могут быть созданы с помощью команды mkdir:

Как уже говорилось ранее, директории идентифицируются по символу «d» в выводе команды ls. Для удаления директорий используется команда rmdir.

Если вы попытаетесь с помощью команды rmdir удалить директорию, в которой есть файлы, то получите сообщение об ошибке:

В этом случае необходимо использовать команду:

2.3. Символьное устройство

Файлы символьных и блочных устройств позволяют пользователям и программам обмениваться данными с периферийными устройствами, например:

В данном случае символьное устройство — это модуль vmware.

2.4. Блочное устройство

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

2.5. Сокеты локального домена

Сокеты локального домена используются для обмена данными между процессами. В основном они используются такими службами, как X windows, syslog и т.д.

Сокеты могут быть созданы с помощью системного вызова socket, а удалены с помощью системной функции unlink или команд rm.

2.6. Именованные каналы

Как и локальные сокеты, именованные каналы позволяют осуществлять обмен данными между локальными процессами. Они могут быть созданы с помощью команды mknod, а удалены с помощью команды rm.

2.7. Символические ссылки

С посощью символических ссылок администратор может присвоить одному файлу или директории несколько идентичностей. Символическая ссылка является указателем на оригинальный файл. Существует два типа символических ссылок:
— жесткие ссылки;
— мягкие ссылки.

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

Для удаления символической ссылки мы можем использовать команды unlink или rm.

3. Заключение

Как системный администратор, вы будете в основном работать с обычными файлами, директориями, блочными или символьными устройствами. Программист также часто имеет дело с локальными сокетами и именованными каналами.

Источник

Урок 1. Файловая система и типы файлов в Linux

Файловая система организует доступ и хранение файлов на жестком диске и съемных устройствах.

Файловая система в Linux образует иерархическую древовидную структуру, которая описывается стандартом FHS (Filesystem Hierarchy System). Согласно этому стандарту любая система Linux содержит определенные каталоги и файлы, в которых хранятся только определенные файлы

Читайте также:  Gigabyte b450 gaming x установка windows

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

Согласно FHS в системе существует только один родительский корневой каталог, от которого отходят ветви — подкаталоги. Даже если в системе присутствует несколько жестких дисков и съемных устройств, то все равно корневой каталог только один.

Так выглядит файловая структура всех систем Linux

Рассмотрим какие файлы и каталоги присутствуют в системе и опишем для чего они нужны.

/bin — (сокращенно от “binary” — исполняемый), содержит необходимые программы/утилиты (исполняемые файлы) для функционирования и восстановления системы.

/boot — (сокращенно от “boot” — загрузка), содержит загрузчик системы, образ ядра.

/dev — (сокращенно от “devices” — устройства), содержит файлы для “общения” с внешними устройствами (USB, CD/DVD).

/etc — содержит конфигурационные файлы системы, различные настройки.

/home — домашний каталог всех зарегистрированных пользователей системы (кроме root). Содержит пользовательские данные, которые не будут утеряны при сбое системы.

/lib — (сокращенно от “library” — библиотека), содержит библиотечные файлы установленных программ.

/mnt — (сокращенно от “mount” — монтировать), содержит временные ссылки файлов и каталогов смонтированных файловых систем (от съемных носителей). Например, если подключить USB флэшку к компу, то содержимое флэшку можно будет просмотреть через данный каталог.

/sbin — (сокращенно от “system binary” — системные исполняемые файлы), содержит системные исполняемые файлы, которые доступны только администратору.

/opt — содержит библиотеки и исполняемые файлы дополнительного ПО.

/usr — (сокращенно от “user” — пользовательский), содержит конфигурационные и исполняемые файлы всей системы, в том числе и различные пользовательские прикладные программы.

/tmp — (сокращенно от “temporary” — временный), содержит временные файлы, которые можно удалить после завершения работы программ. После перезагрузки системы файлы удаляются.

/root — домашний каталог суперпользователя root.

Почему данный каталог не может быть в каталоге /home вместе с остальными каталогами пользователей?

Потому что каталог /home может находится и на съемных носителях, в то время как каталог /root всегда должен присутствовать в системе.

/var — (сокращенно от “variables” — переменные), содержит различные логи, журнал событий в системе и так далее. После перезагрузки системы файлы не удаляются.

/proc — (сокращенно от “process” — процессы), содержит подкаталоги, которые хранят информацию о запущенных процессах в системе. Каждый процесс и каталог характеризуются идентификатором процессов PID.

В Linux принято, что абсолютно все объекты являются файлами. Не все файлы хранят данные, поэтому выделяют следующие типы файлов:

Обычные ( регулярные ) файлы — любые текстовые, исполняемые, библиотечные, графические файлы.

Каталоги — хранят именованные ссылки (только ссылки, но не сами файлы) на другие файлы. Существуют специальные каталоги . — текущий каталог, .. — родительский каталог.

Символьные ссылки — файл с текстовой строкой, которая представляет собой путь к самому файлу. У одного файла может быть несколько символьных ссылок.

Жесткие ссылки — представляет собой второе имя файла. Данная ссылка указывает на индексный дескриптор файла.

Сокеты — файлы, которые используются для взаимодействия между различными процессами.

Именованные каналы FIFO — подобны сокетам, но работают в одном направлении.

Файлы блочных и символьных устройств — используются для взаимодействия с внешними устройствами и представляют собой своего рода шлюз между системой и внешним устройством. Данные файлы характеризуются 2 числами: старшим и младшим. Старший означает какой драйвер использовать с данным устройством, а младший — конкретное физическое устройство либо раздел на диске.

Источник

Типы файлов Linux

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

Unix-подобная ОС не следит за расширениями файлов. Задача связать расширения файла с конкретным пользовательским приложением, в котором этот файл будет открываться, видимо лежит на какой-либо дополнительной программе. В свою очередь пользовательское приложение анализирует структуру данный файла, расширение ему также безразлично.

Таким образом, среди файловых атрибутов, хранящихся в операционной системе на базе ядра Linux, нет информации о типе данных в файле. Там есть информация о более существенном разделении, связанном с тем, что в Unix-подобных системах все объекты – это файлы. Все объекты весьма разнообразны. Поэтому тип файла в Linux – это скорее тип объекта, но не тип данных как в Windows.

Читайте также:  Как переместить панель задач вниз экрана windows 10 горячие клавиши

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

Обычные файлы (-)

Сюда относятся все файлы с данными, играющими роль ценной информации сами по себе. Linux все-равно текстовый перед ним файл, исполняемый или картинка. В любом случае это будет обычный (regular) файл. Все они обозначаются знаком минус «-«. Остальные типы файлов считаются специальными (special).

Каталоги (d)

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

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

В Unix-подобных системах один и тот же файл может существовать под разными именами и/или в разных каталогах: все имена будут связаны с одним и тем же индексным дескриптором (механизм жестких ссылок).

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

Символьные ссылки (l)

Символьная ссылка – это файл, в данных которого содержится адрес другого файла по его имени (а не индексному дескриптору).

Выполнение символьной ссылки приводит к открытию файла, на который она указывает. Это аналог ярлыков в операционной системе Windows.

Если удалить исходный файл, то символьная ссылка продолжит существовать. Она по-прежнему будет указывать на файл, которого уже нет.

Символьные ссылки не содержат атрибутов файлов, на которые они указывают. У них есть собственные атрибуты.

Символьные (c) и блочные устройства (b)

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

К символьным устройствам обращение происходит последовательно (символ за символом). Примером символьного устройства может служить терминал.

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

Сокеты (s) и каналы (p)

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

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

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

Команда file

Хотя выше было сказано, что Линукс не делает предположение о типе данных в обычном файле, есть специальная утилита, которая выполняет эту задачу, – программа file. Для этого она анализирует начало содержимого файла и находит в нем специальные «сигналы», характерные для определенного типа – бинарного файла, текстового, изображения и др.

На скриншоте также показано, что расширение для программы file безразлично. Файл flag – копия flag.png, и программа успешно его идентифицировала как изображение.

Команда file имеет множество различных ключей.

В примере файл 2020.ods является символьной ссылкой на файл, находящийся в другом каталоге, о чем нам говорит команда file без ключей. С помощью ключа -L мы можем узнать тип файла, на который ссылается файл-ссылка.

Курс с ответами к заданиям и дополнительными уроками:
android-приложение, pdf-версия.

Источник

Типы файлов в Linux

Обновл. 4 Сен 2021 |

При навигации по файловой системе в Linux, вы обязательно столкнетесь с различными типами файлов. Наиболее часто используемые и очевидные типы — это обычные файлы и каталоги. Однако помимо их в Linux также существуют еще 5 специальных типов.

Идентификация типов файлов в Linux

Для определения типа файла достаточно воспользоваться всего одной командой:

$ ls -ld /etc/services
-rw-r—r— 1 root root 19281 Feb 14 2012 /etc/services

Читайте также:  Запуск linux с внешнего жесткого диска

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

Типы файлов в Linux

Ниже представлено краткое описание 7 различных типов файлов в Linux:

c — символьное устройство;

b — блочное устройство;

s — (локальный) сокет;

p — именованный канал;

l — символьная ссылка.

Обычный файл

Обычный файл — это наиболее распространенный тип файлов в Linux. Текстовые файлы, изображения, двоичные файлы, общие библиотеки и т.д. — все они относятся к обычному типу файлов. Вы можете создать обычный файл с помощью команды touch :

$ touch ravesli.txt
diego@debian:

$ ls -ld ravesli.txt
rw-r—r— 1 diego diego 0 фев 20 11:14 ravesli.txt

Первый символ вывода команды ls , в данном случае — , обозначает, что перед нами обычный файл. Для удаления обычного файла используется команда rm (сокр. от «remove»):

$ rm ravesli.txt
diego@debian:

$ ls -ld ravesli.txt
ls: невозможно получить доступ к ‘ravesli.txt’: Нет такого файла или каталога

Каталог

Обозначается как d

Каталог — это второй по распространенности тип файлов в Linux. Каталог можно создать с помощью команды mkdir (сокр. от «make directory»):

$ mkdir ravesli
diego@debian:

$ ls -ld ravesli
d rwxr-xr-x 2 diego diego 4096 фев 20 12:14 ravesli

Как объяснялось ранее, каталогу соответствует символ d (от «directory») выходных данных команды ls . Для удаления пустого каталога используется команда rmdir (сокр. от «remove directory»):

$ rmdir ravesli
diego@debian:

$ ls -ld ravesli
ls: невозможно получить доступ к ‘ravesli’: Нет такого файла или каталога

При попытке удалить каталог, содержащий внутри себя файлы, вы получите сообщение об ошибке:

$ mkdir ravesli
diego@debian:

$ touch /home/diego/ravesli/ravesli.txt
diego@debian:

$ rmdir ravesli
rmdir: не удалось удалить ‘ravesli’: Каталог не пуст

В этом случае вам нужно использовать команду rm -r :

$ rm -r ravesli/
diego@debian:

$ ls -ld ravesli
ls: невозможно получить доступ к ‘ravesli’: Нет такого файла или каталога
diego@debian:

Символьное устройство

Обозначается как c

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

$ sudo ls -ld /dev/urandom
c rw-rw-rw- 1 root root 1, 9 фев 20 12:49 /dev/urandom

В этом примере символьным устройством является генератор псевдослучайных чисел.

Блочное устройство

Обозначается как b

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

$ ls -ld /dev/sda
b rw-rw—- 1 root disk 8, 0 фев 20 12:49 /dev/sda

Локальные сокеты

Обозначаются как s

Как правило, локальные сокеты используются для связи между такими службами, как: X Window, syslog и т.д.

$ ls -ld /dev/log
s rw-rw-rw- 1 root root 0 Jan 4 10:13 /dev/log

Именованные каналы

Обозначаются как p

Подобно локальным сокетам, именованные каналы позволяют осуществлять связь между двумя локальными процессами. Основное отличие от сокетов в том, что через каналы данные могут проходить одновременно только в одном направлении. Они могут быть созданы с помощью команды mknod и удалены с помощью команды rm .

Символьные ссылки

Обозначаются как l

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

Существует два типа символьных ссылок в Linux:

Мягкая ссылка является указателем на некоторый файл или каталог (сродни ярлыкам в Windows). Если вы переместите файл, связь с символьной ссылкой разорвётся (но сама ссылка все еще будет существовать, указывая на файл, которого нет). Если вы замените файл другим, сохранив имя, символьная ссылка будет указывать на новый файл. Символьные ссылки могут охватывать различные разделы файловой системы.

Жесткая ссылка привязывается только к файлам, охватывает только один раздел файловой системы и, по сути, является тем же файлом, на который ссылается.

Для создания символьной мягкой ссылки используется команда ln -s :

$ echo file1 > file1
diego@debian:

$ ln -s file1 file2
diego@debian:

$ cat file2
file1
diego@debian:

$ ls -ld file2
l rwxrwxrwx 1 diego diego 5 фев 20 14:11 file2 -> file1

Чтобы удалить символьную ссылку, мы можем использовать команду unlink или rm .

Заключение

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

Поделиться в социальных сетях:

Источник

Оцените статью