Типи файлів Unix
В Unix подібних-операційних системах існує 7 типів файлів:
Регулярні файли, Символьне посилання, Каталог, FIFO, Сокет, Block special, Character special
Тип файлу можна визначити за допомогою команди ls -l, яка відображає тип у першому символі поля дозволів файлової системи. Для звичайних файлів Unix не надає будь-якої внутрішньої файлової структури. Тому їх структура та інтерпретація повністю залежать від програмного забезпечення, яке їх використовує. Однак команду file можна використовувати, щоб визначити, який тип даних вони містять.
Регулярні файли (regular file)
Регулярні файли відображаються в ls -l з дефісом мінус у звичайній формі:
$ ls -l /etc/passwd
-rw-r--r-- /etc/passwd |
Символьне посилання (symbolic link)
Символьне посилання - це посилання на інший файл. Цей спеціальний файл зберігається як текстове представлення шляху до файлу, на який посилається (це означає, що місце призначення може бути відносним шляхом, а може не існувати взагалі).[1]
Символічне посилання позначається l (нижній регістр L).
lrwxrwxrwx ... termcap -> /usr/share/misc/termcap
lrwxrwxrwx ... S03xinetd -> ../init.d/xinetd |
Каталог (directory)
Найпоширенішим спеціальним файлом є каталог. Макет файлу каталогу визначається використовуваною файловою системою. Оскільки в Unix доступні декілька файлових систем, як власних, так і невласних, тому не існує одного макета файлів каталогу. Каталог позначається буквою d як першою літерою в полі режиму у виводі ls -dl або stat, наприклад:
$ ls -dl /
drwxr-xr-x 26 root root 4096 Sep 22 09:29 / $ stat / File: "/" Size: 4096 Blocks: 8 IO Block: 4096 directory |
FIFO (named pipe)
Однією з сильних сторін Unix завжди була міжпроцесна комунікація. Це добре, якщо обидва процеси існують в одному і тому ж батьківському просторі процесу, запущеному одним користувачем, але існують обставини, коли комунікаційні процеси повинні використовувати FIFO, які тут називаються іменованими каналами. .[2]
Іменовані канали — це спеціальні файли, які можуть існувати в будь-якому місці файлової системи. Їх можна створити за допомогою команди mkfifo, як у mkfifo mypipe. Іменований канал позначається буквою p як першою літерою рядка режимів.
prw-rw---- ... mypipe |
Сокет (Socket)
Сокет — це спеціальний файл, який використовується для міжпроцесного зв'язку, який забезпечує зв'язок між двома процесами. Ще процеси можуть надсилати дескриптори файлів через підключення домена Unix за допомогою системних викликів sendmsg() і recvmsg().[3]
На відміну від іменованих каналів, які дозволяють лише односпрямований потік даних, сокети повністю підтримують двосторонній. Сокет позначається символом s як перша літера рядка режимів, наприклад:
srwxrwxrwx /tmp/.X11-unix/X0 |
Device file (block, character)
У Unix майже всі речі обробляються як файли і мають місце у файловій системі, навіть апаратні пристрої, такі як жорсткі диски. Винятком є мережеві пристрої, які не з'являються у файловій системі, а обробляються окремо. Файли пристрою використовуються для застосування прав доступу до пристроїв і для спрямування операцій над файлами до відповідних драйверів пристроїв.
Unix розрізняє символьні пристрої та блокові пристрої. Відмінності приблизно такі: символьні пристрої забезпечують лише послідовний потік введення або приймають послідовний потік виведення, а блокові пристрої доступні випадковим чином.
Символьний пристрій позначається символом c як перша літера рядка режимів. Аналогічно, блочний пристрій позначається буквою b, наприклад:
crw------- ... /dev/null
brw-rw---- ... /dev/sda |
Door
Door — це спеціальний файл для міжпроцесного зв'язку між клієнтом і сервером, який наразі реалізований тільки в Solaris.
Door позначаються буквою D (верхній регістр) як перша літера рядка режимів, наприклад:
Dr--r--r-- ... name_service_door |
Примітки
- https://uk.wikipedia.org/wiki/%D0%A1%D0%B8%D0%BC%D0%B2%D0%BE%D0%BB%D1%8C%D0%BD%D0%B5_%D0%BF%D0%BE%D1%81%D0%B8%D0%BB%D0%B0%D0%BD%D0%BD%D1%8F
- https://uk.wikipedia.org/wiki/%D0%86%D0%BC%D0%B5%D0%BD%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B9_%D0%BA%D0%B0%D0%BD%D0%B0%D0%BB
- https://uk.wikipedia.org/wiki/%D0%A1%D0%BE%D0%BA%D0%B5%D1%82_(%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BD%D0%B8%D0%B9_%D1%96%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81)