Во многих операционных системах (включая UNIX®) существует концепция файла, по которой его можно рассматривать просто, как набор информации, которому дано имя. Примерами файлов будут: программа, которая может выполняться, письмо, полученное по электронной почте, написанная вами статья. Существенно то, что все, что хранится на диске, хранится в отдельных файлах.
UNIX® отличается от большинства операционных систем тем, что она файл-ориентирована. Дизайнеры системы решили, что для упрощения ОС будет полезным рассматривать всё как файлы – приводы жестких дисков, терминалы, модемы, сетевые соединения и собственно файлы файловой системы. С точки зрения UNIX® файл представляет собой неструктурированный набор байтов произвольной длины. Структура любого файла определяется программой, которая его использует, но не операционной системой в целом. Исключениями являются исполняемые бинарные файлы, которые начинаются с магического числа (magic number) – комбинации из 2-х байтов, позволяющие ядру ОС определить способ исполнения программы, и разделители строк в текстовых файлах – по умолчанию это символ новой строки LF, в отличие от DOS, где строки разделяются комбинацией символов CR+LF. Такой подход позволяет абстрагироваться от конкретной реализации аппаратного обеспечения и использовать для доступа к устройствам стандартный набор файловых операций POSIX: open(2), close(2) read(2), write(2). При этом ядро ОС или его модули ответственны за предоставление такого типа доступа к ресурсам системы и периферии.
Таким образом, приложения оперируют лишь потоками байтов. В UNIX® различают следующие типы файлов:
Главные отличительные признаки файлов и каталогов - их имена. В Unix имена файлов и каталогов могут быть длиной не более 256 символов, и могут содержать любые символы, кроме "/". Причина этого ограничения очевидна: данный символ используется как разделитель имен в составе пути, поэтому не должен встречаться в самих именах. Причем Linux всегда различает прописные и строчные буквы в именах файлов и каталогов, поэтому "methody", "Methody" и "METHODY" будут тремя разными именами.
Допускается использование символов национальных алфавитов в любых кодировках, но для нормальной работы система должна иметь поддержку нужной кодировки. В последнее время стандартом стало использование UTF8.
Есть несколько символов, допустимых в именах файлов и каталогов, которые нужно использовать с осторожностью. Это так называемые спецсимволы "*", "\", "&", "<", ">", ";", "(", ")", "|", а также символы пробела и табуляции. Дело в том, что эти символы имеют особое значение для любой командной оболочки, поэтому нужно будет специально позаботиться о том, чтобы командная оболочка воспринимала эти символы как часть имени файла или каталога.