Linux собака перед именем файла

Типы файлов Linux

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

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

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

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

Типы файлов Linux

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

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

Каталоги (d)

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

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

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

Читайте также:  Minecraft bedrock edition linux launcher

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Команда file

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

Команда file

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

Читайте также:  Разработка ios приложений linux

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

Использование команды file с символьной ссылкой

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

Курс с ответами к заданиям и дополнительными уроками в PDF

Введение в Linux и Bash. Курс

Источник

вопрос про ссылки, просьба помочь

Добрый день! Вопрос про ссылки, которые можно создавать в Linux (символические, жесткие и другие). Насколько я понял, при создании симв.ссылки создается файл вида @1.txt (пример). Необходимо определить откуда и на что (места или файлы) в системе созданы ссылки. При просмотре директорий, откуда и куда были созданы ссылки никаких файлов такого типа @file_name.txt нет. При просмотре через Midnight Commander заходим в директорию и видим там папку /u01 и ~data (скриншот). Это ссылка или нет и если да, то какая она? Как определить?

Необходимо определить откуда и на что (места или файлы) в системе созданы ссылки

Это ссылка или нет и если да, то какая она?

В mc тильда (~) перед именем директории означает, что это ссылка. Внизу панели показывается, куда она указывает.

В терминале узнать, куда указывает ссылка, можно с помощью readlink (man 1 readlink). В C-программе тоже readlink (man 2 readlink и man 2 readlinkat).

Найти все ссылки можно так: find /usr -type l

Это ссылка или нет и если да, то какая она? Как определить?

Листинг 6. Определение ссылок ian@attic4:~$ ls --color=none -lR lpi104-6 lpi104-6: total 12 -rw-r--r-- 3 ian ian 28 2010-05-27 17:17 file1 -rw-r--r-- 1 ian ian 0 2010-05-26 14:11 file2 -rw-r--r-- 3 ian ian 28 2010-05-27 17:17 file3 lrwxrwxrwx 1 ian ian 24 2010-05-27 17:15 file4 -> /home/ian/lpi104-6/file1 lrwxrwxrwx 1 ian ian 5 2010-05-27 17:15 file5 -> file1 lrwxrwxrwx 1 ian ian 14 2010-05-27 17:37 file6 -> lpi104-6/file1 drwxr-xr-x 2 ian ian 4096 2010-05-26 14:11 subdir lpi104-6/subdir: total 4 -rw-r--r-- 3 ian ian 28 2010-05-27 17:17 file3sub ian@attic4:~$ /bin/ls -l ~ian/research/lpi104-6/file4 lrwxrwxrwx 1 ian ian 24 2010-05-25 11:51 /home/ian/research/lpi104-6/file4 -> /home/ian/ lpi104-6/file1 ian@attic4:~$ /bin/ls -l lpidir104-6 lrwxrwxrwx 1 ian ian 8 2010-05-27 17:16 lpidir104-6 -> lpi104-6 

Второй столбец вывода в листинге 6 содержит счетчик ссылок, показывающий количество жестких ссылок на файл. Таким образом, мы видим, что файлы file1, file3 и file3sub имеют по нескольку жестких ссылок, указывающих на представляемые ими объекты; тем не менее, этой информации еще недостаточно, чтобы понять, что все они представляют собой один и тот же объект. Если удалить файл, счетчик ссылок которого имеет значение больше 1, то счетчик ссылок в индексном дескрипторе понизится на 1, но файл не будет удален, пока счетчик не достигнет 0. Значения счетчиков всех других жестких ссылок на этот файл понизятся на 1.

Читайте также:  Linux посмотреть модель сервера

Символические ссылки обозначаются символом ‘l’ (буква L в нижнем регистре) в первом столбце вывода команды ls -l. Кроме того, после символов -> выводится целевой объект ссылки, например, file4 -> /home/ian/lpi104-6/file1. Другой подсказкой может служить то, что размер ссылки в байтах равен количеству символов в имени ее целевого объекта. Заметьте, что счетчик ссылок в выводе содержимого директории не обновляется для символических ссылок. Удаление ссылки никак не влияет на целевой объект. Символические ссылки не защищают файлы от удаления; если целевой файл был перемещен или удален, ссылка становится «битой». По этой причине во многих операционных системах информация о содержимом директории выводится в цвете (как правило, голубым цветом отображаются рабочие ссылки, а красным цветом – битые).

при создании симв.ссылки создается файл вида @1.txt

symlink — по факту — текстовый файл в котором путь и имя файла/каталога на которые она ссылается. Чтобы не поутать с текстовым файлом, на уровне файловой системы говорится что это ссылка. Так что никаких норм/требований к имени файла нет.
hardlink — это два файла, которые указывают на одну область на диске.

Необходимо определить откуда и на что (места или файлы) в системе созданы ссылки

Только однострочником с помощью find: для симлинков искать на что они ссылаются, за хардлинки — номер inode .
P. S. А зачем?

При просмотре через Midnight Commander

Если симлинк — перед именем тильда (или восклицательный знак, если симлинк битый). Если хардлинк — никак; только ls -l может показать сколько еще есть хардлинков на этот файл, но где они — только find (by design невозможно).

Источник

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