Документ взят из кэша поисковой машины. Адрес оригинального документа : http://www.sao.ru/precise/Laboratory/Publications/2000/MIDAS/Lect_N2/node9.html
Дата изменения: Mon Jan 31 12:20:36 2000
Дата индексирования: Sat Sep 11 22:09:15 2010
Кодировка: koi8-r

Поисковые слова: глобулы
Перенаправление ввода-вывода next up previous
Next: Проблема отцов и детей Up: MIDAS и операционная система Previous: MIDAS и операционная система

Перенаправление ввода-вывода

С версии 94NOV в MIDAS начало работать перенаправление ввода-вывода. Это обозначает, что любая информация, выдаваемая на терминал программой, может быть перенаправлена в файл или подана на вход другой программе.

Например, если Вы хотите скопировать содержание MIDAS-таблицы в ASCII-файл, надо выполнить две команды:
> ASSIGN/PRINT file mytable.dat -- назначение вывода в файл.
> PRINT/TABLE mytable -- вывод.
Используя возможность переназначения вывода, можно теперь написать всего одну команду:
> WRITE/TABLE mytable >mytable.dat -- эквивалентна по результату двум вышеописанным. Файл `mytable.dat' будет создан в текущей директории.
> WRITE/TABLE mytable >>mytable.dat -- дописать в уже существующий файл.

ВНИМАНИЕ :Между перенаправлением ввода-вывода для UNIX и MIDAS существует разница. Если shell в UNIX строку типа cat file > aaaa поймет правильно при любом количестве пробелов (например, cat file>aaaa), то в MIDAS Вы ДОЛЖНЫ писать знаки ">" "<" всегда после пробела, а имя файла пробелом не отделять.

Если Вы хотите записать данные в файл и одновременно вывести на терминал, то это делается вот так:
> WRITE/TABLE mytable >mytable.dat+terminal

Если Вы не хотите вывода на терминал вообще, то существует специальная форма перенаправления вывода для этого случая (нуль-устройство):
> WRITE/TABLE mytable >Null

Ввод данных со стандартного входа имеет гораздо меньше приложений и туманен для MIDAS, с моей точки зрения (скажем, я до сих пор не понимаю, какой параметр при этом работает, ведь в MIDAS-процедуре их может быть 8). Однако вот, например, полезное ему применение:
$ls a*.bdf >mydata.dat -- запись всех имен изображений, начинающихся с "a", в файл.
> READ/DESCR <mydata.dat -- чтение из этого файла имен и выдача содержания стандартных дескрипторов на терминал. Например, то же действие при помощи стандартных MIDAS-команд выглядит вот так: > CREATE/ICAT OBJ a*.bdf -- создание каталога изображений;
> EXECUTE/COMMAND READ/DESCR OBJ.cat -- выдача стандартных дескрипторов для всех изображений из каталога.

И последний шик для ввода-вывода это, конечно же, использование программного канала ("трубы" на UNIX жаргоне). Это обозначает, что вывод MIDAS-программы можно перенаправить на вход UNIX-программе. И наоборот.



Пример :
> READ/DESCRIPTOR mama | $grep CUNIT -- выдача содержания стандартных дескрипторов изображения mama.bdf и поиск среди них содержания нужного дескриптора CUNIT.
> $pwd | WRITE/KEYWORD INPUTC -- запись имени текущей директории, в которой ведется обработка, в переменную INPUTC.


Замечание :Замечу, что при использовании программного канала между несколькими UNIX-командами знак $ ставится только один раз -- в начале. Таким образом, команда > $ls | $grep it -- неправильная, а команда > $ls | grep it -- правильная.



Willy Kniazev
2000-01-31