Имена файлов
Имена файлов
Как мы уже видели, ни метаданные, ни тем более блоки хранения данных, не содержат имени файла. Имя файла хранится в файлах специального типа — каталогах. Такой подход позволяет любому файлу, т. е. фактическим данным, иметь теоретически неограниченное число имен (названий), в файловой системе. При этом несколько имен файлов будут соответствовать одним и тем же метаданным и данным и являться жесткими связями.
Каталог файловой системы s5fs представляет собой таблицу, каждый элемент которой имеет фиксированный размер в 16 байтов: 2 байта хранят номер индексного дескриптора файла, а 14 байтов — его имя. Это накладывает ограничение на число inode, которое не может превышать 65 535. Также ограничена и длина имени файла: его максимальный размер — 14 символов. Структура каталога приведена на рис. 4.3.
Рис. 4.3. Каталог файловой системы s5fs
Первые два элемента каталога адресуют сам каталог (текущий каталог) под именем "." и родительский каталог под именем "..".
При удалении имени файла из каталога (например, с помощью команды rm(1)), номер inode соответствующего элемента устанавливается равным 0. Ядро обычно не удаляет такие свободные элементы, поэтому размер каталога не уменьшается даже при удалении файлов. Это является потенциальной проблемой для каталогов, в которые временно было помещено большое количество файлов. После удаления большинства из них размер каталога останется достаточно большим, поскольку записи удаленных файлов будут по-прежнему существовать.
Иллюстрацию этого явления в SCO UNIX можно привести, применив команду hd(1M), обеспечивающую вывод неинтерпретированного содержимого файла (шестнадцатеричный дамп).
$ hd .
0000 fc 0a 2e 00 00 00 00 00 00 00 00 00 00 00 00 00
0010 02 00 2е 2е 00 00 00 00 00 00 00 00 00 00 00 00
0020 33 72 6d 61 69 6с 00 00 00 00 00 00 00 00 00 00 3rmail
0030 0а 2с 4е 65 77 73 00 00 00 00 00 00 00 00 00 00 .,News
0040 33 7d 2е 6e 65 77 73 72 63 00 00 00 00 00 00 00 3}.newsrc
0050 00 40 62 69 6e 00 00 00 00 00 00 00 00 00 00 00 .@bin
0060 da 91 64 65 61 64 2е 6с 65 74 74 65 72 00 00 00 ..dead.letter...
0290 00 00 70 69 6e 65 72 63 30 30 30 37 36 39 00 00 ..pinerc000769..
02a0 00 00 30 35 6e 61 64 75 76 61 2е 6а 70 67 00 00 ..05naduva.jpg..
02b0 00 00 30 36 73 70 75 73 74 69 2е 6а 70 67 00 00 ..06spusti.jpg..
02с0 00 00 30 37 67 75 69 74 61 72 2е 6а 70 67 00 00 ..07guitar.jpg..
02d0 00 00 30 38 73 75 6e 73 65 74 2е 6а 70 67 00 00 ..08sunset.jpg..
02е0 00 00 37 31 72 6f 70 65 73 31 2е 6а 70 67 00 00 ..71ropes1.jpg..
Можно заметить, что имен файлов, расположенных во второй части вывода команды hd(1M) на самом деле не существует — об этом свидетельствуют нулевые значения номеров inode, это же подтверждает вывод команды ls(1):
$ ls -а
.newsrc
bin
dead.letter
News
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКДанный текст является ознакомительным фрагментом.
Читайте также
Полные имена файлов
Полные имена файлов Полное имя файла можно получить, используя функцию GetFullPathName. Функция GetShortPathName возвращает имя файла в формате DOS 8.3, в предположении, что данный том поддерживает короткие имена файлов.В NT 5.1 была введена функция SetFileShortName, позволяющая изменить
Имена
Имена В именах нельзя использовать символы разных регистров. Назвать переменную именем idx, или даже i — это очень хорошо, но при условии, что будет понятно назначение этой переменной. Слишком хитрые имена, такие как theLoopIndex, недопустимы. Так называемая "венгерская запись"
Длинные и короткие имена файлов
Длинные и короткие имена файлов Запрещение длинных имен файловВы можете запретить длинные имена файлов в Windows, заставив тем самым генерировать имена в формате 8.3 (DOS-овский формат). Для этого в разделе HKLMSystemCurrentControlSetcontrolFileSystemнадо изменить параметр °Win31FileSystem°, присвоив ему
2.2. Имена IPC
2.2. Имена IPC В табл. 1.2 мы отметили, что три типа IPC стандарта Posix имеют идентификаторы (имена), соответствующие этому стандарту. Имя IPC передается в качестве первого аргумента одной из трех функций: mq_open, sem_open и shm_open, причем оно не обязательно должно соответствовать реальному
30. Имена переменных
30. Имена переменных Имя (идентификатор) включает в себя последовательность букв и цифр. Первый символ должен являться буквой. Знак подчерка считается буквой. C++ не ограничивает число символов в имени, но определенные части реализации находятся вне ведения автора
Пример A-4. blank-rename: переименование файлов, чьи имена содержат пробелы
Пример A-4. blank-rename: переименование файлов, чьи имена содержат пробелы Это даже более простая версия предыдущего примера.#! /bin/bash# blank-rename.sh## Заменяет пробелы символом подчеркивания в именах файлов в текущем каталоге.ONE=1 # единственное или множественное число (см.
5.2. Имена файлов в Linux
5.2. Имена файлов в Linux По сравнению с Windows в Linux несколько другие правила построения имен файлов, вам придется с этим смириться. Начнем с того, что в Linux нет такого понятия, как расширение имени файла. В Windows, например, для файла Document1.doc именем файла является фрагмент Document 1, а doc
2.2 Имена
2.2 Имена Имя (идентификатор) состоит из последовательности букв и цифр. Первый символ должен быть буквой. Символ подчерка _ считается буквой. С++ не налагает ограничений на число символов в имени, но некоторые части реализации находятся вне ведения автора компилятора (в
7.3. Имена дисков
7.3. Имена дисков В любом современном компьютере имеется несколько носителей данных, например дисковод для дискет, CD-ROM и жесткий диск. У каждого носителя есть свое имя. Оно позволяет уточнить, на каком диске находится тот или иной файл. Имя диска — это буква латинского
У6.5 Имена
У6.5 Имена Разработайте абстрактный тип данных ИМЯ, в котором учитывались бы различные компоненты полного имени
Играем в имена
Играем в имена Смена имен подчеркивает важность именования - как компонентов, так и классов - в практике ОО-разработки ПО. Формально, класс - это отображение имен компонентов в сами компоненты. Компоненты известны остальному миру благодаря именам.В последней лекции будет