Специальные файлы. В 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 показывает для таких файлов два числа: "мажорный" и "минорный" номера устройств. Будем считать, для ясности, что "мажор" - порядковый номер дравера устройства, а "минор" - внутренний номер устройства в таблице обслуживающего его дравера.