В Unix помимо обычных файлов и каталогов существуют еще и
специальные файлы. Они используются для обозначения физических
устройств компьютера. (Железок). В сущности, что такое файл?
Это "нечто", куда можно записывать данные, как последовательность
байтов, и считывать их оттуда. И значит, вполне естественным
выглядит, например, файл   /dev/console - соответствующий
консольному терминалу. Все что выводится в файл /dev/console
будет просто появляться на экране терминала. При попытке чтения
из файла /dev/console, вы будете получать (внимание!), не то,
что нарисовано в данный момент на экране, а то что вводится с клавиатуры.
Попробуйте выполнить команды

  su
  echo Привет > /dev/console
  cat /dev/console

  Ctrl-C

Для каждого терминала unix машины существует соответствующий ему
файл. Обычным терминалам соответствуют файлы, которые называются
примерно так:

  /dev/syscon1 или /dev/tty01 или /dev/ttyFD02 или /dev/ttyS0
  (и т.д., возможны варианты)

Псевдо терминалам (они эмулируются, когда вы входите в систему
по сети, посредством команд типа   telnet, rlogin), соответствуют
специальные файлы

  /dev/pty*, или /dev/pty/*

Команда who, или  who am i сообщит вам, как называется ваш
собственный терминал.

Существуют специальные файлы, соответствующие жесткому диску
в целом  (/dev/rdsk/m197_c0_d0s7), и всем его разделам
(/dev/dsk/m197_c0d0s*).  Если вы  будете читать из этих файлов,
то получите все байтики, как они лежат на  жестком диске, с
нулевого цилиндра и до последнего... А если вы в этот файл что-нибудь
запишете, то получите (потом) богатый опыт по переформатированию и
разметке жесткого диска.

/dev/mem - файл изображающий оперативную память.

/dev/audio - если "закатить" в него файл звукового формата (*.wav,
             *.au, ...?) - то он будет озвучен динамиком компьютера
             а команда  cat /dev/audio будет принимать все, что
             произносится в микрофон. Впрочем я отвлекся, у нас ведь
             не PC, не Silicon Graphic и не SPARCstation.

/dev/zero  - из него можно считать сколько угодно нулевых байтов

/dev/null  - а в него можно писать и читать из него, тоже,
             в неограниченных количествах, и с неизменным результатом
             NULL - он и есть null

Специальные файлы бывают двух типов:

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

  ls -al /dev/fd*
brw-rw----   1 root     floppy     2,  28 Jul 18  1994 /dev/fd0H1440
brw-rw----   1 root     floppy     2,  32 Jul 18  1994 /dev/fd0H2880
brw-rw----   1 root     floppy     2,  12 Jul 18  1994 /dev/fd0H360

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

  ls -al /dev/tty*
crw--w--w-   1 moshkow  sys        4,   1 Jan 15 22:00 /dev/tty1
crw--w--w-   1 root     root       4,   2 Jan 15 20:37 /dev/tty2
crw--w--w-   1 root     root       4,   2 Jan 15 20:37 /dev/tty2

Различие - первая буква в листинге команды ls  -l

Понятия "размер" у специального файла не существует. Ведь этот
файл обозначает физическое устройство. Фактически, это ссылка на
соответствующий дравер. Вместо длинны, команда ls показывает для
таких файлов два числа: "мажорный" и "минорный" номера устройств.
Будем считать, для ясности, что "мажор" - порядковый номер
дравера устройства, а "минор" - внутренний номер устройства в
таблице обслуживающего его дравера.

Last-modified: Sun, 15 Jan 1995 20:08:14 GMT