Общие положения

5.8.1. Общие положения

 

Под перенаправлением ввода-вывода понимают замену источника данных при вводе информации в программу или адресата выводимых результатов работы программы без ее модификации. Очевидно, источниками данных и адресатами результатов являются файлы, а также посимвольные устройства

Необходимое условие возможности перенаправления ввода-вывода состоит в обеспечении неза­висимости программ от файлов и устройств. Иными словами, спецификаций файлов и имена устройств не должны в явном виде фигурировать в программе. Действительно, если, скажем, файл указан в ней непосредственно, то для замены файла без модификации программы не обойтись.

DOS позволяет сделать программы в рассмотренном смысле независимыми, обеспечивая:

1) доступ к командной строке запуска программы с целью извлечения аргументов, в качестве которых можно задать файлы (устройства);

2) возможность использования в программах так называемого стандартного УВВ (в роли которого, как правило, выступает CON) без его явного указания;

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

С целью организации перенаправления ввода-вывода команд и программ система поддерживает:

1) замену файлов и устройств как аргументов в командной строке, а также единообразную трактовку файлов и посимвольных устройств;

2) смену стандартного УВВ своими командами, такими, как MODE, CITY и COMMAND;

3) замену стандартного УВВ в командной строке;

4) направление стандартного вывода одной программы (команды) на стандартный ввод другой программы (команды), т.е. организацию конвейеров.

Все перечисленные способы, за исключением первого, применимы только тогда, когда про­грамма (команда DOS) использует стандартный ввод-вывод. Применимость первого способа следует из его формулировки и распространяется на все файлы (устройства).

Вопросы замены файлов и устройств в командной строке и единообразной их трактовки уже затрагивались нами ранее. Возможности этого наиболее ярко могут быть проиллюстрированы на примере команды COPY:

COPY MYF1LE.TXT TEXT1.TXT — скопировать содержимое файла MYFILE.TXT в файл TEXT1.TXT;

COPY MYHLE.TXT TEXT2.TXT — то же, но в качестве адресата используется файл TEXT2.TXT;

COPY MYFILE.TXT PRN — отпечатать содержимое файла MYHLE.TXT на принтере;

COPY MYFILE.TXT NUL — скопировать содержимое файла MYFILE.TXT на фиктивное устройство с целью проверки файла на считываемость;

COPY CON MYFILE.TXT — ввести информацию в файл MYFILE.TXT с клавиатуры.

Краткий отчет о своей работе команда COPY выдает на стандартное УВВ. Концепция стандартного УВВ сводится к тому, что в системе зарегистрировано виртуальное УВВ, к которому обращаются команды (программы) и которое связывается с реальным УВВ.

Использование стандартного УВВ в программах имеет то преимущество, что программы пол­учаются независимыми от устройства, причем имя этого устройства передавать в них в качестве аргумента не нужно.

Смена стандартного УВВ командами DOS обеспечивает перенаправление специфицированного для него ввода-вывода у всех запускаемых вслед за этим программ и выдаваемых команд.

Пусть запускаемая по process программа или выполняемая по process команда использует стандартное УВВ. Тогда замену стандартного УВВ в командной строке можно осуществить путем указания в ней одной из следующих конструкций:

process   > file   — перенаправляет стандартный вывод из process в файл Ще. Если файл отсутствует, то он создается, а если существует — то заменяется;

process > > file — добавляет стандартный вывод из process в конец существующего файла file. Если файл отсутствует, то он создается и тогда > >file эквивалентно >file;

process   < file   — перенаправляет стандартный ввод в process на существующий файл file.

Перечисленные средства могут комбинироваться в одной командной строке.

Примеры:

DIR > FILELIST.TXT — вывести содержимое рабочего каталога не на экран дисплея, а в файл FILELIST.TXT;

TYPE MYFILE.TXT >PRN — распечатать содержимое файла MYFILE.TXT на принтере вместо отображения на экране дисплея;

BACKUP С:\*.* A: /S >PRN — выполнить резервирование файловой структуры диска в приводе С на дискетах в приводе А и отпечатать отчет о проделанной работе на принтере;

COPY MYHLE.TXT ТЕХГХТ >NUL — скопировать содержимое файла, но не выдавать отчет;

PROG < INPUT.TXT > OUTPUT.TXT — обеспечить ввод исходных данных в программу PROG из файла INPUT.TXT, а вывод результатов ее работы — в файл OUTPUT.TXT.

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

Вот почему при перенаправлении вывода команды DIR без аргумента (т.е. для рабочего каталога) в среде старых версий DOS Вы можете увидеть два новых файла, имена которых составлены из букв и цифр. Это именно те временные файлы. Один из способов избавления от их фиксации в выводе команды DIR состоит в смене текущего привода и задании дисковода в команде DIR явно.

Вместе со средствами перенаправления ввода-вывода полезной оказывается команда ECHO, используемая главным образом в командных файлах. Тем не менее ее можно вводить и с клавиатуры. Один из вариантов ее задания обеспечивает посылку на стандартное УВВ (на экран дисплея) специфицированной в качестве аргумента строки. Это позволяет выводить текст и управляющие символы на принтер или другое устройство, например:

ECHO ТЕКСТ >PRN — отпечатать строку ТЕКСТ на принтере;

ECHO Ctrl-L► >PRN — послать на принтер управляющий символ, обеспечивающий прогон бумаги до начала следующей страницы.

Направление стандартного вывода одной программы (команды) на вход другой обеспечивается за счет использования конвейеров. Конвейером в этом контексте называется последовательность программ (команд), осуществляющих поэтапную обработку информационного потока. Конвейер синтаксически оформляется как

processl |process2 | ... processN

и представляет собой по сути единый, но сложный процесс. Средства конвейеризации программ реализуют один из методов их комплексирования в среде DOS.

Пример:

ECHO Y|DEL *.* — обеспечить автоматический ответ Y (для «Да») на запрос «Are yousure?» при удалении всех элементов каталога.

Конвейеризация может сочетаться в одной командной строке с другими средствами перенап­равления ввода-вывода.

Главным образом для использования в конвейерах DOS содержит три команды-фильтра. Фильтром называется программа, вводящая информационный поток, преобразующая его по определенному алгоритму и выводящая результат своей работы. К фильтрам DOS относятся следующие команды:

FIND    — осуществляет поиск заданной последовательности символов в текстовых файлах;

MORE — обеспечивает постраничное отображение содержимого текстового файла;

SORT   — сортирует строки текстового файла в лексикографическом порядке.

Заметим, что DOS обеспечивает, хотя и весьма ограниченные, возможности подмены поблоч­ных устройств, даже если программа от них зависима (см. описание команд ASSIGN и SUBST).