Вся информация, располагаемая на устройствах внешней памяти вычислительных систем VAX, хранится в виде совокупностей данных, которые называются файлами. Файлы могут содержать информацию различного вида, объём информации в файле также может быть различен. Файлы могут быть очень маленькими или очень большими. В операционной системе VAX/VMS единицей измерения файла является блок из 512 символов (байтов). Каждый пользователь вычислительной системы имеет ограничение на число блоков, которые могут занимать его файлы. Информация в файлах бывает двух видов: символьные данные и несимвольные данные. Первые могут быть распечатаны и выглядят, как обычный печатный текст. Несимвольные данные предназначены для чтения только ЭВМ, а попытка их распечатать даст абсолютно бессмысленную распечатку и может вызвать "зависание" терминала вычислительной системы.
В каталоге пользователя файл может быть найден по своему наименованию, которое состоит из трёх частей: имя файла (подходящее), тип файла и номер версии. Наименование файла может выглядеть следующим образом:
DATA.TXT;5
Здесь DATA - имя файла; TXT - тип файла; 5 - номер версии файла.
Отметим, что символы '.' и ';' используются для разделения составных частей наименования файла. Именем является некоторое сочетание символов, которое вы (или тот, кто создал файл) присваивает файлу, чтобы его можно было однозначно идентифицировать. Имена файлов представляют собой строки от 1 до 39 символов, состоящие из букв или цифр. Примерами возможных имён файлов являются
X 132 R2D2 XYZ123AAA
Тип файла обычно состоит из трёхбуквенного кода, обозначающего предположительное применение файла и используемого операционной системой[1]. В случаях, когда файл используется в предполагаемом контексте, указание типа файла не требуется. Ниже даны примеры типов файла.
Тип файла |
Предполагаемое использование |
---|---|
.MAR |
Программа на языке ассемблера MACRO |
.OBJ |
Объектный файл, получаемый при компиляции |
.EXE |
Файл выполняемого образа |
.LIS |
Файл листинга программы |
.PAS |
Программа на языке Паскаль |
.FOR |
Программа на языке Фортран |
Номер версии файла назначается таким образом, что можно создать новую версию файла, не уничтожая при этом старой. Обычно пользователь явно не указывает номер версии файла. Отсутствие в наименовании файла номера версии обозначает, что указывается последняя версия файла, и если создаётся новая версия файла, то ей будет присвоен номер на единицу больше, чем номер созданной до этого последней версии файла.
Чтобы избежать неприятностей, которые могли бы возникнуть, если несколько пользователей случайно дали бы одно и то же имя двум разным файлам, наименования файлов заносятся в каталоги. Каждый пользователь имеет свой собственный каталог, назначенный ему администратором системы. Каталог связывается с именем регистрации пользователя в системе. Имена каталогов могут иметь длину до 39 символов. Имя каталога заключается в квадратные скобки, например:
[SMITH]
Пользователи могут (и это поощряется) создавать подкаталоги. Подкаталоги имеют свои имена, которые в полной спецификации указываются как второе (или третье, или четвёртое и т.д.) имя, отделённое точкой. Например, в спецификации каталога
[SMITH.HOMEWORK.CIS72]
указан подкаталог CIS72, находящийся в подкаталоге HOMEWORK каталога SMITH. Для того чтобы дать полную спецификацию файла, наряду с наименованием файла необходимо указать имя каталога[2]. Примером такой полной спецификации файла является
[SMIТН.HOMEWORK.CIS72]DATA.TXT;5
Чтобы не вводить полностью такую длинную строку символов, в ОС VAX/VMS разрешается определение каталога по умолчанию. В этом случае до тех пор, пока не будет задано конкретное имя другого каталога, предполагается использование имени каталога по умолчанию. Таким образом, если каталогом по умолчанию является [SMITH.HOMEWORK.CIS72], то спецификацию файла в предыдущем примере можно существенно сократить:
DATA.TXT
Номер версии файла опущен, так как предполагается, что версия 5 файла является самой последней.
Как уже говорилось, если файл является символьным, то его содержимое может быть выведено на терминал или на печатающее устройство. Для вывода содержимого файла на терминал используется команда операционной системы
$ ТУРЕ имя_файла
Отметим, что знак доллара печатает операционная система, всё остальное вводит пользователь. Ввод всех команд должен завершаться нажатием на клавишу RETURN. Например, если надо посмотреть, что содержится в файле TEXT.TXT, то следует набрать команду
$ TYPE TEXT.TXT
После ввода команды на экране терминала начнёт появляться информация. Если не уметь читать очень быстро, то весьма затруднительно прочитать информацию с той скоростью, с которой выводит её ЭВМ. Чтобы приостановить вывод информации на терминал, необходимо нажать комбинацию клавиш CTRL/S. Для этого надо нажать клавишу с маркировкой CONTROL или CTRL (обычно на клавиатуре она расположена в левой нижней части) и одновременно с ней нажать на клавишу с маркировкой S. Вывод на терминал будет остановлен до тех пор, пока не будет нажата комбинация клавиш CTRL/Q - сигнал, разрешающий возобновить вывод.
Если желательно получить распечатку содержимого файла на бумаге, то вместо команды TYPE используется команда PRINT. По этой команде содержимое файла будет распечатано на системном устройстве печати. Распечатке будет предшествовать титульный лист, где указываются имя пользователя и спецификация распечатываемого файла.
Команда DIRECTORY (или сокращённо DIR) используется для просмотра имён и версий всех файлов, находящихся в каталоге пользователя. Так же как и для команды TYPE или любой команды либо программы, осуществляющих вывод на экран терминала, для остановки и возобновления вывода можно применять управляющие сигналы CTRL/S и CTRL/Q. Содержимое каталогов может выводиться в различном виде, для чего существует множество вариантов команды DIRECTORY. В списке ниже приведены некоторые из вариантов:
Команда |
Результат действия |
---|---|
DIRECTORY/PRINT |
Содержимое каталога выводится на устройство печати |
DIRECTORY/SINCE=TODAY |
Выводится список созданных за текущий день файлов |
DIRECTORY/SINCE=5-JUL-1985 |
Выводится список файлов, созданных за период с 5-Июля-1985 по текущий день. (Примечание: год должен указываться четырьмя цифрами) |
DIRECTORY/SINCE=10:30 |
Выводится список файлов, созданных за текущий день, начиная с 10:30 утра. (Примечание: на ЭВМ VAX применяется 24-часовой формат времени.) |
DIRECTORY [SMITH.HOMEWORK.CIS72] |
Выводится содержимое каталога [SMITH.HOMEWORK.CIS72] |
DIRECTORY TEXT |
Выводится список файлов, имеющих имя TEXT |
DIRECTORY .TXT |
Выводится список файлов, имеющих тип .TXT |
Другие возможные варианты показаны в разд. Г.8. Заметим, что мнемоника большинства команд может быть сокращена до трёх или четырёх букв, например DIR/PRI. Если мнемоника сокращена больше, чем это допускается, то вычислительная система VAX сообщит, что не может однозначно определить, какая команда была введена.
Команда COPY позволяет получить копию файла. С помощью этой команды можно было бы образовать в текущем каталоге файл DATA.TXT, являющийся копией файла TEXT.TXT, находящегося в каталоге [SMITH]. Команда COPY полезна не только для получения копии файла из другого каталога. Её можно применить и просто для создания рабочей копии файла текущего каталога. По команде
$ COPY FILE1 FILE2
выполняется копирование содержимого файла FILE1 в файл FILE2. Например:
$ COPY [SMIТН]TEXT.TXT DATA.TXT
В начале сеанса работы текущим каталогом пользователя является каталог по умолчанию, устанавливаемый для пользователя администратором системы. Если пользователь имеет много файлов, то в этом каталоге лучше хранить по возможности как можно меньше файлов. Это означает, что для каждой разработки пользователя следует создать свой подкаталог, а может быть, и подкаталоги в этих подкаталогах для отдельных этапов разработки. Предположим, что в начале сеанса работы каталогом по умолчанию является [SMITH]. В каталоге [SMITH] могли бы находиться следующие подкаталоги:
[SMIТН.HOMEWORK] [SMITH.PROJECT] [SMITH.LISTINGS] [SMITH.DATA]
Для того чтобы сделать один из этих подкаталогов текущим, надо ввести команду
$ SET DEFAULT [SMITH.HOMEWORK]
Чтобы убедиться в том, что выбранный подкаталог стал теперь текущим, полезно воспользоваться командой DIRECTORY.
Обычно хорошим правилом является создание подкаталогов для каждой из разработок пользователя. В этом случае файлы, созданные в ходе одной разработки, не будут смешиваться с файлами другой разработки. При необходимости всегда можно использовать команду COPY для копирования файлов из одного каталога в другой. Например, для создания подкаталога с именем [SMITH.HOMEWORK] применяется команда
$ CREATE/DIRECTORY [SMIТН.HOMEWORK]
Копирование большого числа файлов могло бы потребовать значительных усилий для ввода информации. Предположим, что надо скопировать 100 файлов. В данном случае ввод всех команд копирования занял бы продолжительное время. Для выполнения операций над группами файлов (например, копирование всех файлов по одной команде) применяются универсальные символы-заменители. Способ использования символа-заменителя при групповом копировании файлов заключается в том, что он служит для представления любой строки символов. В качестве универсального символа-заменителя применяется символ звёздочка *. Так, например, сочетание символов V* обозначает любое имя, начинающееся с буквы V. Сам по себе символ * обозначает любое имя вообще. Поэтому скопировать все последние версии всех файлов из одного подкаталога в другой можно следующей командой:
$ COPY [SMITH.DATA]*.* [SMITH.PROJECT]*.*
В наименовании файла универсальный символ-заменитель может присутствовать в полях имени, типа и номера версии.
Кроме команды COPY универсальный символ-заменитель можно использовать в командах TYPE, PRINT и DIRECTORY. В качестве примера рассмотрим следующие определения для групповых операций.
Обозначение |
Значение |
---|---|
*.OBJ |
Последние версии файлов с любым именем, имеющие тип .OBJ, т.е. SAMPLE.OBJ, PROG.OBJ и т.д. |
PROG.* |
Последние версии всех файлов с именем PROG, т.е. PROG.MAR, PROG.OBJ и т.д. |
P*.MAR |
Все программы на языке ассемблера, имя которых начинается с буквы Р |
SAMPLE.MAR;* |
Все версии файла SAMPLE.MAR |
Возможно, хотя это несколько сложнее, применять универсальные символы-заменители в спецификации каталогов. В спецификации каталогов могут присутствовать следующие символы-заменители:
Символ-заменитель |
Значение |
---|---|
* |
Любая строка символов |
. в начале спецификации |
Текущий каталог |
- в начале спецификации |
Каталог на следующем, более высоком уровне |
... |
Все последовательности имён каталогов |
Рассмотрим действие этих символов-заменителей на конкретных примерах. Приведённые ниже команды DIRECTORY выполнялись в то время, когда текущим каталогом был [SMITH.HOMEWORK].
Команда |
Содержимое выведенных списков |
---|---|
DIRECTORY [SMITH.*] |
Все файлы из всех подкаталогов каталога [SMITH] |
DIRECTORY [.CIS72] |
Все файлы из каталога [SMITH.HOMEWORK.CIS72] |
DIRECTORY [-PROJECT] |
Все файлы из каталога [SMITH.PROJECT] |
DIRECTORY [SMITH...] |
Все файлы из каталога [SMITH] и всех подкаталогов каталога [SMITH], а также всех подкаталогов подкаталогов и т.д. |
В результате повторяющегося редактирования файлов создаются новые версии файлов. Избыточное число версий файлов может явиться помехой для дальнейшей работы. Кроме того, некоторые файлы устаревают и становятся ненужными. Если сохранять все версии файлов и никогда не удалять ненужные файлы, то очень скоро можно будет исчерпать выделяемое пользователю дисковое пространство. Для того чтобы привести в порядок содержимое каталогов и избавиться от ненужных файлов, имеются две команды PURGE и DELETE. Команда PURGE является простейшей из этих команд и служит для уничтожения всех версий файла, за исключением последней. Ниже приводится несколько примеров использования этой команды.
Команда |
Результат действия |
---|---|
PURGE |
Удаляются старые версии всех файлов текущего каталога |
PURGE NAME.TXT |
Удаляются старые версии файла NAME.TXT в текущем каталоге |
PURGE *.OBJ |
Удаляются старые версии всех файлов текущего каталога, имеющих тип .OBJ |
Иногда можно сохранять несколько версий файла на случай, если будут испорчены последние версии файла. Это может быть выполнено с помощью команды
$ PURGE/KEEP=5
По этой команде в текущем каталоге будут удаляться все версии всех файлов, кроме пяти последних версий. Администратор системы может периодически давать команду PURGE/KEEP=5 или такую же команду, но с другим числом версий для всех файлов, находящихся в системе, чтобы привести в порядок все каталоги системы.
Вторая команда - DELETE - применяется для удаления определённых файлов по их наименованию. В команде в явном виде должны присутствовать имя, тип и номер версии файла, хотя при этом допускается использование универсальных символов-заменителей. Ниже даны примеры с командой DELETE.
Команда |
Результат действия |
---|---|
DELETE NAME.TXT;17 |
Удаляется версия 17 файла NAME.TXT. Эта команда полезна при удалении последней версии файла, если версия оказалась испорчена |
DELETE *.OBJ;* |
Удаляются все файлы, имеющие тип .OBJ |
DELETE *.*;* |
Удаляются все файлы текущего каталога - будьте осторожны!!! |
DELETE/CONFIRM *.*;* |
Удаляются все файлы текущего каталога, но система будет запрашивать подтверждение на удаление каждого файла |
DELETE NAME.TXT;0 |
Удаляется последняя версия файла NAME.TXT. Примечание: номер версии 0 обозначает последнюю версию файла |
DELETE NAME.TXT;-3 |
Удаляется версия файла NAME.TXT, имеющая на 3 меньший номер, чем последняя версия этого файла |
Теперь мы подошли к задаче удаления каталога. Предположим, что надо удалить каталог [SMITH.PROJECT.TEXT]. Как от него избавиться раз и навсегда? Для этого должна быть введена такая последовательность команд:
Команда |
Результат действия |
---|---|
SET DEFAULT [SMITH.PROJECT.TEXT] |
Удаляемый каталог становится текущим |
DELETE *.*;* |
Удаляются все файлы в каталоге |
SET DEFAULT [-] |
Текущим каталогом становится каталог предыдущего уровня [SMITH.PROJECT] |
SET PROTECT=(OWNER:D)TEXT.DIR |
Снимается защита, что позволяет удалить файл каталога |
DELETE TEXT.DIR;* |
Удаляется каталог |
< НАЗАД | ОГЛАВЛЕНИЕ | ВПЕРЁД > |
[1] В старых версиях ОС VAX/VMS длина имени файла не могла быть более 9 символов, а длина типа файла - более 3 символов. Однако, начиная с версии 4.0, в ОС VAX/VMS имя файла и тип файла могут иметь длину до 39 символов.
[2] На самом деле в полную спецификацию файла входят ещё имя узла в сети ЭВМ и имя устройства внешней памяти, на котором находится каталог. Но обычно непривилегированному пользователю не нужно указывать эти атрибуты, так как вместе с именем каталога пользователя они определяются по умолчанию при регистрации пользователя в системе. - Прим. ред.