В формате MS Word 97
1. Что такое UNIX?
В узком смысле слова это ядро операционной системы разделения времени, т.
е. программа, которая распоряжается ресурсами вычислительной машины и
предоставляет их пользователям. Она дает пользователям возможность
запускать свои программы, управлять периферийными устройствами машины
(дисками, терминалами, печатающими устройствами и т. п.) и обеспечивает
работу файловой системы, предназначенной для длительного хранения
информации.
В более широком смысле под UNIX понимают не только ядро, но и такие важные
компоненты, как компиляторы, редакторы, программы копирования и печати
файлов. Сюда даже относят языки управления заданиями (командные языки).
UNIX может также включать, созданные Вами или другими пользователями
программы, предназначенные для подготовки документации, статистического
анализа или, скажем, "графические" средства и т. д.
Это и обуславливает широкое распространение и многообразие версий системы
UNIX. Но все их объединяет единая концепция. Поэтому, изучив основы одной
версии, Вы сможете разобраться и в любой другой, тем более что в каждой
версии системы UNIX есть справочное руководство, описывающее именно эту
версию. (Вы будете работать в системе MINIX - она наиболее удобна для
начинающих, но часто речь будет идти именно о семействе систем UNIX).
Однако, несмотря на то, что тонкости каждой версии Вы в состоянии изучить
самостоятельно, при ознакомлении с основами нужна некоторая помощь.
Итак, UNIX это многозадачная, многопользовательская операционная система.
Это означает, что много людей может одновременно использовать один
компьютер, выполняя много различных задач. (Это существенное отличие от MS-
DOS, где только один человек может использовать в данный момент
операционную систему).
В UNIX пользователи должны себя идентифицировать при входе в систему.
Идентификация состоит из двух шагов: ввода имени (по имени система Вас
идентифицирует) и ввода входного пароля, который является Вашим секретным
словом для регистрации Вас в системе. Поскольку только Вы знаете пароль,
никто не может войти в систему под Вашим именем. Это позволяет проследить
действия каждого пользователя системы (и дело здесь не только в
безопасности).
В традиционных UNIX-системах имя и начальный пароль Вам присвоит системный
администратор при Вашей регистрации в системе (при заведении в системе
нового пользователя). Системный администратор (root) - это особый
пользователь, который организовывает работу системы: он имеет полный доступ
к любому файлу системы, регистрирует новых пользователей и имеет право
выполнять специальные программы (например, создания файловой системы); при
появлении новых версий, при необходимости, модернизирует отдельные части
системы (в DOS предпочтительнее работать на последней версии системы), а
главное адаптирует систему в соответствии с требованиями конкретных
пользователей.
В отличие от root обычные пользователи ограничены так, что не могут
причинить вред никому в системе (включая саму систему), кроме самих себя.
Права доступа к файлам в системе организованы (кстати, root-пользователем)
таким образом, что простой пользователь не может удалить или изменить файл
в каталогах, которые пользователи используют совместно. Пользователи также
имеют возможность защитить собственные файлы. Использовать файлы совместно
пользователям позволяет организация в группы.
Вход в систему.
Прежде чем начать работу с UNIX, как и с любой другой системой, надо:
Включить компьютер. На экране должно появится приглашение, содержащее слово
login.
Если этого не произойдет, то Вам следует нажать клавишу ENTER, не торопясь,
несколько раз.
Если и это не сработает, то следует обратиться к преподавателю.
После того как на экране появится приглашение, Вы должны ввести Ваше имя в
системе и нажать клавишу ENTER. (Помните: UNIX различает прописные и
строчные буквы).
Затем на экране появится слово password. Это значит, что Вы должны ввести
Ваш пароль. Не удивляйтесь, что символы не будут видны на экране – на то
это и пароль.
В том случае, если Вы ввели пароль неправильно, на экране появиться
сообщение login incorrect и новое приглашение.
1. Простейшие команды.
В конце концов, войдя в систему, Вы получите приглашение на ввод команд – на экране появится один символ (им может оказаться знак доллара или процента, у Вас это будет $), означающий, что система готова принимать Ваши команды.
Если это так, то попробуйте ввести команду date
(не забывайте после набора нажимать клавишу ENTER). Система выведет на экран информацию о дне недели, месяце и числе, времени и годе. На следующей строке будет выведено новое приглашение.
Попробуйте ввести команду who
На экране появится информация, сообщающая, кто работает в данный момент в системе. В первом столбце указывается имя пользователя, во втором – системное имя используемого устройства связи, затем – дата и время входа в систему.
Вы можете поэкспериментировать и с такой командой who am i
Система сообщит Вам Ваше системное имя (как пользователя), системное имя используемого устройства связи, дату и время Вашего входа в систему.
Если Вы ошибетесь и введете имя несуществующей команды, то система ответит, что команда с этим именем не найдена.
Например: $ WHO
WHO: not found
Если после выполнения команды приглашение не появилось или исчезло с экрана, то нужно нажать клавишу ENTER.
2. Типы команд и примеры их использования.
Обратите внимание, что команды в UNIX имеют определенную структуру.
Наиболее общий вид ее следующий: command stuff где command – имя команды, а stuff – аргументы команды.
Аргументы бывают разные: опции (иначе флаги) и параметры. Заметьте, что вместо stuff может ничего и не быть. (Помните команды, которые Вы вводили).
Обычно команды, опции и параметры разделяются пробелами.
1. Команды с опциями.
Большинство команд используются с аргументами называемыми опциями
(флагами), уточняющими, что должна делать команда. Различные команды имеют
различные опции, но способ их использования одинаков: после имени команды
ставится пробел, затем знак "-" и одна или несколько букв обозначающих
опцию.
Введите cd /
и давайте, например, рассмотрим команду ls.
1. Если набрать команду ls и нажать клавишу ENTER, то на экран выведется список файлов и подкаталогов текущего каталога.
2. Если набрать команду ls -l
(естественно, нажав клавишу ENTER), то на экран будет выведен список файлов с дополнительной информацией о типе файла (обычный, каталог или специальный), правах на его использование, владельце, размере, дате последнего изменения (или создания) и др. Позже мы рассмотрим подробнее эту опцию.
Можно использовать несколько опций одновременно.
3. Если Вы наберете команду ls -lt
т. е. добавите еще опцию -t, то названия файлов будут выведены не только с
дополнительной информацией, но и отсортированы по времени.
Как правило, символ "-" не печатается перед каждой опцией и сами опции
записываются слитно.
1. Команды с параметрами.
Второй тип команд – это команды с параметрами. Параметрами могут быть имя
пользователя, принтера, файла и т.п. Это та дополнительная информация,
которая необходима для выполнения команды в конкретной ситуации.
Продолжим пример с командой ls.
1. Наберите ls -l etc
– на экране будет выведена информация о директории etc.
2. Если Вы наберете через пробел несколько имен файлов: ls -l .exrc .profile то система выдаст Вам информацию о двух файлах .exrc и .profile, если они существуют в текущем каталоге (в том, в котором Вы находитесь в данный момент). В случае, если файла в текущем каталоге нет, например,
Вы ошибочно набрали ls -l exrc то на экране Вы увидите надпись ls: exrc: No such file or directory
(Нет такого файла или директории)
Когда параметры различны, они используются несколько иначе.
3. Давайте рассмотрим это на примере команды lp, которая используется для распечатки файлов на принтере. В отличие от приведенных выше, это абстрактная команда - в системе MINIX указанные опции не применяются, но она дает хорошее представление о том, как можно употреблять несколько опций и параметров: lp -dpsdoc -onobanner myfile
Здесь команда lp используется с двумя опциями и тремя параметрами. После
опции -d должен следовать параметр, который представляет собой имя принтера
в данном случае это psdoc; за опцией -о, используемой для установки
нескольких параметров, в данном случае следует параметр nobanner, который
указывает принтеру, что не надо печатать banner page (титульный лист, в
котором указывается имя пользователя, время и дата печати, имя
используемого принтера). Последний параметр, употребляемый без опции,
означает имя файла, который следует распечатать.
Заметьте, что пробел между опцией и ее параметром не нужен, хотя и может
присутствовать.
Если Вы все же ввели эту команду, то не удивляйтесь - система выдаст Вам
следующее: lp: -dpsdoc:No such file or directory lp: -onobanner: No such file or directory lp: myfile: No such file or directory
ведь команда lp в MINIX не имеет опций, а ее параметрами являются имена
файлов.
1. Некоторые дополнительные приемы использования команд.
Оговорим также некоторые дополнительные приемы использования команд:
Вы можете выполнять команду в фоновом режиме, т.е. UNIX будет продолжать
выполнять эту команду, в то время как Вы печатаете другую. Очевидно, что
использовать фоновый режим нужно в том случае, когда выполнение команды
занимает много времени, в небольшой системе MINIX непросто найти такую
команду. Поэтому на использовании фонового режима мы остановимся подробнее
позже.
Вы можете написать сразу несколько команд. Например, cd /usr; ls; date
(каталог /usr станет текущим и на экран будет выведен список файлов и
подкаталогов каталога /usr, а также информация о дате и времени) или date; ls –la
(Вы увидите информацию о дате и времени и обо всех файлах и подкаталогах
каталога /usr).
Вы можете передать результат выполнения команды другим командным файлам или
устройствам. Попробуйте вывести информацию о дате и времени не на экран, а
в файл с названием vrem с помощью командной строки cd; date > vrem
Проверьте результат выполнения команды, набрав cat vrem
1. Если команда не выполняется.
Что делать в том случае, если Ваша команда не выполняется?
Существует ряд причин, из-за которых это может произойти.
Если после ввода команды, Вы получили сообщение следующего вида:
: not found то это означает, что команда не найдена.
Первое, что нужно сделать в такой ситуации – проверить, правильно ли Вы написали имя команды.
Если Вы убедились, что ввели команду правильно, но она все равно не находится, то, возможно, отсутствует доступ к этой команде. В этом случае стоит воспользоваться переменной PATH, т.к. может случиться, что каталог, в котором содержится Ваша команда, не включен в список каталогов, в которых UNIX ищет команду для запуска.
Для просмотра РАТН напечатайте: echo $PATH.
Результат работы команды показывает, в каких каталогах производится поиск. (Для разделения каталогов в РАТН используется двоеточие.)
Если команда, которую Вы хотите выполнить, содержится в другом каталоге, тогда Вы должны добавить этот каталог в РАТН. Для этого нужно набрать РАТН= и перечислить через двоеточие все каталоги, в которых необходимо производить поиск. Давайте зададим такой путь поиска
РАТН=.:/usr/local/bin:/bin
Не забудьте нажать клавишу ENTER.
Попробуйте теперь ввести команду ls система ответит Вам ls: not found
С другой стороны, Вы можете запустить команду, находящуюся в каталоге, которого нет в РАТН, напечатав полное имя, включая ее местонахождение. Например,
/usr/ bin/ls или
/usr/ bin/ls /usr/ bin
Обратите внимание на то, что, во-первых, если команда находится в двух каталогах, и оба они указаны в РАТН, то UNIX запустит команду из каталога, который стоит первым по порядку в РАТН.
(Например, если команда находится в Х и Y из РАТН =
.:/X:/been:/Y, то запуск будет производиться из X); во-вторых, в отличие от DOS, UNIX не ищет команду в корневом каталоге автоматически.
Давайте все же восстановим путь поиска команд:
РАТН=.:/usr/local/bin:/bin:/usr/bin
Он позволяет осуществлять поиск в корневом каталоге и каталогах
/usr/local/bin, /bin, /usr/bin. Проверьте выполняется ли теперь команда ls.
Еще одна причина невыполнения введенной команды – отсутствие прав на использование данной команды или некоторых ее опций, иначе говоря, прав доступа. В таком случае система Вам выдает сообщение о невозможности выполнить команду. Это могут быть следующие сообщения cannot execut (не может быть запущена), permission denied (обращение запрещено), no permission to … (нет доступа к …). Проверьте это, введя команду date 000000 на экране появится строка
No permission to set time
(нет доступа к установке времени), т.к. правом использования этой команды обладает лишь root-пользватель.
Возможна и другая ситуация. Попробуйте ввести такую команду cp /etc/mtab /etc/m1 она должна скопировать файл mtab каталога /etc в файл m1того же каталога, но Вы получите сообщение cp: m1: Permission denied
(обращение запрещено). Дело в том, что Вы не имеете права копировать файлы в каталог /etc.
2. Использование простейших команд.
Теперь давайте попробуем выполнить несколько общедоступных безобидных
команд – это должно придать Вам чувство уверенности при работе с командами
UNIX.
Для начала попробуйте ввести команду uname, затем используйте опцию -а этой
же команды.
В первом случае (после ввода команды uname) система выдает Вам информацию
об имени системы. Когда же Вы вводите команду uname -а
то на экране появляются следующие сведения: имя системы, сетевой адрес
компьютера, версия системы, тип машины.
Хотите узнать, в какой день недели произошло Ледовое побоище или родились
Ваши родители, а может Вам интересно как выглядел календарь первого месяца
первого года нашей эры?
Воспользуйтесь командой cal (вывод календаря на экран). Задав в качестве
параметров номер месяца и четырехзначный номер года (от 1 до 9999), Вы
сможете увидеть на экране календарь этого месяца. Если номер месяца
опустить, то UNIX выведет на экран календарь этого года. Так в какой день
недели мы встретим 21 век? (Надеюсь, Вы не забыли, что команды и параметры
разделяются пробелами.)
Если Вы забудете указать аргументы: cal
то система напомнит Вам об этом, указав правильный формат команды
Usage: cal [mounth] year
(Употребление: cal [месяц] год).
Если Вы неправильно укажете параметр: cal feb 1
то увидите на экране надпись Bad argument (неверный аргумент)
В заключение попробуйте вывести на экран большими буквами свое имя, либо
что-нибудь другое, но столь же значимое. Для этого используйте команду
banner и не забудьте оставить пробел перед текстом, предназначенным для
вывода на экран banner UNIX
Можно использовать кавычки. Командная строка должна выглядеть примерно так: banner ’ UNIX’
Сравните результаты.
1. Как навести справку о команде.
В системах UNIX – сотни команд. Узнать, как работают все команды, возможно
только в процессе кропотливой, долговременной работы в конкретной системе
UNIX (не забывайте обо всем многообразии версий).
Однако, ознакомившись с наиболее важными командами, Вы сможете использовать
для дальнейшего изучения системы такой мощный аппарат как справочная
система UNIX.
Самая старая и все еще самая важная справочная информация находится в "man
page". Man page (сокращение от manual page - страница руководства) содержит
сведения обо всех командах и отдельных компонентах UNIX. Страницы справки
хороши тем, что, во-первых, в них ясно показаны все опции данной команды,
причем для каждой имеется отдельное описание; во-вторых, справочная система
обновляется всякий раз, когда программисты изменяют команды UNIX.
Для вызова на экран справки о команде используют команду man. Имя команды
или компоненты UNIX, о которой Вы хотите получить справку, печатается после
man. Например, командная строка man date
выводит на экран справку о команде date. Движение по тексту справки
осуществляется с помощью клавиши ENTER и клавиш стрелка-вверх, стрелка-
вниз. Для выхода из справки и возвращения в оболочку UNIX следует нажать
клавишу Q.
Страница справки для команд имеет следующие разделы:
- NAME (имя) содержит имя команды и краткое описание.
- SYNOPSIS (конспект) показывает команду со всеми опциями и параметрами, которые Вы можете использовать.
- DESCRIPTION (описание) описывает, как используется команда, а также каждая опция этой команды.
- OPTIONS (опции) содержит имя опции и ее краткое описание.
- EXAMPLES (примеры) приводит примеры использования команды.
- SEE ALSO (смотрите также) содержит список связанных команд, если они есть.
Кроме справки для команд существует и другая справочная информация.
Например, о форматах файлов, о функциях программирования, о системных
командах (те команды, которые Вы уже знаете, являются пользовательскими
командами общего назначения), об устройствах и т.д.
Вы, наверное, обратили внимание, что в верхних углах страницы-справки стоит
имя компонента, о котором наводиться справка, а рядом в скобках – цифра
(возможно, цифра и буква). Эта цифра показывает, что данный компонент
принадлежит разделу с этим номером. А т.к. в каждом разделе справочной
системы содержатся лишь компоненты одного типа, т.е. либо команды общего
назначения (раздел 1), либо системные команды (раздел 1М), либо устройства
(раздел 7) и т.д., то таким образом номер раздела указывает Вам, какое
место занимает данный компонент в иерархии системы UNIX.
В системе MINIX разделы справки организованы следующим образом:
1. Пользовательские команды.
Команды общего пользования такие как ls, man, who, banner, cal.
2. Системные вызовы.
Программы нижнего уровня, которые напрямую взаимодействуют с ядром.
3. Библиотека программ.
Программы высокого уровня, написанные на языке Си.
4. Файлы устройств.
Описание устройств каталога /dev.
5. Форматы файлов.
Форматы файлов различных утилит и программ.
6. Игры.
7. Разное.
Различные дополнения.
8. Системные утилиты.
Команды системного администратора.
9. Документы.
Более детальное руководство по некоторым программам.
Вас, конечно же, огорчило, что справочная информация дается на английском
языке, но, возможно, образует то, что в начале работы Вам не придется
пользоваться всеми разделами справки – главным образом Вы будете
использовать справочную систему для получения информации о том, как
работает команда.
1. Виртуальные консоли
Системная консоль - это монитор и клавиатура, связанные непосредственно с системой. (Поскольку UNIX многопользовательская система, Вы можете иметь дополнительные терминалы, связанные через последовательные порты с вашей системой, но они не будут консолями).
MINIX, как и некоторые другие версии UNIX, обеспечивает доступ к виртуальным консолям (или VC), которые позволяют войти в систему под несколькими именами в одно время.
Нажмите клавишу F2, удерживая нажатой клавишу Аlt. Вы должны снова увидеть приглашение, содержащее слово login. Это вторая виртуальная консоль.
Вы вошли через первую. Чтобы переключиться обратно на первую VC, нажмите комбинацию клавиш Аlt и F1.
MINIX позволит вам работать с четырьмя VC, используя клавиши F1- F4 в комбинации с клавишей Аlt. Как видите, использование VC может быть очень эффективным - Вы можете работать на нескольких VC одновременно.
(Пока Вы работаете на VC №1, Вы можете переключиться на VC №2 и начать работу над чем-то другим).
Использование виртуальных консолей дает вам представление о многопользовательских возможностях UNIX.
2. Краткая информация о командах, встречающихся в этой практической работе.
ИМЯ banner - печатает аргументы крупными буквами.
СИНТАКСИС banner arg ...
ОПИСАНИЕ banner печатает параметры на stdout, используя матрицы 6x6 пикселей на символ.
ПРИМЕР banner happy birthday
-печатает крупными буквами на экране строку happy birthday
ИМЯ сal -вывод календаря
СИНТАКСИС сal [месяц] год
ОПИСАНИЕ сal печатает календарь месяца или года. Год задается цифрами от 1 до
9999. Обратитe внимание, что год 91 не является синонимом года 1991.
ПРИМЕР сal 3 1992
-печатает календарь марта 1992
ИМЯ cd -изменяет текущий рабочий каталог. СИНТАКСИС cd [имя каталога]
ОПИСАНИЕ cd делает указанный каталог текущим рабочим каталогом; cd осуществляет переход в личный каталог; cd .. осуществляет переход в родительский каталог. ПРИМЕР cd /usr – делает каталог /usr текущим.
ИМЯ cat -объединяет файлы и пишет их в стандартный выходной поток
СИНТАКСИС cat [-u] [имя файла] ...
ОПЦИИ
-u небуферизованный вывод
ОПИСАНИЕ cat объединяет исходные файлы и копирует результат в стандартный выходной поток. Если имя файла не задано или файл с указанным именем не существует, то используется стандартный входной поток. Вывод производится блоками по 512 байтов, если флаг -u не установлен. Если
Вы хотите только скопировать файл, то нужно использовать cp - это быстрее.
ПРИМЕРЫ cat file
-выводит файл file на экран cat file1 file2 | lpr
-объединяет 2 файла file1, file2 и печатает результат
ИМЯ date - печатает или устанавливает дату и время
СИНТАКСИС date [-qsu] [[MMDDYY] hhmm [ss]] [+ формат]
ОПЦИИ
-q читает дату из стандартного входного потока;
-s устанавливает время;
-u печатает дату ПО ГРИНВИЧУ;
-t устанавливает заданное число секунд в текущее время.
ОПИСАНИЕ
С флагом -q или числовыми параметрами, date устанавливает время ПО
ГРИНВИЧУ и дату. MMDDYY задает месяц, день, год; hhmmss задает часы, минуты и секунды. Каждое из шести полей должно содержать точно две цифры. date всегда отображает дату и время в формате, заданном по умолчанию в системе. Флаг -u запрашивает время ПО ГРИНВИЧУ вместо местного времени.
Формат может быть определен дополнительно следующими опциями:
%% символ %
%A название дня
%B название месяца
%D mm/dd/yy
%H Десятичный час на 2 цифры
%I Десятичный модуль часа 12 на 2 цифры
%M Десятичная минута на 2 цифры
%S Десятичные секунды на 2 цифры
%T HH: MM: SS
%U Десятичный номер недели, воскресенье является первым днем недели
%W Десятичный номер недели, понедельник является первым днем недели
ПРИМЕРЫ date
-печатает дату и время date 0221921610
-устанавливает дату 21 февраля, 1992 4:10 пополудни.
ИМЯ ls -выдает информацию о файлах в каталоге. СИНТАКСИС ls [имя файла]
... ОПЦИИ:
-a выводит имена всех файлов и подкаталогов, включая . и .. -l выводит информацию о типе файла (обычный, каталог или специальный), правах на его использование, владельце, размере, дате последнего изменения (или создания) по столбцам.
-t выводит список файлов, отсортированный по датам их последнего изменения (или создания). ОПИСАНИЕ ls выдает список имен файлов и подкаталогов текущего каталога.
ПРИМЕР ls -а /home/larry
- выдает список всех файлов и подкаталогов каталога /home/larry .
ИМЯ lp - копирует файл на принтер
СИНТАКСИС lp [имя файла]...
ОПИСАНИЕ посылаeт заданные файлы на принтер для печати. Если имена файлов опущены, то на печать выводится стандартный входной поток. Файлы печатаются в том порядке, в котором они перечислены.
ПРИМЕР lp myfile youfile
- вызывает печать файлов myfile и youfile
ИМЯ man -выдает страницу Руководства по данной команде или ресурсу.
СИНТАКСИС man ОПИСАНИЕ man выводит на экран страницу
Справочного Руководства по заданной команде или ресурсу (здесь
"ресурс" - это любая системная утилита, которая не является командой, например библиотечная функция). ПРИМЕР man ls -выдает справку по команде ls.
ИМЯ uname - выдача имени используемой UNIX-системы
СИНТАКСИС uname [-a]
ОПИСАНИЕ
Команда uname выдает на стандартный вывод имя используемой UNIX-системы.
Опция -a позволяет получать следующую информацию: имя системы, имя узла
(то есть имя, под которым система известна в коммуникационной сети), наименование версии операционной системы, наименование модификации операционной системы, наименование используемого компьютера. ПРИМЕР
uname -a
- выдает на экран имя системы, в которой Вы работаете, имя узла (то есть
имя, под которым система известна в коммуникационной сети), наименование
версии операционной системы, наименование модификации операционной системы,
наименование используемого компьютера.
ИМЯ
who - выдает информацию о том, кто работает в системе.
СИНТАКСИС who who am i
ОПИСАНИЕ
Команда who в первом столбце указывает имя пользователя, во втором –
системное имя используемого устройства связи, затем – дату и время входа в
систему для каждого из пользователей, работающих в системе UNIX.
Команда who с опцией am i идентифицирует обратившегося к ней пользователя.
ПРИМЕР
who am i
-сообщает имя обратившегося к ней пользователя, системное имя используемого
устройства связи, затем – дату и время входа в систему.
3. Выход из системы.
Для завершения работы в системе наберите команду shutdown
на экране появится надпись
The system will shutdown now (Система будет выключена сейчас)
System Halted (Система остановлена)
hd3a _
Для выхода из системы Вам необходимо ввести команду exit
После этого питание компьютера можно отключить.
В формате MS Word 97
Вряд ли Вы не согласитесь, что хранение информации одна из самых основных
функций компьютера. Но хранить информацию в беспорядке бессмысленно. Ведь
вся ценность сохраненной информации заключается в возможности дальнейшего
ее использования. Поэтому необходима специальная организация хранения
информации, которая позволяет просто и быстро получить доступ к необходимой
именно Вам информации, несмотря на все ее многообразие в памяти компьютера.
Образно говоря, каждую порцию информации нужно "класть" в строго
определенное "место", чтобы потом иметь возможность ее оттуда "взять". В
системе UNIX этим "местом" является файл.
Во многих операционных системах (включая UNIX) существует концепция файла,
по которой его можно рассматривать просто, как набор информации, которому
дано имя. Примерами файлов будут: программа, которая может выполняться,
письмо, полученное по электронной почте, написанная Вами статья.
Существенно то, что все, что хранится на диске, хранится в отдельных
файлах.
Все, с чем работает система UNIX, она воспринимает в виде файла. Файловая
система – это ключевое звено, обеспечивающее успешное применение UNIX.
1. Типы файлов
В UNIX существуют различные виды файлов, включая файлы данных, выполняемые файлы и специальные файлы.
1. Файлы данных
Начнем с файлов данных. Этот тип файлов может содержать самую разнообразную информацию: текст для книги, бухгалтерскую отчетность или траекторию для космического корабля. Файлы данных могут быть созданы текстовым редактором, электронной таблицей, системой управления базами данных или любой другой программой.
Итак, к файлам данных относятся файлы, которые содержат информацию и создаются приложениями и прикладными программами.
2. Форматы хранения данных.
Однако различные пакеты программ хранят данные по-разному, т.е. используют свой особый формат записи символов для сохранения. В результате Вы, открывая файл, созданный такой программой, в программе с другим форматом хранения символов, не можете читать их обычным способом – Вам необходима специальная программа, которая преобразует символы одного формата в другой. А попытка открытия файла, сохраненного в одном формате, в программе, использующей другой формат, приведет к появлению на экране нечитаемого набора символов вместо стройных рядов понятных нам с
Вами букв и цифр.
Файлы данных, содержащие нечитаемые коды, называются двоичными.
Многие программы сохраняют результаты своей работы таким образом. Чтобы увидеть содержание файла, сохраненного в таком формате, наберите cat /bin/echo
Существуют еще и ASCII-файлы (их также называют текстовые файлы). Этот вид файлов не содержит непонятные коды, а содержит символы, которые человек может читать, то есть буквы и цифры.
Аббревиатура ASCII означает Американский стандартный Код для
Информационного обмена.
Примером текстового файла может служить файл .profile. Чтобы увидеть его содержание введите команду cat /.profile
Несмотря на видимое преимущество ASCII – файлов, которое состоит в том, что множество программ могут читать их без преобразования, и это, несомненно, облегчает обмен файлами между людьми, использующими различные программы; этот вид файлов имеет недостаток – формат, в котором записана Ваша информация, не сохраняется, т.е. если Вы используете различные шрифты, делаете отступы и другие операции форматирования, то все эти характеристики будут потеряны, если Вы сохраните информацию как
ASCII-файл.
Многие программы могут хранить данные как в двоичном виде, так и в виде кодов ASCII, следует лишь указать соответствующие параметры. UNIX позволяет сохранять информацию и в том и в другом виде.
3. Выполняемые файлы.
Второй тип файлов – выполняемые. Как и файлы данных, выполняемые файлы могут записываться и в двоичном и в ASCII форматах. К выполняемым файлам относятся файлы, содержащие различные программы и команды. Некоторые маленькие программы, выполняющие одну конкретную задачу, называются командами. Эти маленькие программы имеют и другое название - утилиты. Большинство команд
UNIX хранятся в каталоге /usr/bin. Чтобы просмотреть список этих команд, наберите ls /usr/bin
(большая часть этих файлов сохранена в двоичном формате). Есть особые команды называемые скриптами shell. Скрипт shell – это файл, который содержит вызов одной или нескольких команд. Запуск скрипта shell приводит к выполнению этих команд (такие файлы хранятся в ASCII – формате). Наберите, к примеру, команду whereis cal она определит местонахождение файла cal. На самом деле это маленький скрипт. Вы можете увидеть его содержание, напечатав cat /usr/bin/whereis
Любой файл является выполняемым, если после ввода его имени и нажатия клавиши ENTER, что-нибудь будет выполняться в системе.
4. Файлы устройств
Кроме вышеназванных, существуют также специальные файлы устройств.
Вы помните, что в отличие от DOS, все, с чем работает UNIX, является файлом. Поэтому в UNIX и любое специальное устройство представлено файлом, который используется при обращении к этому устройству (т.е. доступ к устройствам осуществляется путем открытия, чтения и записи в специальный файл устройства).
Например, в UNIX параллельный порт (куда обычно подсоединяется принтер) называется /dev/lp. Это означает что в каталоге dev существует файл lp. И когда Вы посылаете файлу lp информацию, то она не сохраняется на жестком диске, а отправляется на принтер.
Вы редко используете файлы устройств непосредственно, но программы пользуются ими по мере необходимости, не сообщая Вам об этом. В частности, когда Вы работаете с файлом на жестком диске (сохраняете, копируете или читаете данные из файла), программа, которую Вы используете при этом, сама обращается к файлу устройства диска.
Специальные файлы устройств содержатся в каталоге /dev. В UNIX различают символьные (character) и блочные (block) файлы устройств. Символьные файлы устройств используются для небуферизованного обмена данными с устройством, в противоположность этому блочные файлы позволяют производить обмен данными в виде пакетов фиксированной длины - блоков.
Доступ к некоторым устройствам может осуществляться как через символьные, так и через блочные специальные файлы.
Чтобы просмотреть список специальных файлов устройств, введите ls /dev
Блочными файлами представлены, например, жесткие диски, а символьными - терминалы и принтеры. Если Вы введете команду ls -l /dev то в начале каждой строки подробного списка файлов устройств увидите либо символ с - он означает, что файл символьный, либо b, означающий блочный файл. В пятой колонке вместо размера файла указаны два числа, называемые верхним и нижним числами устройства. Верхнее число устройства обозначает его тип, а нижнее - различные экземпляры устройств одного типа.
5. Файлы связей. Создание файлов связей.
1.5.1. Жесткие связи.
UNIX позволяет одному физическому файлу иметь несколько имен в файловой системе. Заметьте, что имя файла является атрибутом файловой системы, а не набора данных на диске, который не имеет имени как такового; а имеет связанные с ним метаданные, содержащие все характеристики файла и позволяющие операционной системе выполнять открытие, прочтение, запись данных, создание или удаление файла. Связь имени файла с его данными называется жесткой связью. Для создания жесткой связи используют команду ln. Например, для создания еще одного имени (second) файла, на который уже указывает имя first используют команду ln first second
Жесткие связи абсолютно равноправны. Доказательством этого служит то, что при использовании команды ls -l атрибуты файлов first и second first будут абсолютно одинаковыми.
Хотя с точки зрения пользователя это два разных файла, изменения внесенные в каждый из этих файлов затронут и другой, ведь имена ссылаются на одни и те же данные файла. Вы можете переместить один из файлов в другой каталог - все равно они будут связаны жесткой связью с данными файла. Легко проверить, что удаление одного из файлов first, second не приведет к удалению самого файла; для этого нужно удалить все связи. Информацию о наличии у файла нескольких имен, связанных с ним жесткими связями можно получить из списка файлов, который выдает команда ls -l:
…
-rw-r--r-- 2 andrei stuff 7245 Jan 17 8:05 second
-rw-r--r-- 2 andrei stuff 7245 Jan 17 8:05 first
…
Во второй колонке списка указывается число жестких связей каждого файла.
Жесткая связь является естественной формой связи имени файла с его данными и не принадлежит к особому типу файла.
Однако давайте все же создадим жесткую связь к файлу . profile
(проверьте его наличие в текущем каталоге командой ls, а в случае отсутствия выберите любой из существующих файлов): ln . profile pr1
Команда ls -l убедит Вас, что Вы создали жесткую связь - в списке файлов текущего каталога две строки (.profile и pr1) отличаются лишь названиями файлов.
Попробуйте использовать опцию -v команды ln. Она выводит на экран сообщение о том, что делает команда ln ln -v .profile pr2
В этом случае результатом работы опции -v будет строка: ln .profile pr2 означающая, что создана связь pr2 к файлу .profile. А вот, если Вы еще раз введете эту же команду (ln -v .profile pr2), сообщение опции -v будет иным: ln .profile pr2: File exists
Оно означает, что файл pr2 уже существует.
В том случае, если Вы указываете в качестве имени файла связи имя уже существующего файла, то связь создана не будет. Убедитесь в этом, набрав следующие команды: ln .kermrc pr2
(Вы хотите создать файл связи pr2 к файлу .kermrc). Но система тут же выдает Вам сообщение ln .kermrc pr2: File exists
(Файл существует). ls -l показывает, что pr2 по-прежнему является жесткой связью к файлу
.profile.
1.5.2. Символические связи.
Особым типом файла является символическая связь. В отличие от жесткой связи, символическая связь ссылается не на данные файла, а на его имя.
Данные файла, являющегося символической связью, содержат только имя целевого файла.
Команда ln -s создает символическую ссылку на указанный файл.
Например, команда ln -s first symsecond создает для файла first файл символической связи symsecond. Сравнить созданные файлы поможет команда ls -l
…
-rw- r- - r - - 2 andrei stuff 7245 Jan 17 8:05 second
-rw- r- - r - - 2 andrei stuff 7245 Jan 17 8:05 first lrwxrwxrwx 1 andrei stuff 6 Jan 17 8:05 symsecond /first
…
Как Вы видите, файл symsecond (символьная связь) существенно отличается от файла second (жесткая связь). Во-первых, фактическое содержание файла symsecond отнюдь не то же, что и у файла first или second, об этом говорит размер файла байт - ровно столько, сколько занимает имя файла, на который символическая связь ссылается. Во- вторых, файл symsecond не имеет никаких ограничений на доступ - очевидно права доступа к файлу символической связи определяются правами доступа к файлу, на который он ссылается (в нашем примере правами файла first). Также строка файла символьной связи содержит указатель на тип файла (l) в начале строки и имя файла, на который данный файл ссылается. Кроме всего прочего система работает с файлами символьных связей не как с обычными файлами. Например, при выводе на экран содержимого файла symsecond появятся данные файла first.
У команды ln в системе MINIX к сожалению нет опции -s, создающей символическую связь, но зато есть опция -r, которая позволяет создавать жесткие связи к каталогу и всем его файлам и подкаталогам.
Об этой опции мы поговорим позже, когда научимся создавать каталоги.
2. Получение информации о файлах.
1. Как узнать тип файла.
UNIX позволяет выяснить тип файла командой file. Она сообщит Вам, является
ли файл выполняемым (executable), файлом ASCII, файлом данных и т.д. Однако
обратите внимание, что Вы находитесь в корневом каталоге, и команда file
требует указания полного имени файла. Если Вы введете неполное имя файла
(без указания пути к нему), то команда выпол